为什么du -sh输出内存映射文件的大小错误?

时间:2018-04-21 09:30:54

标签: c++ linux mmap nfs du

我在NFS(CentOS7)上创建了一个内存映射文件。

du -sh 显示的文件大小远小于 ls -la stat 命令所显示的内容。

du -sh foo.dat
96M     foo.dat

du -bh 输出与 ls -la stat 命令输出匹配。

du -bh foo.dat
718M    foo.dat

ls -la 给出正确的字节数。

 ls -la foo.dat
-rw-r--r-- 1 david users 752562176 Apr 20 03:58 foo.dat

stat 命令输出如下

stat foo.dat
  File: ‘foo.dat’
  Size: 752562176       Blocks: 196555     IO Block: 131072 regular file
Device: 31h/49d Inode: 26822713    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1035/  david)   Gid: (  100/   users)
Access: 2018-04-21 03:55:58.305448765 -0500
Modify: 2018-04-21 03:58:05.293052537 -0500
Change: 2018-04-21 03:58:05.293052537 -0500
 Birth: -

我想知道为什么 du -sh 报告错误的尺寸。如果我在/ tmp中创建一个本地磁盘的内存映射文件,情况就不是这样了。

感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:-1)

我认为du显示的尺寸较小,因为我正在创建稀疏文件。我不按顺序写它