Linux Disk Full(No space left on device) 오류란?
Linux 서버를 운영하다 보면 가장 자주 발생하는 문제 중 하나가 디스크 공간 부족(Disk Full) 오류입니다.
대표적인 오류 메시지는 아래와 같습니다.
No space left on device
이 메시지는 단순히 “하드디스크 용량이 부족하다”는 의미처럼 보이지만 실제 원인은 다양합니다.
서버에서는 로그 파일 증가, Docker 이미지 누적, 임시 파일 증가, inode 부족 등 여러 가지 이유로 디스크 부족 문제가 발생할 수 있습니다.
특히 웹 서버, 데이터베이스 서버, 컨테이너 환경에서는 디스크 관리가 제대로 되지 않으면 서비스 장애로 이어질 수 있습니다.
Linux Disk Full 오류가 발생하는 주요 원인
디스크 용량 부족(Storage Full)
가장 기본적인 원인은 실제 저장 공간이 모두 사용된 경우입니다.
확인은 df 명령어를 사용합니다.
df -h
결과 예시:
Filesystem Size Used Avail Use%/dev/sda1 100G 100G 0 100%
Use%가 100%라면 해당 파티션에 더 이상 데이터를 저장할 수 없습니다.
주요 원인:
- 대용량 로그 파일
- 백업 파일 증가
- Docker 이미지 및 컨테이너 데이터
- 데이터베이스 파일 증가
- 임시 파일 누적
큰 파일 찾는 방법
디스크를 많이 사용하는 파일을 먼저 찾아야 합니다.
전체 디렉터리 용량 확인
du -sh /*
결과:
20G /var50G /home10G /opt
처럼 어떤 디렉터리가 많은 공간을 사용하는지 확인할 수 있습니다.
특정 디렉터리 상세 확인
예를 들어 /var 용량 확인:
du -sh /var/*
로그 파일 때문에 디스크가 가득 차는 경우
Linux 서버에서 가장 흔한 원인 중 하나는 로그 증가입니다.
주요 위치:
/var/log
확인:
du -sh /var/log/*
큰 로그 파일 확인:
ls -lh /var/log
불필요하게 커진 로그는 삭제하거나 로그 로테이션 설정이 필요합니다.
Journal 로그 정리 방법
Systemd 환경에서는 journal 로그가 계속 쌓일 수 있습니다.
현재 사용량 확인:
journalctl --disk-usage
오래된 로그 삭제:
journalctl --vacuum-time=7d
최근 7일 로그만 유지합니다.
Docker 사용 환경에서 Disk Full 발생 원인
최근 서버 환경에서는 Docker 때문에 디스크 부족 문제가 많이 발생합니다.
Docker는 다음 데이터를 계속 저장합니다.
- 사용하지 않는 이미지
- 종료된 컨테이너
- 빌드 캐시
- 사용하지 않는 Volume
Docker 사용량 확인
docker system df
결과:
TYPE TOTALImages 30GBContainers 10GBLocal Volumes 50GBBuild Cache 20GB
사용하지 않는 Docker 데이터 삭제
전체 정리:
docker system prune
사용하지 않는 이미지, 컨테이너, 네트워크를 삭제합니다.
더 강력한 정리:
docker system prune -a
사용하지 않는 이미지까지 삭제합니다.
주의:
운영 서버에서는 삭제 전에 반드시 필요한 데이터인지 확인해야 합니다.
inode 부족으로 발생하는 Disk Full 오류
디스크 공간이 남아 있어도 아래 오류가 발생할 수 있습니다.
No space left on device
이 경우 원인은 inode 부족입니다.
inode는 파일 개수를 관리하는 Linux 파일 시스템 구조입니다.
작은 파일이 매우 많이 생성되면 저장 공간이 남아 있어도 새로운 파일을 만들 수 없습니다.
확인:
df -i
결과:
Filesystem Inodes IUsed IFree IUse%/dev/sda1 1000000 1000000 0 100%
inode 사용률이 100%라면 불필요한 작은 파일을 삭제해야 합니다.
임시 파일 증가로 인한 디스크 부족
Linux는 임시 데이터를 아래 위치에 저장합니다.
/tmp
확인:
du -sh /tmp
불필요한 임시 파일 삭제:
rm -rf /tmp/*
운영 환경에서는 삭제 전 파일 용도를 확인해야 합니다.
디스크 부족 상태 확인을 위한 주요 명령어
| 명령어 | 설명 |
|---|---|
| df -h | 디스크 사용량 확인 |
| df -i | inode 사용량 확인 |
| du -sh | 디렉터리 용량 확인 |
| ls -lh | 파일 크기 확인 |
| find | 큰 파일 검색 |
| journalctl | 시스템 로그 확인 |
| docker system df | Docker 사용량 확인 |
큰 파일 빠르게 찾는 방법
100MB 이상 파일 검색:
find / -type f -size +100M
1GB 이상 파일 검색:
find / -type f -size +1G
로그나 백업 파일을 찾을 때 유용합니다.
Linux Disk Full 오류 예방 방법
로그 관리 설정
로그가 무한히 증가하지 않도록 Log Rotation을 설정해야 합니다.
Linux에서는 기본적으로 logrotate를 사용합니다.
확인:
cat /etc/logrotate.conf
디스크 모니터링 자동화
운영 서버에서는 디스크 사용률을 지속적으로 확인해야 합니다.
예:
df -h
결과에서 80~90% 이상 사용 시 알림을 설정하는 것이 좋습니다.
Docker 정기 관리
Docker 환경에서는 정기적으로 사용하지 않는 데이터를 정리해야 합니다.
관리 대상:
- 종료된 Container
- 사용하지 않는 Image
- Build Cache
- 불필요한 Volume
Linux Disk Full 오류 해결 순서
문제가 발생했을 때는 아래 순서대로 확인하면 됩니다.
- 디스크 사용량 확인
df -h
- inode 확인
df -i
- 큰 디렉터리 확인
du -sh /*
- 큰 파일 검색
find / -type f -size +1G
- 로그 및 불필요한 데이터 정리
- Docker 환경 확인
마무리
Linux Disk Full(No space left on device) 오류는 서버 운영 환경에서 매우 자주 발생하는 장애 원인입니다.
단순히 저장 공간만 확인하는 것이 아니라 디스크 용량, inode, 로그 파일, Docker 데이터까지 함께 확인해야 정확한 원인을 찾을 수 있습니다.
특히 서버 운영에서는 디스크 사용률을 정기적으로 모니터링하고 불필요한 데이터를 관리하는 것이 안정적인 서비스 운영의 핵심입니다.
함께 보면 좋은 글
Linux Out of Memory(OOM) Killer가 동작하는 이유와 해결 방법
Linux 네트워크 장애 종합 트러블슈팅 실무 체크리스트