重新挂载带有压缩的 btrfs 是否安全?

重新挂载带有压缩的 btrfs 是否安全?

我终于找到了如何在 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

相关内容