这是针对客户Linux在VMware工作站下。
我在作为compress=zstd,noatime,nodiratime,space_cache,ssd,discard挂载的btrfs上尝试了D1。然而,图像只是扩大到最大的大小,不能缩小。
看来压缩的btrfs不会将零文件写成零。
我发现在https://lwn.net/ml/linux-btrfs/aed736d257f7e91cf3b0cf4d1fdfc247212d8bf7.1524233244.git.dsterba@suse.com/的零填充上有一些ioctl补丁。
我如何从来宾Linux调用BTRFS_CLEAR_OP_ZERO_NOUNMAP?
发布于 2020-09-08 14:24:52
据我所知,没有任何直接方法可以用零填充Btrfs文件系统中未使用的空间。但是,您可以通过使用零填充文件填充文件系统,然后删除它们,从而实现同样的目标:填充是这样做的一种方法:sfill -llz \dev\X。填充是安全删除工具包:https://github.com/GIJack/secure_删除的一部分。
但是正如您注意到的,在启用文件系统压缩时,这是行不通的,因为没有什么比一堆零更容易压缩了。您必须在没有compress=zstd挂载选项的情况下重新挂载文件系统,才能使其工作。或者使用btrfs property set compression ""将no压缩标志设置为Btrfs文件系统的根,如果您的系统位于Btrfs子卷上,则必须先挂载文件系统根。该标志目前只能用chattr -c删除。
VMWare图像不会自动缩小,但是有一些方法可以缩小它们。
https://unix.stackexchange.com/questions/605395
复制相似问题