无法将缓存设备连接到后备设备

Roc*_*mat 5 arch-linux ssd lvm bcache

我有一个 LVM,我想使用 bcache 来缓存它的一个 LV。(是的,我知道我可以使用 lvmcache,但是我在启动时遇到了问题,我放弃了使用它。)

首先,我使用块将 LV 转换为 bcache 支持设备(这似乎确实有效!):

blocks to-bcache /dev/my_vg/my_lv
Run Code Online (Sandbox Code Playgroud)

我在我的 SSD 上创建了一个缓存设备:

make-bcache --block 4k --bucket 2M -C /dev/sdc4
Run Code Online (Sandbox Code Playgroud)

然后我尝试将缓存附加到后备设备:

bcache-super-show /dev/sdc4 | grep cset.uuid
echo 'above_uuid' > /sys/block/bcache0/bcache/attach
Run Code Online (Sandbox Code Playgroud)

然后我重新启动了我的机器(在添加/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]
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?我需要使用另一个命令来启用缓存吗?

为什么 bcache 不喜欢我的缓存设备并且不让我将它附加到我的后备设备?我是否对--blockand使用了错误的值--bucket?

Roc*_*mat 4

我设法通过在 上重新创建超级块来解决此问题/dev/sdc4。看起来 --block 4k --bucket 2M不正确,这就是缓存设备未连接的原因。

我清除了超级块,然后运行:

make-bcache -C /dev/sdc4
Run Code Online (Sandbox Code Playgroud)

现在当我这样做时:

echo 'uuid' > /sys/block/bcache0/bcache/attach
Run Code Online (Sandbox Code Playgroud)

有效!