핵심 요약
"No space left on device"는 ① 큰 파일/로그가 쌓였거나 ② 삭제했지만 프로세스가 잡고 있는 파일(df는 차 있는데 du는 적음) ③ inode 고갈(용량은 남았는데 파일 못 만듦) 중 하나다. df로 어느 마운트가 찼는지부터 본다.
1. 추적
df -h # 어느 파티션이 찼나
df -i # inode 고갈 확인
du -xh / 2>/dev/null | sort -h | tail -20 # 큰 디렉토리 top
# 삭제됐지만 열린 파일
lsof +L1 | sort -k7 -n | tail
2. 흔한 범인
| 증상 | 원인 |
|---|---|
| du는 적은데 df는 가득 | 삭제됐지만 열린 로그 → 프로세스 재시작 |
| 용량 남는데 못 씀 | inode 고갈(작은 파일 폭증) |
| 특정 폴더 비대 | 로그·캐시·코어덤프 |
3. 함정
> logfile로 비우지 말고, 열린 파일이면 프로세스 재시작이나 logrotate copytruncate- rm 후에도 안 줄면 그 파일을 연 프로세스를 찾아 재시작
- 도커 환경은
docker system df·prune로 이미지/볼륨 정리
자주 묻는 질문
du와 df 결과가 다른데요?
삭제됐지만 프로세스가 아직 핸들을 쥔 파일은 df엔 잡히고 du엔 안 보입니다. lsof +L1로 찾아 해당 프로세스를 재시작하면 공간이 반환됩니다.
용량은 남았는데 파일이 안 만들어져요.
inode 고갈입니다. df -i로 확인하고, 작은 파일이 폭증한 디렉토리(세션·캐시·메일 큐)를 정리하세요.

댓글 0