最近因爲工作的原因接觸到bcache緩存技術的一些皮毛,做個筆記備忘。
bcache是自3.10開始集成到Linux Kernel中去,後面更新了幾個版本增加了一些功能。
另一個備用技術選項爲facebook開創的flashcache。但是作者在github表示,基本不敢用。
This project is not actively maintained. Proceed at your own risk!
除了在Linux 3.10內核中提供支持以外,還有一個bcache-tools工具,用戶可以定義緩存及需加速的設備。一旦BCache設備被格式化後準備使用了,該工具就會通過Sysfs文件向內核註冊。不同於平時接觸的工具有命令操作,bcache的操作都是往/sys/fs/文件傳入配置
安裝
Debian wheezy升到最新版,確認是3.16的內核,安裝bcache-tools後,updateramfs後重啓系統。此時如果還沒有bcache設備,lsmod是查看不到bcache加載的,但是模塊已能正常使用
#apt-get install initramfs-tools #dpkg -i bcache-tools_1.0.8-2_amd64.deb #update-initramfs -u
兩種創建方法
backing 和 cache device一起
#make-bcache -B /dev/sdb /dev/sdc -C /dev/sda3
分別初始化(register)backing device和cache device(如果當前沒有cache設備,但是後續又想添加的話建議使用這種方式)。創建了backing device之後就可以格式化、掛載使用了
#make-bcache -B /dev/sdb #make-bcache -C /dev/sda3
使用這種方法的話,在後續需要添加手動將backing device attach到cache device才能最終使用到緩存。不然backing device就相當於運行於passthrough mode
我們可以通過/sys/fs或者/sys/block來管理bcache設備
/sys/block/bcache<N>/bcache /sys/fs//bcache/<cset-uuid>/
初始化完兩種設備後,需要attch才能真正啓用bcache緩存
echo <CSET-UUID> > /sys/block/bcache0/bcache/attach
即使cache設備掉盤,可設置強制運行後端設備(注意使用writeback模式可能導致data loss):
echo 1 > /sys/block/sdb/bcache/running