ramdisk의 du는 df보다 3GB 적게 표시됩니다.

ramdisk의 du는 df보다 3GB 적게 표시됩니다.

나는 du와 df 사이에 약간의 차이가 있다는 것을 알고 있지만 du 내 램디스크는 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

램디스크는 fstab에 정의되어 있으며 기본값은 32GB RAM의 50%입니다.

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

답변1

일부 파일이 램디스크에서 제거되었지만 일부 프로세스에는 여전히 열린 파일 핸들이 있을 수 있습니다. 이를 확인하는 쉬운 방법은 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

당신은 할 수

  • 램디스크에서 삭제되었지만 일부 프로세스나 스레드에 의해 여전히 열려 있는 파일이 있습니까? [이러한 프로세스/스레드가 종료되면 OS는 실제로 이러한 inode를 해제하므로 df는 이전보다 3GB가 적게 보고됩니다.]

  • du는 디렉토리/파일에 있는 많은 항목에 액세스할 수 없습니까? [편집증? 루트킷이거나 숨겨진 악성 콘텐츠일 수도 있습니다...]

내 머리 속에 떠오르는 다른 가능성이 있을 것이라고 확신합니다. [파일 시스템의 메타데이터? 일기인가요? 파일이 많나요? "du"는 "lost+found" 디렉토리 또는 사용 중인 FS에 있는 이에 상응하는 내용을 무시합니까? 등. ]

관련 정보