우분투 실전 명령어 | ncdu와 du로 디스크 급증 구간 찾기

디스크가 갑자기 90%를 넘기기 시작하면 서비스 장애로 바로 이어질 수 있습니다. 이럴 때는 전체 사용량 확인, 디렉터리별 원인 추적, 정리 우선순위 판단을 빠르게 끝내야 합니다. df, du, ncdu 조합이면 현장에서 바로 대응할 수 있습니다.

언제 쓰는가

  • 서버 디스크 사용률이 급격히 올라간 원인을 찾아야 할 때
  • 로그, 백업, 캐시 중 어디가 용량을 잡아먹는지 구분해야 할 때
  • 배포 전후로 디스크 여유 공간을 점검해야 할 때
  • 임시 파일 정리 전에 삭제 후보를 안전하게 확인해야 할 때

바로 쓰는 명령어

# 파일시스템 전체 사용률 확인
df -h

# 루트 바로 아래 디렉터리별 사용량 큰 순서 확인
sudo du -xhd1 / | sort -hr
# 특정 경로 내부를 인터랙티브하게 탐색
sudo ncdu /var

# ncdu가 없으면 설치
sudo apt update && sudo apt install -y ncdu

핵심 옵션/패턴

  • df -h: 사람이 읽기 쉬운 단위로 파일시스템 사용률 확인
  • du -x: 다른 파일시스템으로 넘어가지 않아서 분석 범위를 고정
  • du -d1: 1단계 하위 디렉터리까지만 보여줘서 원인 파악이 빠름
  • sort -hr: 사람이 읽기 단위(K, M, G)를 유지한 채 내림차순 정렬
  • ncdu: 탐색 화면에서 큰 디렉터리부터 내려가며 삭제 후보를 빠르게 찾기 좋음

명령 출력 예시

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        98G   89G  4.2G  96% /
/dev/sdb1       200G   41G  150G  22% /data
$ sudo du -xhd1 /var | sort -hr | head
24G /var
12G /var/log
7.5G /var/lib
3.1G /var/cache

자주 하는 실수

  • du를 루트에서 무심코 실행해 NFS나 별도 마운트까지 같이 스캔하는 경우
  • 용량 원인 확인 전에 오래된 로그를 한꺼번에 삭제해 장애 분석 단서를 잃는 경우
  • /var/lib 같은 서비스 데이터 경로를 캐시로 오해하고 지우는 경우
  • 열린 로그 파일을 지웠는데 프로세스가 파일 핸들을 잡고 있어 공간이 즉시 안 돌아오는 경우

검증 방법

# 정리 전후 사용률 비교
before=$(df --output=pcent / | tail -1)
echo "before: $before"

# 정리 작업 수행 후
after=$(df --output=pcent / | tail -1)
echo "after:  $after"
# 삭제했는데 공간이 안 늘면 열린 삭제 파일 확인
sudo lsof +L1 | head

# 상위 디렉터리 재확인
sudo du -xhd1 /var | sort -hr | head -20

운영 팁

  • 로그는 바로 삭제보다 압축과 보관 주기 조정부터 적용하는 편이 안전합니다.
  • 정리 작업 전에 df -h, du 결과를 짧게라도 기록해 두면 재발 분석에 도움이 됩니다.
  • 야간에 급한 정리를 했으면 다음 날 logrotate, 백업 보관 기간, 모니터링 임계치를 같이 점검하세요.

출처

  • GNU Coreutils Manual
  • ncdu 공식 문서
  • Ubuntu Server Guide