如何在安装 Linux 时使用 Btrfs 压缩选项?

如何在安装 Linux 时使用 Btrfs 压缩选项?

我一直在尝试使用 SSD 驱动器的 Btrfs,并且喜欢在 fstab 中设置的压缩选项。

然而,这仅适用于我安装操作系统并修改 fstab 文件后创建的文件。

我想要将压缩应用于系统上的所有文件,看看它是否可以改善启动时间和应用程序启动时间。

是否有人知道如何在安装前或安装后将更改应用于所有文件?

答案1

我相信你必须逃跑

btrfs fi defragment

使用压缩方式安装 FS 后。

看一下这个:https://askubuntu.com/questions/129063/will-btrfs-automatically-compress-existing-files-when-compression-is-enabled

答案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

来自 Wiki 的 BTRFS 用例,使用递归参数对目录/挂载点进行碎片整理

BTRFS v3.12 的变更日志条目

相关内容