我在 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»
请注意,磁盘/分区设备位于安装点之前。这又是一次在线操作。您可以在内核日志中查看状态。
完成后,您可以从系统中删除磁盘。