我可以使用 bcache 而不先丢失任何数据吗?

我可以使用 bcache 而不先丢失任何数据吗?

我的 Ubuntu 17.04(64 位)盒子有:

  • 1 个 SSD(用于操作系统)
  • 2 x HDD(用于数据,例如/home备份等)
  • 8GB 内存

如果我缩小我的 SSD 并创建一个空分区来缓存我的 HDD,是否可以设置 bcache 而不丢失任何现有数据?

常问问题部分缓存网站说这是可能的,但没有演示如何操作。

我可以将 bcache 与现有设备一起使用,而无需重新格式化吗?

有一个转换步骤,通常可以就地完成。额外的步骤来自对备份设备上 bcache 特定超级块的需求 - 这样 bcache 就可以保持设备同步,这样您就不会在不经过 bcache 驱动程序的情况下意外安装和使用备份设备。如果没有这样的超级块,您可能会意外地在非 bcache 模式下使用您的设备,从而使缓存无效/损坏,而 bcache 却不知道这一点(如果您在 writethrough 模式下使用 bcache) - 或者更糟的是,如果您在 writeback 模式下使用它,备份设备上的文件系统似乎完全损坏了。

以下教程需要首先重新格式化所有涉及的驱动器:

答案1

常见问题解答似乎已更新,现在包括以下内容:

是一种在块设备开头添加超级块的工具。有几种方法可以实现此目的;块可以转换 LVM 逻辑卷、具有一些可用空间或可收缩文件系统的分区以及 LUKS 加密卷。块还可以将设备转换为 LVM,然后转换为 bcache,这在无法直接进行 bcache 转换时非常有用。

您可以使用blocks to-bcache将分区转换为 bcache 设备,并且生成的 bcache 设备应该可以作为原始文件系统进行安装。

不幸的是,代码相当老旧,并且依赖于 python3.3,因此需要做一些工作来整合所有依赖项才能使其运行。此外,它需要在分区上操作,因此例如如果您在 /dev/sda 而不是 /dev/sda1 上创建 btrfs,我认为该工具将无法工作。

相关内容