Ssd
bcache 無法將本地 ssd 附加為Google云中的記憶體設備
我正在嘗試使用本地 SSD 作為記憶體設備在Google云中的一個實例中設置 bcache,但在過程的附加階段一切都失敗了。出於測試目的,我創建了一個帶有空白磁碟(兩個 SSD 和四個本地 SSD)的新實例。目標是使用一個正常 SSD 作為備份設備,並與 4 個本地 SSD 組成一個 RAID,並將該設備用作記憶體。
在下面的輸出中,您可以看到所採取的步驟(使用 RAID 時的結果是相同的,為了簡單起見,我在這裡只使用了一個本地 SSD,因為我認為問題與 RAID 無關,而是與磁碟本身有關)。當使用本地 SSD 作為記憶體設備時,我無法將記憶體設備連接到支持設備。相反,當我使用正常 SSD 作為記憶體設備時,您可以看到一切都按預期工作。
專家們的問題是:本地 SSD 是否有任何已知的限制,或者我做錯了什麼(或者可能需要一些額外的步驟)?
作為參考,這些是正在使用的設備:
/dev/sdb => Backing Device
/dev/sdc => SSD Caching Device
/dev/nvme0n1 => Local SSD Single Caching Device
# apt update && apt install mdadm bcache-tools -y # make-bcache -B /dev/sdb UUID: cb10650f-cf60-4a96-81eb-7149ae650f94 Set UUID: dc0a7f3a-de46-4b00-84f4-4aa40c203745 version: 1 block_size: 1 data_offset: 16 # mkfs.ext4 -L cached /dev/bcache0 # make-bcache -C /dev/nvme0n1 UUID: c5a33c1e-e1ef-4d3d-a5ac-5d0adc340f43 Set UUID: 228dcba5-6085-47a1-b2e9-eff68dd6ac14 version: 0 nbuckets: 768000 block_size: 8 bucket_size: 1024 nr_in_set: 1 nr_this_dev: 0 first_bucket: 1 # bcache-super-show /dev/nvme0n1 sb.magic ok sb.first_sector 8 [match] sb.csum 674DD52F06C4562B [match] sb.version 3 [cache device] dev.label (empty) dev.uuid c5a33c1e-e1ef-4d3d-a5ac-5d0adc340f43 dev.sectors_per_block 8 dev.sectors_per_bucket 1024 dev.cache.first_sector 1024 dev.cache.cache_sectors 786430976 dev.cache.total_sectors 786432000 dev.cache.ordered yes dev.cache.discard no dev.cache.pos 0 dev.cache.replacement 0 [lru] cset.uuid 228dcba5-6085-47a1-b2e9-eff68dd6ac14 # echo 228dcba5-6085-47a1-b2e9-eff68dd6ac14 > /sys/block/bcache0/bcache/attach -bash: echo: write error: Invalid argument # make-bcache -C /dev/sdc UUID: 55c95063-9aa7-4d2c-8c8c-d4d34d35a7ad Set UUID: 2de3ccef-a7eb-4620-8b6d-265d0a06da17 version: 0 nbuckets: 204800 block_size: 1 bucket_size: 1024 nr_in_set: 1 nr_this_dev: 0 first_bucket: 1 # bcache-super-show /dev/sdc sb.magic ok sb.first_sector 8 [match] sb.csum 11E99ECE7A83EABE [match] sb.version 3 [cache device] dev.label (empty) dev.uuid 55c95063-9aa7-4d2c-8c8c-d4d34d35a7ad dev.sectors_per_block 1 dev.sectors_per_bucket 1024 dev.cache.first_sector 1024 dev.cache.cache_sectors 209714176 dev.cache.total_sectors 209715200 dev.cache.ordered yes dev.cache.discard no dev.cache.pos 0 dev.cache.replacement 0 [lru] cset.uuid 2de3ccef-a7eb-4620-8b6d-265d0a06da17 # echo 2de3ccef-a7eb-4620-8b6d-265d0a06da17 > /sys/block/bcache0/bcache/attach # bcache-super-show /dev/sdc sb.magic ok sb.first_sector 8 [match] sb.csum 11E99ECE7A83EABE [match] sb.version 3 [cache device] dev.label (empty) dev.uuid 55c95063-9aa7-4d2c-8c8c-d4d34d35a7ad dev.sectors_per_block 1 dev.sectors_per_bucket 1024 dev.cache.first_sector 1024 dev.cache.cache_sectors 209714176 dev.cache.total_sectors 209715200 dev.cache.ordered yes dev.cache.discard no dev.cache.pos 0 dev.cache.replacement 0 [lru] cset.uuid 2de3ccef-a7eb-4620-8b6d-265d0a06da17 # bcache-super-show /dev/sdb sb.magic ok sb.first_sector 8 [match] sb.csum 2E55F82F4131C19B [match] sb.version 1 [backing device] dev.label (empty) dev.uuid cb10650f-cf60-4a96-81eb-7149ae650f94 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 1 [clean] cset.uuid 2de3ccef-a7eb-4620-8b6d-265d0a06da17
經過一些詳細的審查後,我意識到問題出在不同設備的塊大小上。調整 make-bcache 命令後,一切都按預期工作:
make-bcache --block 4k -B /dev/sdb make-bcache --block 4k -C /dev/nvme0n1