내 서버에는 130GB 볼륨이 연결되어 있습니다.
여유 디스크 psace를 확인하기 위해 실행하면 df -h -x tmpfs -x squashfs | grep -v /run/shared
다음을 얻습니다.
Filesystem Size Used Avail Use% Mounted on
udev 965M 0 965M 0% /dev
/dev/xvda1 128G 111G 13G 90% /
ncdu
그러나 루트 디렉터리에서 실행하여 디스크 사용량에 대한 세부 정보를 원하면 다음을 얻습니다.
. 55,7 GiB [######### ] /home
. 24,0 GiB [#### ] /var
. 2,4 GiB [ ] /usr
1,0 GiB [ ] swapfile
598,6 MiB [ ] /lib
63,0 MiB [ ] /boot
9,4 MiB [ ] /sbin
9,1 MiB [ ] /bin
. 8,1 MiB [ ] /etc
. 4,3 MiB [ ] /tmp
. 2,7 MiB [ ] /run
! 24,0 KiB [ ] /root
! 16,0 KiB [ ] /lost+found
4,0 KiB [ ] /lib64
e 4,0 KiB [ ] /opt
e 4,0 KiB [ ] /mnt
e 4,0 KiB [ ] /media
! 4,0 KiB [ ] /gandi
. 0,0 B [ ] /proc
. 0,0 B [ ] /sys
0,0 B [ ] /dev
@ 0,0 B [ ] initrd.img.old
@ 0,0 B [ ] initrd.img
@ 0,0 B [ ] vmlinuz.old
@ 0,0 B [ ] vmlinuz
e 0,0 B [ ] /srv
이전 명령에서 반환된 여유 디스크 공간(111GB)과 약 27GB의 차이가 있습니다.
이 차이는 어디에서 오는가?
감사해요.
답변1
이 질문은 꽤 자주 나오네요. 짧은 대답은 다양한 방법을 사용 du
하여 df
데이터를 얻는 것입니다.
파일 시스템은 데이터를 기록하기 위해 파일 시스템에 디스크 블록을 할당합니다. 이 데이터는 대부분의 사용자 수준 프로그램(예: du)에 표시되지 않는 메타데이터라고 합니다. 메타데이터의 예로는 inode, 디스크 맵, 간접 블록 및 슈퍼블록이 있습니다.
그만큼뒤명령은 파일 시스템 메타데이터를 인식하지 못하는 사용자 수준 프로그램인 반면, df는 파일 시스템 디스크 할당 맵을 보고 파일 시스템 메타데이터를 인식합니다. dfdu는 실제 파일 시스템 통계를 얻는 반면 du는 부분적인 그림만 볼 수 있습니다.