stufuller Asked: 2019-11-21 12:31:03 +0800 CST2019-11-21 12:31:03 +0800 CST 2019-11-21 12:31:03 +0800 CST BTRFS Balance 占用 100% cpu 和 100% I/O 772 我们有一个 SuSE 12、sp3 服务器(SLES,不是 openSuSE)。系统上只有一个磁盘在使用,根磁盘有几个文件系统,下面挂载了 BTRFS。 我们看到“btrfs 平衡”作业在生产日中间开始的问题。这似乎锁定了服务器,尽管似乎正在发生的是平衡过程正在消耗 100% 的 cpu 和 100% 的 I/O。 由于我们只有一个磁盘,并且由于平衡操作的原因是平衡所有设备上的块组,所以我们真的需要运行平衡操作吗? linux btrfs 1 个回答 Voted Best Answer Kamil Maciorowski 2019-11-21T17:00:40+08:002019-11-21T17:00:40+08:00 由于我们只有一个磁盘,并且由于平衡操作的原因是平衡所有设备上的块组,所以我们真的需要运行平衡操作吗? 这是主要原因。这不是唯一的原因。 我的回答有点轶事。我将描述两种对我有用/有用的场景btrfs balance。在这两种情况下,Btrfs 文件系统都存在于单个设备上。这是关于家庭使用的,但答案可能会给您一些线索。 第一个设备约为 1.8 TB。我已经使用文件系统几年了。在过去的几个月里,可用空间低于 100 GB,我不断添加新文件并删除一些旧文件。 有一天我点击“设备上没有剩余空间”,这是一个惊喜。传统上我使用df而不是btrfs fi df,该工具报告 0 字节空闲。我删除了一些消耗性文件,几 GB,然后df报告大约 20 GB 可用。我能够再次添加新数据。在某个时候df,从大约 20 GB 跃升至 0 字节空闲。在此之后,我设法添加了更多数据(兆字节而不是千兆字节),直到我点击“没有剩余空间”。 这重复了好几次,但我不得不删除越来越多的文件以保持事情的顺利进行。当我第一次观察到它时,阈值是 20 GB,现在增加到大约 120 GB。最终,据称我有 120 GB 的可用空间,但在点击“没有剩余空间”之前我只能写入几 GB。 btrfs balance start …帮助。完成后,我成功地向文件系统写入了大约 50 GB。 查看man 8 btrfs-balance有关“使块组使用更紧凑”的内容(usage过滤器,示例)。比较这个答案,它比我的故事更具技术性。 第二个设备是我的 SSD。我注意到fstrim -v …可以报告修剪的字节数比我预期的要少。只有在btrfs balance start …金额达到我的预期之后。比较这个问题。 我不经常平衡我的SSD。我每周调用fstrim -v …一次左右;只有当我承认它“修剪得太少”时,我才知道是时候平衡(并再次修剪)了。 所以是的,您可能需要运行平衡。fstrim可能不适用于您的设置的场景,但“没有剩余空间”的场景可能。几个提示: 也许您不需要经常运行平衡。 考虑不要“在生产日的中间”运行它。 您可能不需要完全平衡。中的示例提供man 8 btrfs-balance了一些见解。btrfs fi df您可以估计是否需要平衡以及使用什么-dusage=。
这是主要原因。这不是唯一的原因。
我的回答有点轶事。我将描述两种对我有用/有用的场景
btrfs balance
。在这两种情况下,Btrfs 文件系统都存在于单个设备上。这是关于家庭使用的,但答案可能会给您一些线索。第一个设备约为 1.8 TB。我已经使用文件系统几年了。在过去的几个月里,可用空间低于 100 GB,我不断添加新文件并删除一些旧文件。
有一天我点击“设备上没有剩余空间”,这是一个惊喜。传统上我使用
df
而不是btrfs fi df
,该工具报告 0 字节空闲。我删除了一些消耗性文件,几 GB,然后df
报告大约 20 GB 可用。我能够再次添加新数据。在某个时候df
,从大约 20 GB 跃升至 0 字节空闲。在此之后,我设法添加了更多数据(兆字节而不是千兆字节),直到我点击“没有剩余空间”。这重复了好几次,但我不得不删除越来越多的文件以保持事情的顺利进行。当我第一次观察到它时,阈值是 20 GB,现在增加到大约 120 GB。最终,据称我有 120 GB 的可用空间,但在点击“没有剩余空间”之前我只能写入几 GB。
btrfs balance start …
帮助。完成后,我成功地向文件系统写入了大约 50 GB。查看
man 8 btrfs-balance
有关“使块组使用更紧凑”的内容(usage
过滤器,示例)。比较这个答案,它比我的故事更具技术性。第二个设备是我的 SSD。我注意到
fstrim -v …
可以报告修剪的字节数比我预期的要少。只有在btrfs balance start …
金额达到我的预期之后。比较这个问题。我不经常平衡我的SSD。我每周调用
fstrim -v …
一次左右;只有当我承认它“修剪得太少”时,我才知道是时候平衡(并再次修剪)了。所以是的,您可能需要运行平衡。
fstrim
可能不适用于您的设置的场景,但“没有剩余空间”的场景可能。几个提示:man 8 btrfs-balance
了一些见解。btrfs fi df
您可以估计是否需要平衡以及使用什么-dusage=
。