ncdu가 df와 다른 데이터를 보고하는 이유는 무엇입니까?

ncdu가 df와 다른 데이터를 보고하는 이유는 무엇입니까?

df -h인쇄:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  6.6G   50G  12% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  9.0M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   54M  199M  22% /boot
tmpfs           391M     0  391M   0% /run/user/1000

또한 ncdu /인쇄하십시오:

Total disk usage:   1.8 GiB  Apparent size:   1.8 GiB  Items: 176500

보고서 중 하나는 6.6+ GiB를 사용하는 반면 다른 보고서는 6.6+ GiB만 사용하는 이유는 무엇입니까 1.8 GiB?

답변1

의 출력은 df파일 시스템 수준 통계를 기반으로 하는 반면 ncdu일반 은 물론 du디렉터리 검색, 개별 파일 크기 읽기 및 요약을 통해 결과를 생성합니다.

du-style 명령이 루트가 아닌 사용자로 실행되는 경우 모든 디렉토리에 대한 전체 액세스 권한이 필요하지 않으므로 모든 항목이 표시되지 않을 수 있습니다( sudo ncdu이 예에서 사용됨).

실행해 보고 du -hs /그 결과를 보고된 "총 디스크 사용량"과 비교해 보십시오 ncdu /. 유사한 결과를 찾을 수도 있습니다. 을 사용하면 du명령이 액세스할 수 없어 고려할 수 없는 여러 디렉터리에 대한 메시지가 표시될 수도 있습니다. 그것도 사실일 수 ncdu있지만 오류 메시지를 숨길 뿐입니다.

ncdu또한 최신 Linux 배포판의 가상 파일 시스템을 이해하도록 업데이트되지 않아 혼란스러울 수도 있는 것 같습니다 . 내 Debian 10 시스템에서는 ncdu /다음과 같이 보고합니다.

Total disk usage:  75.6 GiB  Apparent size: 128.1 TiB  Items: 469143

내가 아는 한 "겉보기 크기"는 분명히 의미가 없고 쓸모가 없습니다. "총 디스크 사용량"은 내가 얻은 것과 거의 같습니다 du -hs /. 그러나 여기에는 RAM 기반 가상 파일 시스템( devtmpfs, tmpfs)이 많이 포함되어 있으므로 그 숫자도 그다지 유용하지 않을 것입니다.

그러나 명령을 하나의 파일 시스템(예: )으로 제한하면 ncdu -x /더 합리적인 결과를 얻을 수 있는 것 같습니다. 이 파일 시스템은 반올림 오류 내에서 to의 출력과 일치하며 파일 시스템에 du -shx /출력과 일치하기 위해 약간의 공간이 필요할 수 있다는 점을 기억합니다. 그것을 저장할 때 . df -h내부 메타데이터.

오류가 발생할 수 있는 또 다른 원인은 BTRFS 파일 시스템 스냅샷과 같은 고급 파일 시스템 기능을 사용하는 경우입니다. 물론 루트 파일 시스템에는 1.8GiB의 파일만 있을 수 있지만 해당 파일 시스템에 이전 상태의 스냅샷 2개도 포함되어 있는 경우 사용되는 총 디스크 공간은 보유한 파일 크기 합계의 3배에 달할 수 있습니다. (및 du명령과 같은 것) 예상대로.

df명령은 파일 시스템 드라이버를 조사하여 정보를 얻기 때문에 보고하는 큰 "사용된" 값에는 액세스하는 데 올바른 방법을 사용하지 않는 한 표시되지 않을 수 있는 스냅샷이 포함될 수 있습니다.

관련 정보