我一直在尝试使用 SSD 驱动器的 Btrfs,并且喜欢在 fstab 中设置的压缩选项。
然而,这仅适用于我安装操作系统并修改 fstab 文件后创建的文件。
我想要将压缩应用于系统上的所有文件,看看它是否可以改善启动时间和应用程序启动时间。
是否有人知道如何在安装前或安装后将更改应用于所有文件?
答案1
我相信你必须逃跑
btrfs fi defragment
使用压缩方式安装 FS 后。
答案2
安装时您可以发出:
mount -o remount,compress=lzo
通常,您必须在安装程序开始安装东西时执行此操作(也许您会错过一个或两个文件,但没什么大不了的)。您可以在安装阶段之前检查安装程序是否已经安装了文件系统。
还要确保更新已安装系统上的 /etc/fstab。我使用以下选项来提供其他一些改进:
compress=lzo,ssd,relatime,space_cache,inode_cache,autodefrag
您还可以尝试使用压缩力=lzo安装而不是压缩=lzo,它可以确保即使压缩效果不佳的文件也能被压缩。这会使写入速度变慢,但由于它是一次性安装,所以这可能是值得的。但我不确定它是否会改善读取速度。
我已经看到了另一种方法,它涉及重命名 mount.btrfs 二进制文件并用脚本替换它,但是当我在 Ubuntu 下执行此操作时,它搞砸了,因为它通常安装到子卷 @ 和 @home,但所有内容都被转储到文件系统的根目录中。
或者,您可以安装然后使用碎片整理程序,但您必须单独对每个文件进行碎片整理,因为该命令不是递归的。这对于升级到可能出现在较新版本的 btrfs、snappy 和 lz4 中的新压缩方法非常有用。从 / 目录运行以下命令。
find -xdev -type f -exec btrfs fi defrag '{}' \;
答案3
就像许多与软件有关的问题一样 - 答案会根据提问/回答的时间而变化。我正在更新答案,以帮助任何人通过 Google 搜索进入主题。:)
btrfs 3.12 及更高版本在安装后压缩目录/挂载点的正确答案(碎片整理所需的递归选项是在 2013 年 11 月发布的 btrfs 3.12 中添加的):
btrfs filesystem defragment -c -r MOUNTPOINT
以下是 btrfs 版本 4.4 的 cli 的当前选项:
btrfs 文件系统碎片整理
用法:btrfs 文件系统碎片整理 [选项] | [|...]
Defragment a file or a directory
-v be verbose
-r defragment files recursively
-c[zlib,lzo] compress the file while defragmenting
-f flush data to disk immediately after defragmenting
-s start defragment only from byte onward
-l len defragment only up to len bytes
-t size target extent size hint