bcache是按照SSD特性來設計的,只按擦除桶大小進行分配,使用btree和日志混合方法來跟蹤緩存數據,緩存數據可以是桶上的任意一個扇區。bcache最大程度上減少了隨機寫的代價,它按順序填充一個桶,重新使用時只需將桶設置為無效。
bcache支持寫直達和回寫策略。回寫默認情況下是關閉的,可以在運行時改變。bcache還在最大程度上保護你的數據,在系統異常關機時數據仍然是可靠的。因為它被設計為只有在數據完全寫回存儲設備才確認寫成功。
回寫策略能夠緩存絕大多數的寫請求,然後再按照索引將髒數據按次序寫回到後端存儲設備。
SSD的特點就是隨機IO速度很快,而對於大塊順序IO的提升卻並不大。bcache會檢測順序IO並忽略;還會對每一個任務記錄動態的平均IO大小,當平均IO大小超過截止值時該任務後面的IO將會被忽略,這樣就可以透傳備份或者大文件拷貝。
在flash上發現數據IO錯誤時,首先會嘗試讀以恢復數據或者將該緩存項置為無效。對於不可恢復的錯誤,例如元數據或髒數據,bcache將會自動關閉緩存。如果有髒數據在緩存中,這時會首先關閉回寫策略然後再等待髒數據刷回。
從這裡開始
首先需要安裝bcache-tools,它提供了make-bcache工具。緩存設備和後端磁盤在使用前都需要先初始化:
make-bcache -B /dev/sdb
make-bcache -C /dev/sdc
make-bcache提供了同時初始化多個設備的功能,並自動綁定緩存設備和後端磁盤:
make-bcache -B /dev/sda /dev/sdb -C /dev/sdc
bcache-tools現在已經包含了udev規則文件,bcache設備可以立即被內核感知。如果沒有udev規則,需要手動注冊設備:
echo /dev/sdb > /sys/fs/bcache/register
echo /dev/sdc > /sys/fs/bcache/register
注冊了後端磁盤後,bcache設備會出現在/dev/目錄下,現在就可以格式化然後使用了。bcache設備默認是透傳模式,因此需要綁定緩存。
bcache顯示如下:
/dev/bcache<N>
還有(有udev規則文件時):
/dev/bcache/by-uuid/<uuid>
/dev/bcache/by-label/<label>
如果要開始使用:
mkfs.ext4 /dev/bcache0
mount /dev/bcache0 /mnt
bcache的sysfs控制項在/sys/block/bcache<N>/bcache。
bcache設備是按集合來管理的,但目前一個集合只支持一個bcache設備,將來會支持多個設備、元數據和髒數據鏡像。新cache設備顯示為/sys/fs/bcache/<UUID>
Linux Kernel 的詳細介紹:請點這裡
Linux Kernel 的下載地址:請點這裡