我有两个相同的文件,位于两个不同的 NFS 文件系统上。根据ls -l
或du -b
,它们的大小相同,但与du -k
或 的差异ls -s
为 114072 个块,即 16.7%。什么可能导致如此大的差异?
$ du -k /path/to/nfs1/somefile.dat /path/to/nfs2/somefile.dat
786432 /path/to/nfs1/somefile.dat
672360 /path/to/nfs2/somefile.dat
$ cmp /path/to/nfs1/somefile.dat /path/to/nfs2/somefile.dat
$
答案1
可能是因为文件稀疏。如果文件包含尚未写入的块(它们仍为 0),则可能会发生这种情况。系统内部不会分配所有空间,直到整个文件至少被写入一次。
如果文件系统支持,则默认情况下 Linux 会自动进行优化。大多数文件系统都支持。但要考虑到这些文件最终可能会增长到其声明的大小。
有关更多信息和使用“dd”命令重现它的方法(打开文件,寻找远处,只写一点点): http://en.wikipedia.org/wiki/Sparse_file