![如果我有 RAID1 btrfs,我是否需要偶尔运行“btrfs 平衡”?](https://linux22.com/image/123274/%E5%A6%82%E6%9E%9C%E6%88%91%E6%9C%89%20RAID1%20btrfs%EF%BC%8C%E6%88%91%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E5%81%B6%E5%B0%94%E8%BF%90%E8%A1%8C%E2%80%9Cbtrfs%20%E5%B9%B3%E8%A1%A1%E2%80%9D%EF%BC%9F.png)
我有两个设备设置,RAID1
我假设数据(和元数据)将始终在两个设备上镜像。
$ sudo btrfs filesystem show
Label: none uuid: eaf30e64-0a90-447f-b53d-1598fe46a8a9
Total devices 2 FS bytes used 751.55GiB
devid 1 size 931.51GiB used 763.03GiB path /dev/sda
devid 2 size 931.51GiB used 763.03GiB path /dev/sdb
$ sudo btrfs filesystem df /
Data, RAID1: total=758.00GiB, used=748.13GiB
System, RAID1: total=32.00MiB, used=144.00KiB
Metadata, RAID1: total=5.00GiB, used=3.42GiB
GlobalReserve, single: total=512.00MiB, used=0.00B
btrfs balance
我需要在这个设置上运行吗?
如果是,多久一次?
答案1
虽然 Emmanuel Rosa 从 Wiki 中引用的内容在技术上是正确的(顺便说一句,他也是对的,请检查 Wiki,如果您真的很喜欢冒险,可以查看以下列表档案)[电子邮件受保护]邮件列表,那里也有很多有用的信息),我想指出两件事(不幸的是)有点大,无法放入评论中:
维基百科上的那个特定的常见问题解答条目有点过时了。当前的主线 Linux 内核(截至此答案为 4.14)具有一定程度的自动清理功能,尽管我不确定哪些发行版具有足够新的内核来提供此功能。
如果您的文件系统有大量的变动(定期创建、删除和/或复制大量文件),那么半定期地进行少量部分平衡可能会很有帮助,因为它回收 BTRFS 使用的第一个分配阶段分配的未使用空间(第一阶段空间不足通常会破坏文件系统)。例如,我每天都会在大多数系统上运行以下命令:
btrfs balance start -dusage=50 -dlimit=4 -musage=50 -mlimit=16
这将平衡磁盘上不超过 50% 完整度的前 4 个数据块,以及磁盘上不超过 50% 完整度的前 16 个元数据块。这意味着最多可以移动超过 4GB 的数据,完成速度相当快,并且有助于防止系统上的定期变动对文件系统产生太大的负面影响。
答案2
逐字引用 BTRFS 常见问题解答:
我需要定期进行天平吗?
一般使用情况下,没有。完全未经过滤的余额通常需要很长时间,并且会不必要地重写大量数据。如果您发现已分配但未使用大量元数据空间,您可能希望仅对元数据运行平衡(请参阅 Balance_Filters),但这应该是最后的手段。在某些时候,这种清理将成为自动后台进程。 - https://btrfs.wiki.kernel.org/index.php/FAQ#Do_I_need_to_run_a_balance_regularly.3F
提示:任何使用 BTRFS 的人,或者规划要使用 BTRFS 应该阅读维基百科 第一的。绝对是已加载具有洞察力,可以帮助您避免日后的悲伤。例如,如何正确布局文件系统以便最好地利用子卷、随机写入的性能问题、“RAID”如何工作等。这是一个绝对值得花几个晚上阅读的信息宝库。