Flashcache初次體驗

一、簡介

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 裏:

wKiom1RKIfvxDAI4AAEUbVNL0PI814.jpg

2、flashcache 卷的統計信息報告在 /proc/flashcache/<cache name>/flashcache_stats 裏:

wKioL1RKIm6gYUSYAAOmp-3adic601.jpg

3、Cache統計信息

可以使用 “dmsetup status cachename”命令來查詢cache的統計信息。 “dmsetup table cachename”命令可以dumps出來achce相關的統計信息

4、用flashstat監控cachedev使用情況

 cp /root/flashcache-master/utils/flashstat /bin/

wKioL1RKIrLTq5pvAAhm8PmLJ8Y859.jpg

八、用fio壓測sas盤(flashcache加速前後的對比)

flashcache加速前

wKioL1RKIwqzSceoAAIXqFE5sjY296.jpg

flashcache加速後

wKiom1RKIsTBnFJpAAJJfCwLSW0388.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章