假设您将根文件系统设置为 btrfs,并使用 Ubuntu 14.10 默认设置(一个子卷用于/
,另一个用于/home
),并且您希望尽可能地压缩和重复数据删除。哪些目录应作为适当的子卷进行管理并禁用压缩?“尽可能多地压缩”和出于性能原因跳过某些部分的压缩这两个目标是相互排斥的,因此让我澄清一下这个问题:
- 某些文件和目录集似乎受到压缩的影响(例如,
dpkg
更新后最多需要 30 分钟才能读取包列表)(使用zlib
后压缩btrfs filesystem defragment -c
)禁用压缩可将/var/lib/dpkg/
速度提高 1000 倍。是否有更多此类性能影响的例子(dpkg
数据库性能不佳)。 - 包含源代码(
/src/
和其他代码)的目录是压缩的良好候选,尽管它们大部分在系统编译时被读取,因此 CPU 负载会很高,并且必须进行 CPU 密集型解压缩。如何估计或衡量权衡?
答案1
我认为每个子卷的压缩目前还不可用。从BTRFS 维基:
大多数挂载选项适用于整个文件系统,只有第一个要挂载的子卷的选项才会生效。这是由于缺乏实施,将来可能会发生变化。
这意味着(例如)您无法使用挂载选项设置每个子卷
nodatacow
、nodatasum
或compress
。这最终应该会得到修复,但事实证明,在 Linux VFS 框架内正确实现它很困难。
除非你有相反的信息,否则你的计划不会奏效(暂时)。