如果我有 RAID1 btrfs,我是否需要偶尔运行“btrfs 平衡”?

如果我有 RAID1 btrfs,我是否需要偶尔运行“btrfs 平衡”?

我有两个设备设置,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,如果您真的很喜欢冒险,可以查看以下列表档案)[电子邮件受保护]邮件列表,那里也有很多有用的信息),我想指出两件事(不幸的是)有点大,无法放入评论中:

  1. 维基百科上的那个特定的常见问题解答条目有点过时了。当前的主线 Linux 内核(截至此答案为 4.14)具有一定程度的自动清理功能,尽管我不确定哪些发行版具有足够新的内核来提供此功能。

  2. 如果您的文件系统有大量的变动(定期创建、删除和/或复制大量文件),那么半定期地进行少量部分平衡可能会很有帮助,因为它回收 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”如何工作等。这是一个绝对值得花几个晚上阅读的信息宝库。

相关内容