bcache はローカル SSD を Google Cloud のキャッシュデバイスに接続できません。

bcache はローカル SSD を Google Cloud のキャッシュデバイスに接続できません。

ローカルSSDをキャッシュデバイスとして使用してGoogle Cloudインスタンスでbcacheを設定しようとしていますが、プロセスの接続段階ですべてが失敗します。テスト目的で、空のディスク(2つのSSDと4つのローカルSSD)を持つ新しいインスタンスを作成しました。目的は、通常のSSDをバックアップデバイスとして使用し、4つのローカルSSDでRAIDを構成し、そのデバイスをキャッシュとして使用することです。

以下の出力で実行された手順を確認できます。結果はraidを使用した場合と同じです。問題はraidには関係なく、ディスク自体に関連していると信じているので、単純化のためにここではローカルSSDを使用しました。ローカル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

ベストアンサー1

詳しく検討した結果、問題は異なるデバイスのブロックサイズにあることに気づきました。 make-bcacheコマンドを調整すると、すべてが期待どおりに機能します。

make-bcache --block 4k -B /dev/sdb
make-bcache --block 4k -C /dev/nvme0n1

おすすめ記事