前言
在Linux下,使用SSD為HDD加速,目前較為成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比較以后最終選擇了bcache。 bcache 是一個 Linux 內核塊層超速緩存。它允許使用一個或多個高速磁盤驅動器(例如 SSD)作為一個或多個速度低得多的硬盤的超速緩存。bcache 支持直寫和寫回,不受所用文件系統的約束。默認情況下,它只超速緩存隨機讀取和寫入,這也是 SSD 的強項。它還適合用于臺式機、服務器和高端儲存陣列。CentOS和Ubuntu都可以使用bcache。bcache是在3.10以后的版本加入mainline的,因此需要3.10以上的內核版本。但是筆者使用Centos 7在3.10.0的內核上進行配置時,發現無法生成相應的配置文件節點,測試過程中使用4.3.3版的內核。
主要功能:
1,可以使用單個超速緩存設備來超速緩存任意數量的后備設備。在運行時可以掛接和分離已裝入及使用中的后備設備。
2,在非正常關機后恢復 - 只有在超速緩存與后備設備一致后才完成寫入。
3,SSD 擁塞時限制傳至 SSD 的流量。
4,高效的寫回實施方案。臟數據始終按排序順序寫出。
5,穩定可靠,可在生產環境中使用。
Bcache通過make-bcache命令完成bcache的創建,需要安裝相關的工具包bcache-tools。
我們通過編譯安裝 (Github)
https://github.com/g2p/bcache-tools/archive/refs/tags/v1.0.8.tar.gz
這是最新的v1.0.8,如果要查看其他版本請訪問
Tags · g2p/bcache-tools · GitHub
下載源碼(我這里使用了github鏈接代理加速)
wget https://github.moeyy.xyz/https://github.com/g2p/bcache-tools/archive/refs/tags/v1.0.8.tar.gz
解壓源碼壓縮包
tar -zxvf v1.0.8.tar.gz
安裝依賴
yum install libblkid-devel -y
編譯安裝?
如果沒有make命令請自行安裝軟件包
make && make install
?格式化硬盤分區
應用硬盤到bcache模式之前需要將目標分區格式化為bcache,這一步會破壞磁盤分區中所有數據。方法和信息如下
# 如果磁盤是第一次使用,或完全是空的,第一步通常不用執行,這一步市為了擦除分區文件信息,如果掛載也要先卸載,否則會出現device busy的問題
wipefs -a /dev/sdb /dev/sdc
創建cache 也就是我們的SSD的分區作為緩存
緩存參數意義:
-B: 設置backing device -C: 設置cache device -w: block size (hard sector size of SSD),默認是2K,可使用--block=4K代替 -b: bucket size,可以使用--bucket=1M代替
make-bcache -C /dev/sdc1
查看下
[root@master ~]# bcache-super-show /dev/sdc1
sb.magic ok
sb.first_sector 8 [match]
sb.csum C322F881FE092899 [match]
sb.version 0 [cache device]dev.label (empty)
dev.uuid d3834fdd-d31d-4347-9da3-31064cae77ac
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 20968448
dev.cache.total_sectors 20969472
dev.cache.ordered no
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]cset.uuid 0609854c-f083-408b-8ea6-f90d4afd60c6
創建backend
接著創建被加速的backend?
make-bcache -B /dev/sdb
這快硬盤就是我們的HDD 機械硬盤
查看下
[root@master ~]# bcache-super-show /dev/sdb
sb.magic ok
sb.first_sector 8 [match]
sb.csum C71B7848F1913A17 [match]
sb.version 1 [backing device]dev.label (empty)
dev.uuid da958760-83c8-4d05-9789-f8b371bd62aa
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 0 [writethrough]
dev.data.cache_state 0 [detached]cset.uuid 9a492f33-f28d-41f8-8cb1-3cfd93d07885
注冊
echo /dev/sdb > /sys/fs/bcache/register
echo /dev/sdc1 > /sys/fs/bcache/register
設備綁定
往backend附加cache
此處附加的uuid,是在上面查詢到的cache的uuid
echo d3834fdd-d31d-4347-9da3-31064cae77ac > /sys/block/bcache0/bcache/attach