ramdisk 上的 du 显示比 df 少 3GB

ramdisk 上的 du 显示比 df 少 3GB

我知道 du 和 df 之间经常存在一些差异,但是当我 du 我的 ramdisk 时,它占用 13G,而 df 显示它使用 16GB。这看起来差别还是蛮大的。这是正常的吗?

[root@zserver2 ramdisk]# du -h .
...
13G .

[root@zserver2 ramdisk]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
none                   16G   16G     0 100% /home/stuff/ramdisk

ramdisk 在 fstab 中定义,默认为我的 32GB ram 的 50%:

# cat /etc/fstab
...
none             /home/stuff/ramdisk   tmpfs   mode=774,uid=500,gid=501  0     0

答案1

很可能某些文件已从 ramdisk 中删除,而某些进程仍具有打开的文件句柄。检查这一点的一个简单方法是使用lsof /home/stuff/ramdisk打开但不再位于文件系统上的文件将标记为“(已删除)”。

例如,我删除了文件“/dev/shm/test”,但它仍然由 python 脚本打开:

% df -h /dev/shm
Filesystem      Size  Used Avail Use% Mounted on
shm             512M  257M  256M  51% /dev/shm
% du -h /dev/shm
84K    /dev/shm
% lsof /dev/shm
COMMAND     PID     USER   FD   TYPE DEVICE  SIZE/OFF  NODE NAME
[...]
python    39756 adaephon    5r   REG   0,13 268435456 44790 /dev/shm/test (deleted)

答案2

你可以

  • 是否有已在 ramdisk 上删除的文件,但仍被某些进程或线程打开? [一旦这些进程/线程退出,操作系统将真正释放这些 inode,因此 df 将报告比以前少 3GB]

  • du 无法访问目录/文件中的很多内容? [偏执?可能是一些 rootkit 或隐藏的恶意内容......]

我确信我的脑海中还会出现其他可能性[文件系统上的元数据?是日记吗?你有很多文件吗? “du”是否会忽略“lost+found”目录中的内容或您使用的任何 FS 上的等效目录? ETC。]

相关内容