df와 du가 다른 출력을 나타내는 이유는 무엇입니까?


8

내가 명령을 실행하면 df -h /tmp그것은 말한다 디스크 사용률이 100 % 지만하려고 할 때 du -sh /tmp그것을 말한다 디스크 사용률은 2 %입니다 .

이 명령이 다른 출력을 나타내는 이유,이 두 명령의 작동 방식 및이 문제에 대한 해결책은 무엇인지 알고 싶습니다.

컨텍스트 : /tmp 자체 파일 시스템에 설치되어 있습니다. VPS 계정에서 Ubuntu 12.04 서버 에디션을 사용하고 있습니다. 이 문제로 인해 일부 프로그램 /tmp에 따르면 100 %의 사용률은의 df여유 공간에 대해 불평 /tmp합니다.

답변:


10

du 도달 가능한 inode를 스캔하고 크기를 계산하여 여유 공간을보고합니다.

파일이 열려있는 동안 파일을 작성하고 연 다음 나중에 삭제하면 파일을 연 프로그램은 파일에 계속 액세스 할 수 있으며 디스크의 해당 메모리 위치에 대해 쓰기 및 읽기를 수행 할 수 있습니다. du그런 열린 파일을 설명 df하지는 않지만 그렇지 않습니다.

간단한 재시작으로 / tmp를 비우고 문제를 해결해야합니다.

다른 방법은 열린 파일을 스캔하고 삭제 된 파일을 해제하지 않은 프로세스를 다시 시작하거나 종료하는 것입니다.


1

루트 파일 시스템의 일부 파일은 마운트 지점 뒤에 숨겨 질 수 있습니다. 해당 장치가 마운트되지 않은 경우 마운트 지점 아래에 파일을 작성할 수 있으며 장치가 다시 마운트되면 du 명령으로 파일을 계산하지 않습니다. du와 df 결과 사이에 큰 차이가있을 때 매우 가능한 문제입니다.


빙고. 이것이 나를위한 원인이었습니다.
jdhildeb

-1

sudo실행할 때 확인하십시오 du. 예를 들어을 실행 du -hs /*하면을 추가하지 않으면 실제 디스크 사용량이 표시되지 않습니다 sudo.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.