btrfs会在启用压缩时自动压缩现有文件吗?

我在Ubuntu 12.04 LTS安装程序中选择了btrfs作为my / filesystem的格式。 安装完成后,我将compress=lzo添加到/etc/fstab的mount选项并重新启动。

现在的文件会自动压缩,还是我必须明确做一些事情才能导致这种情况发生?

您必须运行btrfs fi defragment以强制重新压缩现有数据。 否则,只会压缩新数据。

来自FAQ :

…考虑使用-o compress重新安装,并在原地重写特定文件,或运行btrfs fi defragment重新压缩所有内容。 可能还要等一下。

我已经做了Norbert Fabritius所说的,但我没有注意到现有文件中的任何压缩 – btrfs fi defragment = 658MB 之前 df -h / df -h / btrfs fi defragment = 658MB之后。 新文件没问题。 搜索一下给我这个引用:

运行这个:

# btrfs filesystem defragment ~/stuff

不会对目录的内容进行碎片整理。

这是设计的。 btrfs fi defrag对传递给它的单个文件系统对象进行操作。 这意味着该命令仅对目录>对象所拥有的元数据进行碎片整理,而不对目录的内容进行碎片整理。 如果你想对目录的内容进行碎片整理,那么这样的东西会更有用:

# find -xdev -type f -exec btrfs fi defrag '{}' \;

在此之后,我/它占用656MB – 没有什么大的,但肯定有压缩。

资料来源: https : //btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

希望这有帮助。

对不起我的英文。

根据Oracle的文档,您可以通过使用-c,-clzo或-czlib选项对其中的每个文件进行碎片整理来压缩现有在线文件​​系统上的现有文件。 LZO推荐用于速度。

 find / -xdev \( -type f -o -type d \) -exec btrfs filesystem defragment -v -clzo -- {} + 

这使用find命令在根文件系统中的每个文件上运行btrfs碎片整理程序(由开头的“find”命令后面的斜杠给出)。 如果你有其他子体积,你可以再次使用子体积的路径(例如,我有一个在/ home),而不是单斜杠。

您需要root权限,因此如果需要,请将sudo添加到前端。

看到:

根据https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options,可以使用以下压缩算法:

 compress,compress-force Enable compression. Starting with kernel 2.6.38 you can choose the algorithm for compression: - compress=zlib - Better compression ratio. It's the default and safe for olders kernels. - compress=lzo - Faster compression. - compress=no - Disables compression (starting with kernel 3.6). compress-force= - Enable compression even for files that don't compress well, like videos and dd images of disks. The options compress-force=zlib and compress-force=lzo works for kernels >2.6.38. Note that old (before 2012) btrfs-progs versions will probably fail some operations (eg fsck) on filesystems with LZO compression. 

注意:这篇文章的答案是另外一个问题,下面提到了哪种类型的压缩算法……所以请不要怪我。

据ArchWiki说 :

提示:也可以在不使用compress mount选项的情况下为每个文件启用compress ; 只需将chattr +c应用于该文件即可。 应用于目录时,它将导致新文件在到达时自动压缩。

非常好! 上帝保佑BTRFS!

另外,来自BTRFS维基 :

我可以在不使用compress mount选项的情况下强制压缩文件吗?

是。 实用程序chattr支持设置文件属性c,标记inode以压缩新写入的数据。

Btrfs中默认启用压缩,因此除非您明确禁用它,否则应对其进行压缩。