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

wiz*_*zup 5 btrfs raid1

我有两个设备设置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
Run Code Online (Sandbox Code Playgroud)

我需要btrfs balance在这个设置上运行吗?

如果是,多久一次?

Aus*_*arn 7

虽然 Emmanuel Rosa 从 Wiki 中引用的内容在技术上是正确的(顺便说一下,他也是对的,请查看 wiki,如果您真的喜欢冒险,请查看 linux-btrfs@vger.kernel.org 邮件列表的列表档案,那里有很多有用的信息),有两件事我想指出(不幸的是)有点大,无法放在评论中:

  1. 维基上那个特定的常见问题条目有点过时了。当前的主流 Linux 内核(截至此答案为 4.14)具有一定程度的自动清理功能,但我不确定哪些发行版具有足够的新内核来提供该功能。
  2. 如果您的文件系统有大量的变动(定期创建、删除和/或复制大量文件),那么半定期进行少量部分平衡可能会有所帮助。例如,我每天在我的大部分系统上运行以下程序:

    btrfs balance start -dusage=50 -dlimit=4 -musage=50 -mlimit=16
    
    Run Code Online (Sandbox Code Playgroud)

    这将平衡磁盘上不超过 50% 的前四个数据块和磁盘上不超过 50% 的前 16 个元数据块。这意味着最多移动超过 4GB 的数据,完成速度非常快,并有助于防止我的系统上的定期流失对文件系统产生太大的负面影响。


Emm*_*osa 4

逐字引用 BTRFS 常见问题解答:

我需要定期进行天平吗?

在一般用法中,没有。完全未经过滤的余额通常需要很长时间,并且会不必要地重写大量数据。如果您发现已分配但未使用大量元数据空间,您可能希望仅对元数据运行平衡(请参阅 Balance_Filters),但这应该是最后的手段。在某些时候,这种清理将成为自动后台进程。- https://btrfs.wiki.kernel.org/index.php/FAQ#Do_I_need_to_run_a_balance_regularly.3F

提示:任何使用 BTRFS 或计划使用 BTRFS 的人都应该首先阅读BTRFS Wiki 。它绝对充满了洞察力,可以让你以后不再悲伤。例如,如何正确布局文件系统以便最好地利用子卷、随机写入的性能问题、“RAID”如何工作等。这是一个绝对值得花几个晚上阅读的信息宝库。