💻 사건의 시작
EC2 개발 장비의 서버 프로그램을 재시작하던 중 " No space left on device " 에러가 발생하였다.
디스크가 꽉 찬 상황인데, 실제로 어떤 파일들이 얼마나 공간을 차지하고 있는지부터 확인이 필요했다.
♦️ 디스크 상태 확인
먼저 디스크 용량을 확인하는 명령어를 실행했다.
df -h
-- 디스크 용량 확인 명령어
루트 디스크(/dev/xvda1)가 100GB인데, 100% 꽉 찬 상태였다.
♦️ 원인 분석 (어디서 공간을 많이 쓰는지 확인)
다음으로, 어떤 폴더가 가장 많은 공간을 쓰고 있는지 분석했다.
sudo du -xh / | sort -h | tail -n 30
이 명령어는 디렉터리별 사용량을 합산해서, 상위 30개 폴더를 보여주는 명령어다.
실제로 실행해보니, 아래 폴더들이 주범으로 나타났다.
폴더 위치 | 크기 | 내용 |
/var/lib/mysql | 21G | MySQL 데이터 파일 |
/home/ec2-user/.pm2/logs | 1.5G | PM2 로그 파일 |
/var/log | 2.4G | 시스템 로그 |
/home/ec2-user/.npm/_cacache | 약 800MB | npm 캐시 파일 |
♦️ 실행
npm 캐시는 개발환경에서 패키지 설치할 때 쌓이는 임시파일이다. 이건 바로 삭제해도 큰 문제가 되지 않아 바로 삭제했다.
🗑️ 삭제 명령어
npm cache clean --force
삭제 후 확인해보니 용량이 124k로 줄었다.
✨ 마무리
서버 운영 중 디스크 꽉 찼을 때, 당황하지 말고 위의 과정을 순서대로 따라가면
용량을 어디서 많이 쓰는지 원인분석이 가능하고 공간 확보까지 할 수 있다.
클라우드 환경에서는 디스크 확장도 방법이지만, 불필요한 캐시나 정리부터 하는 게 경제적이고 효율적이다.