enhanceio是在flashcache的基础上stec-inc推出的改进版。昨天试用了一下,配置简单,易于操作,可以在硬盘挂载的情况下动态添加和删除enhanceio设备,一旦创建就是persistent的。其性能也非常出众。可惜被收购后,此项目已停止了更新和维护。
1. 安装
git clone https://github.com/STEC-inc/EnhanceIO
cd EnhanceIO
sudo cp CLI/eio_cli /sbin/
chmod 700 CLI/eio_cli
sudo cp ./CLI/eio_cli.8 /usr/share/man/man8/
cd Driver/enhanceio/
sudo apt-get install build-essential dkms
make
sudo make install
cd Driver
sudo cp -r enhanceio /usr/src
sudo mv /usr/src/enhanceio /usr/src/enhanceio-0.1
cd /usr/src/enhanceio-0.1
sudo vim dkms.conf
PACKAGE_VERSION="0.1"
sudo dkms add -m enhanceio -v 0.1
sudo dkms build -m enhanceio -v 0.1
sudo dkms install -m enhanceio -v 0.1
2. 创建
sudo eio_cli create -d /dev/sdb -s /dev/sdc4 -m wb -c enhanceio_test
│ │ │ └cache name
│ │ └cache style(wb=writeback, wt=writethrough, ro=readonly)
│ └Caching Device (SSD)
└Source Device (HDD)
$ cat /proc/enhanceio/my_first_enhanceio/stats
然后利用eio_cli info就可以查看创建的缓存设备了。
3. 删除
先设置为只读,然后进行删除
# eio_cli edit -c my_first_enhanceio -m ro
$ grep nr_dirty /proc/enhanceio/enchanceio_test/stats
# eio_cli delete -c my_first_enhanceio
4. 参数设置
可以利用sysctl -w或者编辑/etc/sysctl.conf进行配置
dev.enhanceio.ecache.autoclean_threshold = 1
dev.enhanceio.ecache.control = 0
dev.enhanceio.ecache.dirty_high_threshold = 100
dev.enhanceio.ecache.dirty_low_threshold = 90
dev.enhanceio.ecache.dirty_set_high_threshold = 100
dev.enhanceio.ecache.dirty_set_low_threshold = 90
dev.enhanceio.ecache.do_clean = 0
dev.enhanceio.ecache.mem_limit_pct = 90
dev.enhanceio.ecache.time_based_clean_interval = 1
dev.enhanceio.ecache.zero_stats = 0
可以根据需要进行调整。
5. 测试结果
经过初步测试,enhanceio的wb模式在极端情况下会出现丢失数据的情况。而flashcache的wb模式则不会。所以如果是读多写少的话,采用enhanceio的wt模式效果很好。写多的情况最好还是用flashcache的wb模式。
参考:
http://www.thomas-krenn.com/de/wiki/EnhanceIO
https://wiki.archlinux.org/index.php/EnhanceIO