Open Cas 架构概览
- 数据从HDD盘读取然后拷贝到open cas 的cache中,后续数据读取都是从内存读取,提高读写效率。
- 在write-through模式,所有的数据都是同步刷新到open cas的ssd和后端hdd硬盘中。
- 在write-back模式中,所有数据同步写入open cas的ssd中,然后异步刷新到HDD中。
- open cas 缓存满后,采用open cas的淘汰算法,用最新写入的数据淘汰以前旧数据,已达到oepn cas始终可以缓存数据。
系统组件以来
- sed
- make
- gcc
- kernel-devel
- kernel-headers
- python3
- lsblk
- argparse (python module)
安装linux open cas
1.open cas 由kernel modules和cli工具组成
2.为了获取最佳性能,强烈推荐在SSD device采用noop的IO调度策略
3.具体安装步骤:
下载open cas linux source
代码语言:javascript复制git clone https://github.com/Open-CAS/open-cas-linux
获取子模块
代码语言:javascript复制cd open-cas-linux
git submodule update –init
配置和安装
代码语言:javascript复制./configure
make
make install
检查和验证
代码语言:javascript复制cas_disk.ko //open cas 磁盘内核模块
cas_cache.ko //open cas 缓存内核模块
casadm //open cas 管理员工具
casadm -V //install 检验
open cas配置
配置文件在utils/opencas.conf中,包括cache的配置和core devices的配置
1.cache id:everycore device的Cache id,视频,取值范围0~4095 2.core id:everycore devices的id 3.path:core device的路径 //everycache和core devices执行已经存储在hdd和ssd,核心设备应该引用wwn的标识,缓存设备必须顺序数据。
- caches配置说明
1.cache id:执行设备的启动实例ID,整形取值范围在1~16384
2.path:指向ssd的磁盘路径
3.desired mode:预期模式,一共有5中模式,分别是write-through/write-back/write-only/pass-through
4.extra fields:用户自定义IO配置
4.1 ioclass_file:允许用户加载自定义IO策略
4.2 cleaning_policy :允许用户缓存清理的策略,包括了acp/alru/nop
4.3 promotion_policy :允许用户使用缓存的推进策略,包括了always/nhit
- 核心设备配置说明
配置样例
代码语言:javascript复制## Caches configuration section
[caches]
## Cache ID Cache device Cache mode Extra fields (optional)
1 /dev/disk/by-id/nvme-INTEL_SSD WT ioclass_file=/etc/opencas/ioclass-config.csv
## Core devices configuration
[cores]
## Cache ID Core ID Core device
1 1 /dev/disk/by-id/wwn-0x50014ee0aed22393
1 2 /dev/disk/by-id/wwn-0x50014ee0042769ef
1 3 /dev/disk/by-id/wwn-0x50014ee00429bf94
1 4 /dev/disk/by-id/wwn-0x50014ee0aed45a6d
1 5 /dev/disk/by-id/wwn-0x50014ee6b11be556
1 6 /dev/disk/by-id/wwn-0x50014ee0aed229a4
1 7 /dev/disk/by-id/wwn-0x50014ee004276c68
cas管理工具
- 在write-only模式下,缓存系统先把数据写入到cache中,然后通知应用端写完成。后续周期性的同步写到core device中,当有新的读请求。只有当之前写入数据在cache device中,读请求会绕开cache software,直接读取caching device的数据。该模式仅仅提高写性能,但是会有数据丢失风险。
- 手动配置pass-through模式
- 在该模式下, caching software首先把数据先写入到cache中,然后通知用户写完毕了,最后周期性的把数据写入到core device中,write-back模式提高了读写性能,但是会有数据丢失的风险
casadm -S -i 1 -d /dev/sdc -c wb
casadm -A -i 1 -d /dev/sdb //匹配/dev/sdb到cache
- 在该模式下,缓存软件将数据写入闪存设备,然后顺序的写入到核心设备中,这种模式 100% 保证核心设备中的数据和缓存中的数据一致,同时可以共享给其他的服务读取,类型可以加速阅读
- 手动配置 write-through 模式
casadm -S -i 1 -d /dev/sdc //创建id=1的cache
casadm -A -i 1 -d /dev/sdb //匹配/dev/sdb到cache
- 手动配置回写模式
- 手动配置Write-around模式
casadm -S -i 1 -d /dev/sdc -c wa
casadm -S -i 1 -d /dev/sdc -c pt
- 手动配置只写模式
casadm -S -i 1 -d /dev/sdc -c wo