du와 df에 대한 다른 출력

du와 df에 대한 다른 출력

좋습니다. 저를 완전히 혼란스럽게 만드는 질문이 있습니다.

df -h
Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
/dev/sda2             3,8G  1,5G  2,2G  41% /
/dev/sda1             122M   13M  103M  11% /boot
tmpfs                1014M     0 1014M   0% /dev/shm
/dev/sdb1            1016M  866M  150M  86% /srv

하지만:

du -hs /srv
55M     /srv

참고용으로만 사용하세요:

mount | grep srv
/dev/sdb1 on /srv type xfs (rw)

그들 중 86%가 나에게 경고 이메일을 보냈는데(의도적인 것임) 이 /srv이메일은 몇 시간 전에 삭제되었습니다.

를 사용하면 du해당 파티션에 있는 올바른 양의 데이터를 얻을 수 있습니다. 그러나 df이는 이해가 되지 않는 것 같습니다. 왜? (이 출력을 기반으로 주기적으로 경고 이메일을 받기 때문에 약간 짜증납니다.)

이것이 중요한지는 확실하지 않지만 CentOS 버전 5.11(최종) 서버를 사용하고 있습니다.

답변1

dfdu각 파일의 크기 정보를 사용하여 파일 시스템에서 할당된 블록을 계산합니다 . 다양한 이유로 차이가 발생할 수 있습니다.

1) 응용 프로그램에서 아직 열려 있는 연결 해제된(삭제된) 파일입니다. lsof +aL1 <filesystem>프로세스를 식별하는 데 도움이 될 것입니다.

2) 마운트 지점 아래에 파일을 숨기면 도움이 될 수 있습니다 du.debugfs

$ sudo debugfs 
debugfs 1.42.12 (29-Aug-2014)
debugfs:  open /dev/<the / file system  device>
debugfs:  cd /boot
debugfs:  ls -l 
 1966081   40755 (2)      0      0    4096 26-May-2016 16:28 .
      2   40555 (2)      0      0    4096 11-May-2016 10:43 ..
 1974291  100644 (1)      0      0       0 26-May-2016 16:28 bob   <---<<< /boot/bob is hidden by /boot fs

삼)스파스 파일실제보다 더 커 보이네요. 할당되지 않은 블록은 파일 크기에 포함되지 않지만 df포함됩니다.

하드 링크는 기만적이지 않습니다.du

답변2

응용 프로그램에 여전히 파일이 열려 있으면 프로세스가 끝날 때까지 디스크 공간이 해제되지 않습니다. 무엇이 사용되고 있는지 확인 /srv하고 중지/다시 시작

관련 정보