Intel OpenCAS缓存加速方案

2022-08-17 11:16:34 浏览数 (1)

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配置说明
代码语言:javascript复制
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模式提高了读写性能,但是会有数据丢失的风险
代码语言:javascript复制
casadm -S -i 1 -d /dev/sdc -c wb
casadm -A -i 1 -d /dev/sdb  //匹配/dev/sdb到cache
  • 在该模式下,缓存软件将数据写入闪存设备,然后顺序的写入到核心设备中,这种模式 100% 保证核心设备中的数据和缓存中的数据一致,同时可以共享给其他的服务读取,类型可以加速阅读
  • 手动配置 write-through 模式
代码语言:javascript复制
casadm -S -i 1 -d /dev/sdc  //创建id=1的cache
casadm -A -i 1 -d /dev/sdb  //匹配/dev/sdb到cache
  • 手动配置回写模式
  • 手动配置Write-around模式
代码语言:javascript复制
   casadm -S -i 1 -d /dev/sdc -c wa
   casadm -S -i 1 -d /dev/sdc -c pt
  • 手动配置只写模式
代码语言:javascript复制
 casadm -S -i 1 -d /dev/sdc -c wo

0 人点赞