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中默认启用压缩,因此除非您明确禁用它,否则应对其进行压缩。