在 btrfs 根文件系统中,哪些 / 子目录应该禁用压缩?

在 btrfs 根文件系统中,哪些 / 子目录应该禁用压缩?

假设您将根文件系统设置为 btrfs,并使用 Ubuntu 14.10 默认设置(一个子卷用于/,另一个用于/home),并且您希望尽可能地压缩和重复数据删除。哪些目录应作为适当的子卷进行管理并禁用压缩?“尽可能多地压缩”和出于性能原因跳过某些部分的压缩这两个目标是相互排斥的,因此让我澄清一下这个问题:

  • 某些文件和目录集似乎受到压缩的影响(例如,dpkg更新后最多需要 30 分钟才能读取包列表)(使用zlib后压缩btrfs filesystem defragment -c)禁用压缩可将/var/lib/dpkg/速度提高 1000 倍。是否有更多此类性能影响的例子(dpkg数据库性能不佳)。
  • 包含源代码(/src/和其他代码)的目录是压缩的良好候选,尽管它们大部分在系统编译时被读取,因此 CPU 负载会很高,并且必须进行 CPU 密集型解压缩。如何估计或衡量权衡?

答案1

我认为每个子卷的压缩目前还不可用。从BTRFS 维基

大多数挂载选项适用于整个文件系统,只有第一个要挂载的子卷的选项才会生效。这是由于缺乏实施,将来可能会发生变化。

这意味着(例如)您无法使用挂载选项设置每个子卷nodatacownodatasumcompress。这最终应该会得到修复,但事实证明,在 Linux VFS 框架内正确实现它很困难。

除非你有相反的信息,否则你的计划不会奏效(暂时)。

相关内容