pro*_*s91 3 filesystems raid btrfs
我有三个驱动器(8TB、4TB、3TB)。最初,我在 8TB 驱动器上创建了一个 btrfs 分区并将我的所有数据复制到那里。我使用 btrfs 设备添加添加了 4TB 和 3TB 驱动器,然后运行了平衡转换:
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt
Run Code Online (Sandbox Code Playgroud)
现在平衡已经完成,但它仍然在原始驱动器上以“单一”和“DUP”模式显示一些数据。这是来自的输出btrfs fi usage /mnt/btrfs:
Overall:
Device size: 13.37TiB
Device allocated: 4.62TiB
Device unallocated: 8.75TiB
Device missing: 0.00B
Used: 4.60TiB
Free (estimated): 4.98TiB (min: 4.38TiB)
Data ratio: 1.76
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,single: Size:645.00GiB, Used:645.00GiB
/dev/mapper/8TB 645.00GiB
Data,RAID1: Size:1.98TiB, Used:1.98TiB
/dev/mapper/3TB 551.00GiB
/dev/mapper/4TB 1.44TiB
/dev/mapper/8TB 1.98TiB
Metadata,RAID1: Size:8.00GiB, Used:3.84GiB
/dev/mapper/4TB 8.00GiB
/dev/mapper/8TB 8.00GiB
Metadata,DUP: Size:7.00GiB, Used:6.41GiB
/dev/mapper/8TB 14.00GiB
System,DUP: Size:8.00MiB, Used:400.00KiB
/dev/mapper/8TB 16.00MiB
Unallocated:
/dev/mapper/3TB 2.19TiB
/dev/mapper/4TB 2.19TiB
/dev/mapper/Seagate_Archive_8TB-btrfs 4.37TiB
Run Code Online (Sandbox Code Playgroud)
编辑:这是一些系统信息:
uname -a
Linux 4.8.0-0.bpo.2-amd64 #1 SMP Debian 4.8.11-1~bpo8+1 (2016-12-14) x86_64 GNU/Linux
btrfs --version
btrfs-progs v4.9
Run Code Online (Sandbox Code Playgroud)
我还应该提到这台计算机在平衡期间重新启动,当它恢复时,我根本无法安装 btrfs 卷(它会挂起)。我尝试了许多不同的挂载参数(skip-param、recovery),唯一可行的方法是将它挂载为只读(使用-o ro)。在经历了很多挫折之后,我用 Antergos live USB 启动,它有最新的内核和 btrfs progs,它安装没有问题。我暂停了自动启动的平衡操作,然后重新启动到 Debian,它安装没有问题,所以我再次恢复了平衡。
在 btrfs irc 用户的帮助下,我能够回答问题 (1)。这似乎与重新启动和不成功的挂载尝试无关(仍然不确定那是怎么回事)。相反,作为“单一”存储的 645GB 数据似乎是在启动 raid1 转换后添加到 btrfs 卷的数据。因此,btrfs fi usage在假设所有数据在转换后存储为 raid1 之前检查输出似乎是一种很好的做法。此外,“软”过滤器将允许您重新平衡未根据目标配置文件存储的数据,例如我运行:
btrfs balance start --bg -mconvert=raid1,soft /mnt/btrfs
btrfs balance start --bg -dconvert=raid1,soft /mnt/btrfs
Run Code Online (Sandbox Code Playgroud)
(根据用户在 btrfs irc 论坛上的建议,先对元数据进行平衡,然后对数据进行平衡),这是将剩余数据转换为 raid1 的过程。
此外,要回答问题 (2),答案是在 raid1 文件系统中可能会出现一些“单个”块,但它们的使用率应该为 0。如果发生这种情况,您可以通过运行来清理它们
btrfs balance start -dusage=0 -musage=0 /mnt/btrfs
Run Code Online (Sandbox Code Playgroud)
(请参阅btrfs 常见问题解答)