나는 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에 있는 이에 상응하는 내용을 무시합니까? 등. ]