ZFS压缩下的文件大小悖论:逻辑块与物理块之争

2025-04-17

在ZFS文件系统启用压缩的情况下,一个256KB的零文件(使用`dd`命令创建)展现出令人费解的现象:`ls -l`显示其大小为256KB,但`ls -s`和`ls -slh`却显示其大小远小于实际大小,甚至接近于0。这是因为ZFS的高效压缩使得物理块数量极少。文章探讨了文件大小的三种度量方式:逻辑大小(字节数)、物理块数和逻辑块数,并指出POSIX标准的`st_blocks`字段并没明确规定应该报告哪种大小,导致文件在不同文件系统间移动时,`st_blocks`值可能发生变化,甚至可能导致文件大小膨胀无法适应新的文件系统。

开发