我终于找到了如何在 btrfs 中启用压缩的方法,并且也想这样做。但是,作为我的主要驱动器,我真的不想冒着可能损坏硬盘的风险进行更改。
我读到的所有内容都表明这些选项可以安全地更改,因为它们仅适用于新写入,但我希望得到更多保证......
能否粗略解释一下压缩算法的工作原理?它是针对每个文件(我认为必须如此?)
打开后,有哪些选项/命令可以重新压缩硬盘?
答案1
我只能根据不同相关 btrfs 站点中可用的信息来回答。正如您所说,使用压缩相对安全,因为压缩仅适用于新写入的内容。至于 FS 的稳定性,它仍处于测试阶段,尽管目前似乎相当稳定。关于重新压缩整个磁盘,我不确定您是否可以做到(我还没有看到)。编写这样的工具应该不难。现在最明显的方法是将数据从分区复制/移动到其他磁盘/分区,然后重新复制,但这意味着在另一个磁盘或分区中有足够的空间来进行复制(以及相当多的时间)...
答案2
您可以通过触发碎片整理来启动对 btrfs 文件系统的压缩,该文件系统在挂载时写入了未压缩的文件:
sudo btrfs fi defragment /path
请注意,路径可以是 btrfs 卷内的目录或文件,您不需要一次完成所有操作。因此,您可以将包含高度可压缩文件(例如文档)的文件夹作为目标,而不是包含压缩性较差的文件(例如图像、音频、视频和压缩档案(zip 等))的文件夹。
答案3
如果任何读过这篇文章的人想要在不卸载实时已挂载的 btrfs 文件系统的情况下激活压缩,我只需执行以下操作,似乎就可以了:
1) 编辑/etc/fstab
以包含compress=zstd
在文件系统的行的选项部分中。(我正在使用zstd
压缩,您可能更喜欢其他压缩算法。)
2) 运行mount -o remount /
。 (将其替换/
为文件系统的挂载点。在我的例子中,它是/
。)
注意:实际上,我在同一台设备上有两个 btrfs 子卷(/
和/home
)。尽管我只运行了一次,但似乎两个子卷上都已激活压缩。我在 中向两行都mount -o remount /
添加了。compress=zstd
/etc/fstab