이것대개디렉토리 크기를 얻는 방법은 다음과 같습니다.
du -hs /path/to/directory
그러나 작동하지 않으며 이것이 btrfs 문제인 것으로 의심됩니다. 하위 모듈이 포함된 하위 디렉터리의 크기가 디스크 자체의 전체 크기를 초과하는 것으로 보고되었습니다.
그러나 gnome 디스크 유틸리티를 사용하여 디스크가 60% 이상 비어 있는지 확인할 수 있습니다.
추가 n
검사를 통해
du -h --max-depth=n /path/to/folder
큰 하위 디렉터리 크기를 btrfs 하위 볼륨으로 줄일 수 있었기 때문에 문제가 하위 볼륨과 관련이 있다고 생각합니다.
답변1
예, BTRFS 관련 문제일 수 있습니다.
일반적으로 클래식은 du
BTRFS에 대해 신뢰할 수 없으며 종종 이와 같이 터무니없어 보이는 결과를 제공합니다. 이는 궁극적으로 시스템 호출(각 파일이 디스크에서 얼마나 많은 공간을 사용하고 있는지 확인하는 데 사용됨 )이 링크, 스냅샷, 투명 압축 또는 stat()
BTRFS에서 제공하는 du
표준 POSIX 의미 이외의 참조를 알지 못하거나 신경 쓰지 않기 때문입니다.
이에 따라 du
참조 링크를 통해 파일 간에 공유되는 모든 블록이 계산됩니다(여기에는 중복 제거된 모든 블록, 복제 ioctl을 사용하여 파일을 복사한 결과로 공유된 블록 및 스냅샷의 일부인 모든 블록이 포함됩니다).파일당이는 블록에 대한 참조를 보유하므로 du
실제 공간 사용량보다 훨씬 더 큰 명백한 디스크 사용량을 표시할 수 있습니다.
모든 공유 공간의 사용량을 정확하게 계산하므로 btrfs filesystem du
대신 사용하는 것이 좋습니다 .du
또한 그놈 디스크 유틸리티는 df
BTRFS를 처리할 때 완전히 신뢰할 수는 없지만 다른 이유로 인해 신뢰할 수 없습니다(참조 링크는 올바르게 고려하지만 BTRFS에서 사용하는 2단계 할당자를 이해하지 못하므로 실제로 디스크를 이동할 수 있음). major)는 아무 것도 쓸 수 없는 경우에도 비어 있습니다). 따라서 du
파일 시스템의 루트에서 실행하여 얻은 것과 다른 사용 값을 표시하는 경우가 많습니다 . ( du -x
마운트 지점처럼 보이기 때문에 하위 볼륨 경계를 확장하지 않으므로 를 사용하면 상황이 더욱 악화됩니다 .)
답변2
Austin이 언급했듯이 이와 같은 도구는 du
파일 및 하위 볼륨 공유의 범위를 해석할 수 없습니다. 이를 위해서는 btrfs를 지원하는 도구가 필요합니다.
저는 이 목적을 위해 특별히 도구를 작성했습니다.
https://github.com/CyberShadow/btdu
btdu는 하위 볼륨 또는 기타 공유 파일 구조를 포함하는 디렉터리에서 사용되는 고유 데이터의 총량을 표시할 수 있습니다. 사용하려면 를 실행하고 sudo btdu /path/to/your/volume/root
충분한 데이터가 축적될 때까지 기다린 후 원하는 디렉터리에 놓습니다.