不知何故,我在创建 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
你可以只使用一个平衡过滤器 当它安装时
检查你是否是 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
- 实时转换
btrfs fi balance start -dconvert=raid1 /mnt
检查现在是否是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
.