No space left on device 에러는 디스크 100% 상태에서 파일 쓰기가 실패할 때 나타납니다. 서버가 멈추기 전에 10분 안에 공간을 확보해야 합니다.
Step 1 — 상황 파악 (1분)
# 전체 디스크 사용률
df -h
# 출력 예
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 50G 50G 0 100% / ← 문제# inode 사용률도 확인 (파일 수 초과도 같은 에러 발생)
df -i
# inode 100%면 파일 수가 너무 많은 것 → 아래 inode 섹션 참고Step 2 — 주범 디렉터리 찾기 (2분)
# 루트 기준 1단계 디렉터리 용량 정렬
sudo du -sh /* 2>/dev/null | sort -rh | head -15
# 용량 큰 디렉터리 안으로 좁혀 들어가기
sudo du -sh /var/* 2>/dev/null | sort -rh | head -10
sudo du -sh /var/log/* 2>/dev/null | sort -rh | head -10주로 큰 디렉터리:
| 위치 | 원인 |
|---|---|
/var/log | 로그 파일 과다 축적 |
/var/lib/docker | Docker 이미지·컨테이너 |
/tmp | 임시 파일 미정리 |
/home | 사용자 파일 |
/var/cache/apt | 패키지 캐시 |
Step 3 — 빠른 정리 (5분)
로그 파일 정리
# journald 로그 (가장 효과 큼)
sudo journalctl --disk-usage
sudo journalctl --vacuum-size=200M # 200MB만 남기기
sudo journalctl --vacuum-time=7d # 7일치만 남기기
# 오래된 로그 파일 찾기
sudo find /var/log -name "*.log" -mtime +30 -size +10M
# 압축 로그(rotated) 삭제
sudo find /var/log -name "*.gz" -delete
sudo find /var/log -name "*.1" -delete패키지 캐시 정리
# Ubuntu/Debian
sudo apt autoremove -y
sudo apt autoclean
sudo apt clean # /var/cache/apt/archives 전부 삭제
# CentOS/RHEL
sudo yum clean all
sudo dnf clean allDocker 정리
# 사용하지 않는 컨테이너·이미지·볼륨·네트워크 일괄 삭제
docker system prune -f
# 볼륨까지 삭제 (데이터 손실 주의!)
docker system prune -f --volumes
# 이미지만 정리
docker image prune -a -f
# 사용량 확인
docker system df대용량 파일 찾기
# 1GB 이상 파일 전체 탐색
sudo find / -xdev -size +1G -printf "%s %p
" 2>/dev/null | sort -rn | head -10
# 500MB 이상
sudo find / -xdev -size +500M -printf "%s %p
" 2>/dev/null | sort -rn | head -20/tmp 정리
# 오래된 임시 파일 삭제 (7일 이상)
sudo find /tmp -mtime +7 -delete
sudo find /var/tmp -mtime +30 -deleteStep 4 — inode 부족 해결
디스크 공간은 있는데 같은 에러가 난다면 inode 부족입니다.
df -i # IUse% 확인
# 파일 수가 많은 디렉터리 찾기
sudo find / -xdev -printf "%h
" 2>/dev/null | sort | uniq -c | sort -rn | head -10주범은 보통:
- PHP 세션 파일:
/var/lib/php/sessions/ - 썸네일 캐시:
/var/cache/ - 메일 큐:
/var/spool/mail/ - Node.js
node_modules내 소규모 파일 수천 개
# PHP 세션 정리 예시
sudo find /var/lib/php/sessions -mtime +1 -delete재발 방지
# logrotate 설정 확인
cat /etc/logrotate.conf
ls /etc/logrotate.d/
# 디스크 사용률 모니터링 (cron으로 알림)
# /etc/cron.daily/disk-alert 파일 생성
cat > /tmp/disk-alert.sh << 'SCRIPT'
#!/bin/bash
THRESHOLD=85
USAGE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "디스크 사용률 ${USAGE}%" | mail -s "[경고] 디스크 부족" [email protected]
fi
SCRIPT
sudo mv /tmp/disk-alert.sh /etc/cron.daily/disk-alert
sudo chmod +x /etc/cron.daily/disk-alert이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.