一、简介
Flashcache 是为Linux操作系统开发的块设备回写缓存内核模块,使用了Device Mapper的方式实现,具体用途就是通过flashcache模块用ssd加速sas盘的读写性能,提供sas盘的IOPS,此模块由Facebook开源,源代码地址:https://github.com/facebook/flashcache
二、环境说明
1、内核版本要求(官方载录)
Flashcache to later Linux releases. We now have built Flashcache on 2.6.18, 2.6.20 and 2.6.27-32. We have tested Flashcache on 2.6.18, 2.6.20, 2.6.27 and 2.6.32.
2、设备说明
/dev/sdb3 sas盘 /dev/dda ssd盘 /cache 缓存卷的挂载目录
三、环境安装
https://github.com/facebook/flashcache/archive/master.zip unzip flashcache-master.zip cd flashcache-master make make install modprobe flashcache ##加载flashcache模块 lsmod | grep flash ##查看flashcache模块是否加载 echo "modprobe flashcache" >>/etc/rc.local ##开机加载flashcache模块
四、缓存卷的创建、加载、删除
1、创建缓存卷
flashcache_create -p back -s 50g -b 4k cachedev /dev/sda /dev/sdb3 ##建成功会在/dev/mapper/下生成一个已卷名称命名的设备 mount /dev/mapper/cachedev /cache/ ##挂载即可使用了
参数说明:
-p:缓存模式 writeback,writethrough,writearound三种。
-s:缓存大小,可选项,如果未指定则整个SSD设备被用于缓存,默认的计数单位是扇区(sectors),但是可以接受k/m/g单位。
-b:指定块大小,可选项,默认为4KB,必须为2的指数。默认单位为扇区。也可以用K作为单位,一般选4KB。
-f:强制创建,不进行检查
2、缓存卷加载
语法:flashcache_load ssd_devname cachedevname,加载一个已经存在的缓存卷,当机器重启了需要加载
flashcache_load /dev/sda cachedev
3、销毁缓存卷
flashcache_destroy /dev/sda
4、删除flashcache卷
dmsetup remove cachedev
PS:
对于writethrough和writearound模式的缓存,磁盘删除或者重启,卷都会被删除
五、flashcache开机启动配置
cp /root/flashcache-master/utils/flashcache /etc/init.d/ chmod +x /etc/init.d/flashcache chkconfig --add /etc/init.d/flashcache
vi /etc/init.d/flashcache ##填写几个变量的参数
SSD_DISK=/dev/sda BACKEND_DISK=/dev/sdb3 CACHEDEV_NAME=cachedev MOUNTPOINT=/cache FLASHCACHE_NAME=sda+sdb3
六、flashcache调优
flashcache.fast_remove = 1:打开fast remove特性,关闭机器时,无需将cache中的脏块写入磁盘。
flashcache.reclaim_policy = 1:脏块刷出策略,0:FIFO,1:LRU。
flashcache.dirty_thresh_pct = 90:flashcache上每个hash set上的脏块阀值。
flashcache.cache_all = 1:cache所有内容,可以用黑名单过滤。
flashecache.write_merge = 1:打开写入合并,提升写磁盘的性能。
具体操作如下:
1、执行”sysctl dev.flashcache“命令,打印出关于flashcache可以调整的选项
sysctl dev.flashcache >> /etc/sysctl.conf
2、调整之后,执行”sysctl -p“生效
七、监控
1、flashcache 卷的错误信息报告在/proc/flashcache/<cache name>/flashcache_errors 里:
2、flashcache 卷的统计信息报告在 /proc/flashcache/<cache name>/flashcache_stats 里:
3、Cache统计信息
可以使用 “dmsetup status cachename”命令来查询cache的统计信息。 “dmsetup table cachename”命令可以dumps出来achce相关的统计信息
4、用flashstat监控cachedev使用情况
cp /root/flashcache-master/utils/flashstat /bin/
八、用fio压测sas盘(flashcache加速前后的对比)
flashcache加速前
flashcache加速后
本文出自 “屌丝运维男” 博客,谢绝转载!
原文地址:http://navyaijm.blog.51cto.com/4647068/1567698