BTRFS 将 RAID0 转换为 RAID1

BTRFS 将 RAID0 转换为 RAID1

不知何故,我在创建 BTRFS 文件系统时犯了错误,最终得到了 RAID0 而不是 RAID1。然而我在添加 274GB 数据后才注意到这一点(我知道,真是个白痴):

Total devices 2 FS bytes used 136.12GiB
        devid    1 size 465.76GiB used 137.03GiB path /dev/sdb
        devid    2 size 465.76GiB used 137.03GiB path /dev/sdc

我想要一种方法A:确认这确实是RAID0(我确定是,但我还没有找到明确输出的命令,我想在下次添加数据之前检查一下)。 B:如果可能,将数据重新分配到 RAID1。

答案1

在跨多个设备创建 btrfs 文件系统时,默认使用 RAID0 存储数据,使用 RAID1 存储元数据。如果您想更改此设置,可以将参数传递给 mkfs 命令来更改数据 (-d) 和元数据 (-m) 的 RAID 级别:

mkfs.btrfs -d raid1 -m raid1 /dev/sda /dev/sdb

要确认现有文件系统上正在使用什么 RAID 级别,您可以使用btrfs 实用程序

$ btrfs fi df /mountpoint
Data, RAID1: total=15.00GiB, used=14.65GiB
System, RAID1: total=8.00MiB, used=16.00KiB
Metadata, RAID1: total=1.00GiB, used=15.59MiB

示例输出显示 RAID1 用于数据和元数据。运行btrfs fi usage /mountpoint将提供更多详细信息。

您可以将现有文件系统转换为不同的 RAID 级别通过将参数传递给balance命令。

btrfs balance start -dconvert=raid1 -mconvert=raid1 /mountpoint

平衡将所有数据再次写入文件系统,添加参数将导致数据在重写时进行转换。这可能需要一段时间,您可以运行btrfs balance status /mountpoint来查看状态。完成后,您可以确认所有数据均已按预期转换btrfs fi df。平衡期间写入的数据可能仍使用旧格式,因此可能需要第二次平衡。

诸如常规df命令或之类的实用程序btrfs fi show不考虑 RAID 设置,因为这是由 btrfs 本身完成的。这些工具仅显示 btrfs 在磁盘上分配的总量,它们不知道 btrfs 使用什么格式存储数据。这也意味着通过 SAMBA 或其他工具进行共享将不考虑 RAID。有关更多信息,请参阅 btrfs 常见问题解答。

答案2

好吧,让这个服务器成为我彻底失败的纪念碑。

确认 RAID 配置:btrfs fi df /mountpoint

事实证明我没有犯错,当您通过 SAMBA 连接到 btrfs RAID1 fs 时,Windows 会以某种方式报告两倍的数据(以及两倍的空间)。

如果您可能确实犯了我认为在设置 BTRFS 文件系统时犯的错误可能会有所帮助,但幸运的是我不必尝试。

答案3

你可以只使用一个平衡过滤器 当它安装时

  1. 检查你是否是 raid0 并且它是正确的阵列

    $ btrfs fi df /mnt
    
    Data, RAID0: total=16.00GiB, used=14.17GiB
    System, RAID1: total=32.00MiB, used=16.00KiB
    Metadata, RAID1: total=1.00GiB, used=376.92MiB
    GlobalReserve, single: total=39.20MiB, used=0.00B
    
  2. 实时转换
    btrfs fi balance start -dconvert=raid1 /mnt
    
  3. 检查现在是否是raid1

    btrfs fi df /
    
    Data, RAID1: total=15.00GiB, used=14.22GiB
    System, RAID1: total=32.00MiB, used=16.00KiB
    Metadata, RAID1: total=1.00GiB, used=377.19MiB
    GlobalReserve, single: total=39.41MiB, used=0.00B
    

如果您的元数据还不是 raid1,请确保添加-mconvert=raid1.

相关内容