如何将 4 驱动器 BTRFS raid1 转换为 2 驱动器“单”(非 raid)模式

如何将 4 驱动器 BTRFS raid1 转换为 2 驱动器“单”(非 raid)模式

我在 BTRFS raid1 配置中有 4 个大小相同的驱动器。我想释放两个驱动器以用于不同的系统。

我非常有信心 BTRFS 可以做到这一点,但我不太确定如何正确地做到这一点。

我已将所有数据备份到其他地方 FWIW。

答案1

我在由四个小型 LVM 逻辑卷组成的临时文件系统上快速测试了此过程。第一个问题是您是否要保持镜像(减少容量)?

下面所有内容«PATH»都是 btrfs 文件系统的挂载点。这些都是在线操作。

如果您不想镜像数据(例如,因为它不适合减少的容量):

  • 摆脱镜像,将文件系统转换为没有镜像的状态。默认情况下,这是重复的元数据和单个数据副本。然而,由于您仍然有两个磁盘,raid1 元数据更有意义。您可以通过重新平衡来做到这一点。这里的“软”意味着只转换需要它的块组,例如,已经是 raid1 的元数据不会被触及。 (与已经是“单一”的数据相同,如果您中途取消此操作并稍后重新启动,则可能会发生这种情况)。

      btrfs balance start -mconvert=raid1,soft -dconvert=single,soft «PATH»
    

平衡将(默认情况下)在前台运行;您可以--background给予恢复您的终端(并使用 检查状态btrfs balance status «PATH»)。状态消息也将打印到 dmesg(以及内核日志和/或 systemd 日志)。这可能需要很长一段时间; btrfs 喜欢移动数据☹。

接下来,告诉 btrfs 停止使用磁盘。无论您是否将其保留为镜像,您都可以执行此操作。

  • 现在您可以从 btrfs 文件系统中删除另外两个磁盘。这还将移动大量数据,因此需要一段时间。请注意,您可以(并且应该)同时删除两个磁盘,否则可能会将数据移动到您接下来要删除的磁盘上。

      btrfs device remove /dev/disk1 /dev/disk2 «PATH»
    

请注意,磁盘/分区设备位于安装点之前。这又是一次在线操作。您可以在内核日志中查看状态。

完成后,您可以从系统中删除磁盘。

相关内容