1、簡介git
Flashcache 是爲Linux操做系統開發的塊設備回寫緩存內核模塊,使用了Device Mapper的方式實現,具體用途就是經過flashcache模塊用ssd加速sas盤的讀寫性能,提供sas盤的IOPS,此模塊由Facebook開源,源代碼地址:https://github.com/facebook/flashcachegithub
2、環境說明shell
一、內核版本要求(官方載錄)緩存
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.
二、設備說明app
/dev/sdb3 sas盤 /dev/dda ssd盤 /cache 緩存卷的掛載目錄
3、環境安裝性能
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模塊
4、緩存卷的建立、加載、刪除ui
一、建立緩存卷操作系統
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:強制建立,不進行檢查
二、緩存卷加載code
語法:flashcache_load ssd_devname cachedevname,加載一個已經存在的緩存卷,當機器重啓了須要加載ip
flashcache_load /dev/sda cachedev
三、銷燬緩存卷
flashcache_destroy /dev/sda
四、刪除flashcache卷
dmsetup remove cachedev
PS:
對於writethrough和writearound模式的緩存,磁盤刪除或者重啓,卷都會被刪除
5、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
6、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:打開寫入合併,提高寫磁盤的性能。
具體操做以下:
一、執行」sysctl dev.flashcache「命令,打印出關於flashcache能夠調整的選項
sysctl dev.flashcache >> /etc/sysctl.conf
二、調整以後,執行」sysctl -p「生效
7、監控
一、flashcache 卷的錯誤信息報告在/proc/flashcache/<cache name>/flashcache_errors 裏:
二、flashcache 卷的統計信息報告在 /proc/flashcache/<cache name>/flashcache_stats 裏:
三、Cache統計信息
可使用 「dmsetup status cachename」命令來查詢cache的統計信息。 「dmsetup table cachename」命令能夠dumps出來achce相關的統計信息
四、用flashstat監控cachedev使用狀況
cp /root/flashcache-master/utils/flashstat /bin/
8、用fio壓測sas盤(flashcache加速先後的對比)
flashcache加速前
flashcache加速後