Skip to Content
문서운영시스템 관리디스크 공간 분석

디스크 공간은 어디로 갔나: 분석과 정리

“디스크가 거의 꽉 찼습니다”는 언젠가 모든 Ubuntu 사용자에게 찾아옵니다. 짜증나는 부분은 df가 가득 찼다는 사실은 알려주지만 무엇이 채웠는지는 알려주지 않는다는 점입니다. 다음은 재현 가능한 순서입니다. 먼저 찾고, 그다음 정리하세요.

1단계: 실제로 얼마나 찼을까

df -h

Use% 열을 보세요. 주로 /(루트 파일시스템)와, 별도 파티션이라면 /home을 확인합니다.

그래픽으로 확인하는 방법은 디스크(Disks)에서 파티션을 선택한 뒤 나오는 사용량 막대, 또는 파일 관리자 사이드바 하단의 용량 막대입니다.

2단계: 큰 디렉터리 찾기

du로도 계산할 수 있지만, 결국 한 단계씩 추측하게 됩니다:

# Size of each subdirectory here, largest first du -h --max-depth=1 . | sort -hr | head

디스크 사용량 분석기(baobab)는 전체 트리를 한 번에 스캔하며 훨씬 읽기 쉽습니다:

sudo apt install baobab baobab /home/$USER

지정한 경로를 스캔하기 시작하고, 완료되면 다음과 같은 화면이 나옵니다:

Disk Usage Analyzer showing a folder list where snap takes 87.29 percent and 113.9 MB and .cache 12.13 percent, next to a rings chart with 130.5 MB in the centre and Rings Chart / Treemap Chart tabs
Disk Usage Analyzer: a sorted list with percentages on the left, the ring chart on the right, and any ring can be clicked to drill down

읽는 방법:

  • 왼쪽 목록은 크기순으로 정렬되어 있으며, 화살표를 눌러 행을 펼치면 정확한 경로를 알 수 있어 링을 클릭하는 것보다 낫습니다
  • 오른쪽 아래의 **트리맵 차트(Treemap Chart)**는 비율을 면적으로 바꿔주므로 가장 큰 블록이 한눈에 보입니다
  • 이 스크린샷은 갓 설치한 VM으로, **snap만으로 87%**를 차지합니다. 버그가 아니라 모든 Snap 앱이 여러 리비전을 보관하기 때문입니다
Tip

~ 스캔은 몇 초면 끝나지만 / 스캔은 전체 시스템을 순회하므로 몇 분이 걸립니다. ~부터 시작하고, 그것으로 사용량이 설명되지 않을 때만 /를 스캔하세요.

3단계: 흔한 원인 정리

오래된 Snap 리비전

Snap은 롤백할 수 있도록 최근 리비전을 몇 개 보관하며, 각각은 프로그램의 완전한 복사본입니다. 위의 87%가 바로 그것입니다.

# Keep 2 revisions instead of the default 3 sudo snap set system refresh.retain=2 # Remove every disabled revision sudo snap list --all | awk '/disabled/{print $1, $3}' | while read name rev; do sudo snap remove "$name" --revision="$rev" done

내려받은 패키지

# Empty /var/cache/apt/archives sudo apt clean # Drop dependencies nothing needs any more sudo apt autoremove --purge

systemd 저널

journalctl 로그는 수 GB까지 커질 수 있습니다:

# Keep at most 200 MB sudo journalctl --vacuum-size=200M # Or keep only 7 days sudo journalctl --vacuum-time=7d

사용자 캐시

브라우저, 썸네일, 앱 캐시는 모두 ~/.cache에 있습니다:

du -h --max-depth=1 ~/.cache | sort -hr | head

삭제하기 전에 생각해 보세요. 브라우저 캐시는 필요할 때 다시 채워지고 보통 로그인 상태를 유지해 주지만, ~/.cache/thumbnails는 언제 지워도 안전합니다.

4단계: 정리만으로 부족할 때

정리는 시간을 벌어줄 뿐이고, 진짜 공간은 확장하거나 옮겨서 만듭니다:

  • 가상 머신: VM 설정에서 가상 디스크를 키운 다음 파티션을 확장합니다(growpart와 resize2fs)
  • 물리 머신: 디스크를 추가하고 포맷·마운트합니다 — 디스크, 마운팅 및 fstab 참고
  • 데이터 이동: ~/Downloads나 Docker 데이터 루트 같은 큰 디렉터리를 새 디스크로 옮기고 fstab으로 마운트합니다

FAQ

df는 가득 찼다는데 du를 더하면 훨씬 적습니다

전형적인 경우입니다. 파일은 삭제되었지만 어떤 프로세스가 여전히 열고 있어서, 그 프로세스가 종료될 때만 공간이 해제됩니다.

# Find deleted files that are still open sudo lsof +L1 2>/dev/null | head

보통의 원인은 아직 실행 중인 로그 기록 프로세스입니다. 해당 프로세스를 소유한 서비스를 재시작하세요(sudo systemctl restart <service>).

“No space left on device”인데 df는 여유 공간을 보여줍니다

아마도 inode 고갈일 것입니다. 작은 파일이 대량으로 있는 경우(메일 스풀, 컨테이너 레이어) 흔합니다.

# Check inode usage df -i

IUse%가 100%라면 이것이 문제입니다. 해결 방법은 같은 종류의 정리이지만, 지워야 하는 것이 큰 파일이 아니라 작은 파일 여러 개라는 점만 다릅니다.

정리 자동화

systemd-tmpfiles가 이미 /tmp와 일부 캐시를 정리합니다. apt 캐시 정리를 예약하려면 cron 항목을 추가하세요:

# Clean the apt cache every Sunday at 03:00 0 3 * * 0 root /usr/bin/apt clean

/etc/cron.d/apt-clean으로 저장하세요.

관련 문서

Last updated on