無法將快取設備連接到支援設備

無法將快取設備連接到支援設備

我有一個 LVM,我想使用 bcache 來快取其中一個 LV。 (是的,我知道我可以使用 lvmcache,但我在啟動時遇到問題,所以我放棄了使用它。)

首先,我用了區塊將 LV 轉換為 bcache 支援設備(這似乎確實有效!):

blocks to-bcache /dev/my_vg/my_lv

我在 SSD 上創建了一個快取設備:

make-bcache --block 4k --bucket 2M -C /dev/sdc4

然後我嘗試將快取附加到支援設備:

bcache-super-show /dev/sdc4 | grep cset.uuid
echo 'above_uuid' > /sys/block/bcache0/bcache/attach

然後我重新啟動了我的機器(添加到後/dev/bcache0/etc/fstab並意識到快取沒有運行。

# cat /sys/block/bcache0/bcache/state
no cache

# bcache-super-show /dev/my_vg/my_lv | grep cache_state
dev.data.cache_state    0 [detached]

我錯過了什麼嗎?我需要使用另一個命令來啟用快取嗎?

為什麼 bcache 不喜歡我的快取設備並且不允許我將其附加到我的支援設備?我是否對--block和使用了錯誤的值--bucket

答案1

我設法透過在 上重新建立超級區塊來解決此問題/dev/sdc4。看起來 --block 4k --bucket 2M不正確,這就是為什麼快取設備未連接的原因。

我清除了超級塊,然後運行:

make-bcache -C /dev/sdc4

現在當我這樣做時:

echo 'uuid' > /sys/block/bcache0/bcache/attach

有效!

答案2

我有同樣的問題:

make-bcache --block 4k --bucket 2M -C /dev/nvme0n1p1

導致寫入錯誤:參數無效。

具體來說,是 --block 4k 導致了問題。

make-bcache --bucket 2M -C /dev/nvme0n1p1 

效果很好。

答案3

首先,嘗試一些清理:

echo $cset_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
echo $backing_uuid | sudo tee /sys/fs/bcache/pendings_cleanup

用於bcache-super-show取得 uuid。

然後再嘗試註冊:

echo $cset_uuid | sudo tee /sys/fs/bcache/register
echo $backing_uuid | sudo tee /sys/fs/bcache/register

如果快取裝置註冊成功,則快取 uuid 應該存在於 /dev/fs/bcache 中。

如果您的支援設備有cache_stateinvalid您的支援數據將受到 的支配fsck

如果bcache-super-show說後備狀態dev.data.cache_statecleancset.uuid僅由零組成,則 bcache 設備處於無效狀態並且必須重新建立。 [來源]

但是,如果乾淨,您可以嘗試在沒有快取設備的情況下強制啟動支援設備:

echo 1 | sudo tee /sys/class/block/$dev/bcache/running

相關內容