du는 df에 표시된 공간을 고려하지 않습니다.

du는 df에 표시된 공간을 고려하지 않습니다.

CentOS 설치 프로그램의 기본 전체 디스크 사용 파티션 구성표에 따라 XFS로 포맷된 16G 드라이브가 있는 vSphere 클러스터에서 CentOS 7.2(최소) 가상 머신이 실행되고 있습니다. 시스템은 테스트 httpd 서비스를 실행 중이지만(모든 소프트웨어는 기본 centos 저장소에 있음) 디스크 공간 사용량이 증가하고 있습니다. 이 부분은 문제의 아파치 오류/액세스 로그(크기 2GB 이상)에서 발생하므로 이러한 긴 부분을 제거하면 일부 공간을 확보할 수 있습니다. 나는 드라이브 공간을 차지하는 것이 무엇인지에 대해 별로 신경 쓰지 않습니다(나는 결국 그 문제를 핵무기로 처리할 것입니다). 그러나 파일 크기를 확인하기 위해 df 및 du를 실행하면 차이가 발생하고 이것이 혼란스러워집니다.

df -h먼저 파일 시스템 사용량을 보기 위해 실행했습니다 .

[root@svrhttp03 httpd]# df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/centos_svrhttp03-root   14G  4.8G  9.1G  35% /
devtmpfs                           902M     0  902M   0% /dev
tmpfs                              912M     0  912M   0% /dev/shm
tmpfs                              912M   97M  816M  11% /run
tmpfs                              912M     0  912M   0% /sys/fs/cgroup
/dev/sda1                          497M  169M  329M  34% /boot
tmpfs                              183M     0  183M   0% /run/user/0

이는 루트 FS에서 4.8G가 사용됨을 나타냅니다.

그런 다음 다음 명령을 실행하여 파일 시스템 루트에 있는 모든 항목의 크기를 확인했습니다.

[root@svrhttp03 httpd]# du -a -h -t 10K / 2> /dev/null | grep -v -E "[A-Z,a-z,0-9]/." | sort -h
16K /home
7.4M    /root
31M /etc
97M /run
143M    /boot
324M    /var
1.3G    /usr
1.9G    /

이는 1.9G만 사용되었으며 보고된 모든 디렉터리 크기의 합이 예상대로 약 1.9G임을 보여줍니다.

dfdu그렇다면 디스크에 있는 데이터의 내용과 선언 사이에서 약 2.9G의 차이를 어떻게 찾을 수 있습니까 ?

답변1

이것이 완전한 대답은 아닐 수도 있지만, 이러한 차이에는 두 가지 원인이 있다는 것을 알고 있습니다.

  • df다음보다 더 많은 공간 표시 du(일명 불가능할 정도로 큰 파일)

스파스 파일이 이로 인해 발생할 수 있습니다. 예: VMWare의 버그로 인해 많은 가상 머신의 /var/log/lastlog가 엄청나게 큰 것으로 보고됩니다(예: 1.2TB). 실제로 그렇게 크지는 않고 단지 희박한 파일일 뿐입니다. 그들을 다루는 것은 그들을 무시하는 것입니다. 실제 사용 가능한 디스크 공간 df보다 항상 더 정확합니다 .du

  • df표시된 것보다 꽉 찬 디스크 표시 du(디스크 공간을 차지하는 보이지 않는 파일이라고도 함)

이에 대한 일반적인 원인은 프로세스가 아직 열려 있는 파일을 삭제하는 것입니다. 이는 일반적으로 업그레이드 후 재부팅 전의 경우입니다. 모든 오래된 라이브러리 파일은 "제거"되어 du또는 에서 표시 되지 않더라도 파일 핸들이 있는 프로세스에 의해 여전히 열려 있습니다 ls.

이를 처리하는 가장 쉬운 방법은 재부팅하는 것이지만 더 영리하게 처리할 수 있습니다. 예를 들어, 먼저 lsof | grep -c DEL삭제된 파일이 몇 개나 아직 열려 있는지 확인하세요. (일정량은 상대적으로 정상이며 반드시 병리적인 것은 아니지만 여전히 디스크 공간 차이에 대해 배울 수 있는 적절한 장소입니다.)

답변2

와일드카드 답변은 절대적으로 정확하지만 그 이유를 말하는 것이 더 합리적일 수도 있습니다.

Du는 결론을 내렸다파일 크기지정된 경로의 모든 파일을 재귀적으로 탐색합니다.가상 FS여기에는 마운트된 여러 파일 시스템이 포함될 수 있습니다.

df 보고서할당된 공간과 할당되지 않은 공간파일 시스템의.

파일에 할당된 공간은 파일 크기와 항상 동일하지는 않습니다. 대부분의 파일 시스템은 1바이트보다 훨씬 큰 블록을 할당하므로 최악의 경우 파일은 전체 블록을 할당하고 그 중 1바이트만 사용할 수 있습니다. 너무 많은 작은 파일은 크기의 합보다 더 많은 공간을 할당합니다. 추가 스파스 파일은 파일의 0이 아닌 데이터 부분만 할당하기 때문에 할당된 공간보다 파일 크기가 더 클 수 있습니다.

관련 정보