커뮤니티 솔루션

CasaOS에서 ncdu를 사용해 저장 공간을 가득 채우는 항목 찾기

A 2024 CasaOS tutorial introduced ncdu as a quick way to find large folders and mystery disk usage.

CasaOS에서 어떤 폴더가 실제로 디스크 공간을 차지하는지 찾아야 할 때 ncdu를 사용하되, 작은 컨테이너 파일 시스템만이 아니라 올바른 호스트 경로를 검사하세요. 최신 Linux 시스템의 경우 업스트림 프로젝트에서 정적 바이너리를 제공하며, 대화형 디스크 사용량 분석에는 ncdu 2.x가 가장 빠른 방법입니다.

2024년 BigBear 튜토리얼은 입문 자료로 유용하지만, ncdu를 사용하기 위해 특별한 앱 스토어 컨테이너가 필요한 것은 아닙니다. 스토리지 문제를 해결할 때는 호스트 터미널이나 대상 경로를 명시적으로 읽기 전용 마운트한 컨테이너가 더 투명합니다.

ncdu의 장점

ncdu는 대화형 디스크 사용량 분석 도구입니다. 디렉터리를 검사하고 크기순으로 정렬하며, 수동으로 명령을 연이어 입력하지 않고도 대용량 폴더를 단계적으로 확인할 수 있습니다. du 명령을 사용합니다.

현재 ncdu 프로젝트 페이지에는 x86_64, ARM, AArch64용 ncdu 2.x 정적 바이너리가 나와 있습니다.

실제로 가득 찬 파일 시스템부터 시작하기

실행:

df -h

여유 공간이 부족한 마운트를 식별하세요. 그런 다음 무작정 다음 경로에서 ncdu를 실행하는 대신 해당 마운트를 검사하세요. /.

CasaOS 데이터 경로 검사

일반적인 예:

ncdu /DATA
ncdu /media
ncdu /var/lib/docker

정확한 경로는 설치 방식에 따라 다릅니다. Docker 또는 AppData가 원인으로 의심된다면 해당 위치를 직접 검사하세요.

Docker 내부를 검사할 때 주의하세요

/var/lib/docker 에는 이미지 레이어, 쓰기 가능한 레이어, 로그, 메타데이터가 포함되어 있습니다. ncdu는 어떤 디렉터리가 큰지 보여줄 수 있지만, 임의로 오버레이 파일을 수동 삭제하면 Docker 상태가 손상될 수 있습니다.

ncdu에서 내부 레이어 디렉터리를 삭제하는 대신 이미지, 컨테이너, 캐시에 Docker용 정리 명령을 사용하세요.

컨테이너화된 ncdu의 가시성에는 한계가 있습니다

컨테이너 내부에서 ncdu를 실행하면 해당 컨테이너에 마운트한 경로만 볼 수 있습니다. 컨테이너 루트를 검사해도 전체 CasaOS 디스크 사용량은 거의 알 수 없습니다.

Docker를 선호한다면 대상 호스트 경로를 읽기 전용으로 마운트하고 해당 마운트를 검사하세요. 문제를 진단하는 동안에는 삭제 기능을 비활성화해 두세요.

대용량 AppData 폴더부터 찾기

셀프 호스팅 앱은 썸네일, 로그, 캐시, 데이터베이스, 다운로드한 메타데이터를 축적할 수 있습니다. Docker 스토리지 가이드에서는 컨테이너 이미지가 작더라도 호스트의 AppData가 커질 수 있는 이유를 설명합니다.

공간을 많이 차지하는 일반적인 원인

  • 미디어 트랜스코딩 캐시;
  • 컨테이너 JSON 로그;
  • 데이터베이스 파일;
  • 사진 썸네일 및 머신러닝 인덱스;
  • 다운로드 클라이언트의 미완료 폴더;
  • 오래된 백업;
  • Docker 이미지 및 빌드 캐시.

폴더를 소유한 대상을 알기 전에는 삭제하지 마세요

ncdu로 용량이 큰 경로를 식별한 다음 어떤 애플리케이션이 이를 소유하는지 확인하세요. 활발히 기록 중일 수 있는 데이터를 삭제하기 전에는 관련 애플리케이션을 중지하세요.

제외 항목을 사용해 대규모 스캔을 더 유용하게 만들기

네트워크 공유, 백업 또는 외부 디스크가 마운트된 서버에서는 잘못된 트리를 스캔하면 시간이 오래 걸리고 관련 없는 스토리지가 하나의 결과에 섞일 수 있습니다. df에 표시된 정확한 마운트 지점에서 시작하세요. df -h 그리고 원격 마운트가 문제인 경우가 아니라면 해당 마운트로 들어가지 않도록 하세요.

반복적인 문제 해결을 위해 ncdu는 스캔 데이터를 내보낼 수 있으므로, 매번 대규모 파일 시스템을 다시 스캔하는 대신 시간에 따른 증가량을 비교할 수 있습니다.

삭제되었지만 열려 있는 파일 이해하기

때로는 df 파일 시스템이 가득 찼다고 보고하지만 ncdu에서 이를 설명할 만큼 충분한 표시 파일을 찾을 수 없는 경우입니다. 한 가지 원인은 프로세스가 이미 삭제된 파일을 계속 열어 두고 있는 것입니다. 디렉터리 항목은 사라졌지만 프로세스가 파일을 닫을 때까지 블록은 할당된 상태로 남아 있습니다.

ncdu 총계와 df 크게 일치하지 않는다면 다음과 같은 도구로 열려 있지만 삭제된 파일을 검사하세요. lsof +L1 호스트에서 사용할 수 있는 경우. 무엇인지 파악한 후 담당 서비스를 다시 시작하면 공간이 해제될 수 있습니다.

ncdu를 정리 정책이 아닌 측정 도구로 사용하세요

용량이 큰 캐시는 안전하게 삭제할 수 있지만, 비슷한 크기의 데이터베이스 디렉터리는 중요할 수 있습니다. ncdu의 가치는 공간이 어디에 사용되었는지 보여주는 데 있으며, 해당 공간을 어떻게 회수할지는 소유 애플리케이션이 결정해야 합니다.

FAQ

ncdu로 파일을 삭제할 수 있나요?

예. 하지만 삭제할 때는 주의하세요. Docker 내부 데이터, 데이터베이스, 애플리케이션이 관리하는 데이터는 애플리케이션 자체의 정리 절차를 우선 사용하세요.

ncdu에 표시되는 공간이 df보다 적은 이유는 무엇인가요?

삭제되었지만 열려 있는 파일, 액세스할 수 없는 디렉터리, 파일 시스템 메타데이터, 스냅샷 또는 스캔한 마운트 외부의 데이터 등이 원인일 수 있습니다.

ncdu를 설치하려면 BigBearCasaOS가 필요한가요?

아니요. 이는 여러 패키징 옵션 중 하나입니다. 현재 업스트림에서는 독립 실행형 정적 바이너리도 제공합니다.

어디부터 먼저 스캔해야 하나요?

사용 df -h 전체 마운트를 식별한 다음 ncdu로 해당 경로를 정확히 스캔합니다.