无法将缓存设备连接到支持设备

无法将缓存设备连接到支持设备

我有一个 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

相关内容