enhanceio基本用法

安装enhanceio

下载地址:

https://github.com/stec-inc/EnhanceIO/archive/master.zip

解压到任意目录下进入根目录:

1、安装eio_cli(操作命令行)

chmod 777 CLI/eio_cli

cp CLI/eio_cli /sbin/

 

2、安装man 文档页面

cp CLI/eio_cli.8 /usr/share/man/man8/

 

3、安装驱动

cd Driver/enhanceio/

make && make install

 

4、第一次手动加载驱动

modprobe enhanceio_fifo

modprobe enhanceio_lru

modprobe enhanceio

 

配置

使用120G的 ssd /dev/sdb1,做为sdc1的缓存,块大小为4KB, 使用write back模式

[root@zhongbo enhanceio]# eio_cli create -d/dev/sdc1 -s /dev/sdb1 -m wb -c cachedisk

Cache Name       : cachedisk

Source Device    : /dev/sdc1

SSD Device       : /dev/sdb1

Policy           : lru

Mode             : Write Back

Block Size       : 4096

Associativity    : 256

ENV{ID_SERIAL}=="WDC_WD20EARX-00PASB0_WD-WCAZAD794525",ATTR{partition}=="1"

ENV{ID_SERIAL}=="ST31000524NS_9WK41H1G",ATTR{partition}=="1"

Cache created successfully

查看状态

[root@zhongbo enhanceio]# eio_cli info

Cache Name       : cachedisk

Source Device    : /dev/sdc1

SSD Device       : /dev/sdb1

Policy           : lru

Mode             : Write Back

Block Size       : 4096

Associativity    : 256

State            : normal

 

For more information look at /proc/enhanceio/<cache_name>/config

挂载

mount /dev/sdc1 /test -t xfs

 

删除

eio_cli edit -c cachedisk -m ro

eio_cli delete -c cachedisk


enhanceio与flashcache的差别

1、采用了新的回写引擎,IO进行了优化,高负载的时候会停止回写,后台定期清理。
2、透明缓存,enhanceIO不需要设备映射。这能够在原始设备在创建或者使用的时候删除缓存,即使mount分区了也可以做操作
还支持给整个磁盘做缓存,而不用担心做了分区,以前的方式分区就需要把ssd分区,然后给每个分区做缓存
3、大IO的支持,不会导致卷的IO请求被分成缓存片。SSD缓存为4KB大小,64K的磁盘的请求,不会分成16个独立的请求。这个是优于flashcache 的
4、内存占用小,每个cacheblock只需要4bytes的数据(flashcache需要16bytes),典型的SSD为4KB块大小,这个内存占用只需要(1/1000)
对于一个400G的内存,只需要400M的内存来保存所以元数据
5、典型的缓存的大小是源磁盘大小的10%-20%,EnhanceIO的组相联性质迫使缓存块替换。
主要的采用的是随机替换(几乎是轮训)策略,不需要附加的内存,很少的cpu消耗,另外的内核模块是FIFO和LRU,FIFO是默认的替换策略,因为比LRU占用内存更少。模块之间独立的(测试发现默认为LRU)
6、EnhanceIO写入所有元数据和数据块的4K对齐块
在SSD。这最大限度地减少写入放大和磨损闪光。
它也提高了性能。
7、SSD的故障在 read-only和write-through模式下是运行的,能够允许IO直接从源磁盘出俩,有性能下降,但是不会有IO错误
SSD在 write-back模式下的损坏会丢失缓存在ssd当中的脏数据块。为了防止数据丢失,可以将两个SSD设备做RAID1
能够识别设备故障的错误码。根据故障是临时的还是持久的来判断最适合的策略。

8、编码优化,减少cpu的占用

3、EnhanceIO使用
3.1 缓存的创建,删除和编辑特性
eio_cli提供创建,删除和编辑等操作。通过man eio_cli可以看到更多的信息
3.2创建一个持久的缓存的配置文件
缓存需要在其他应用程序使用磁盘前需要恢复,否则,在缓存没启动前数据已经写入,那么过时的数据可能损坏。Persistent.txt将介绍如何启动使用udev脚本启动缓存

如果SSD在启动过程中没有加入,读写可以在 Write-through或者read-only模式下使用,如果之前的缓存配置恢复了,有可能使stale数据被读

3.3使用 Write-back模式
这是很重要的,特别是在操作系统崩溃或者断电的情况下,ssd中还有缓存数据没有回写到后端磁盘当中,这个时候直接读数据可能数据是不正确的

回写模式需要clean操作来将脏数据回写到磁盘当中,clean操作可以手动或者自动触发,这些会根据下面的阀值来触发

Dirty high threshold (%)
整个缓存中脏页的比例上限
Dirty low threshold (%)
整个缓存中脏页的比例下限
Dirty set high threshold
在一个set当中的脏页的最高比例
Dirty set low threshold (%)
在一个set当中的脏页的最低比例
Automatic clean-up threshold
自动清理会在外面请求的线程少于这个值
Time based clean-up interval (minutes)
可以指定清理的周期
清理将会在上面的条件满足一个或者时间满足的情况下触发,会在所有都不满足的情况下停止

enhanceio基于flashcache开发

flashcache基于DM-cache(MING Zhao)开发


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值