Linux 서버를 운영하다 보면 파일을 저장하거나 프로그램을 설치할 때 No space left on device라는 오류를 자주 만나게 됩니다. 대부분 디스크 용량이 모두 찼다고 생각하기 쉽지만, 실제로는 디스크 공간 외에도 inode 부족, 읽기 전용 파일 시스템, Docker 볼륨 증가 등 다양한 원인으로 발생할 수 있습니다.
따라서 단순히 불필요한 파일을 삭제하는 것만으로는 문제가 해결되지 않는 경우도 많습니다. 이번 글에서는 No space left on device 오류가 발생하는 원인과 실무에서 문제를 해결하는 방법을 알아보겠습니다.
No space left on device란 무엇인가?
이 오류는 운영체제가 새로운 데이터를 저장할 공간이 없다고 판단할 때 발생합니다.
대표적인 오류 예시는 다음과 같습니다.
No space left on device
또는
write failed: No space left on device
또는
cp: cannot create regular file: No space left on device
오류 메시지는 동일하지만 원인은 다양할 수 있습니다.
No space left on device가 발생하는 대표적인 원인
다음과 같은 경우에 자주 발생합니다.
- 디스크 용량 부족
- inode 부족
- 로그 파일 과다 증가
- Docker 이미지 및 볼륨 증가
- 백업 파일 누적
- 임시 파일 증가
- 읽기 전용(Read Only) 파일 시스템
- 파일 시스템 손상
문제를 해결하려면 먼저 정확한 원인을 확인해야 합니다.
1. 디스크 용량 확인하기
가장 먼저 디스크 사용량을 확인합니다.
df -h
사용률이 100%인 파티션이 있는지 확인합니다.
예시
Filesystem Size Used Avail Use%
/dev/sda1 50G 50G 0 100%
이 경우 디스크 공간이 모두 사용된 상태입니다.
2. inode 사용량 확인하기
디스크 용량은 충분하지만 inode가 모두 사용된 경우에도 같은 오류가 발생합니다.
df -i
Use%가 100%라면 inode 부족입니다.
3. 큰 파일 찾기
용량이 큰 파일을 확인합니다.
du -sh /*
또는
du -ah / | sort -rh | head -20
가장 많은 공간을 차지하는 파일을 찾을 수 있습니다.
4. 로그 파일 확인하기
로그 파일이 비정상적으로 커졌는지 확인합니다.
du -sh /var/log/*
필요 없는 오래된 로그는 삭제하거나 압축합니다.
journalctl --vacuum-time=7d
최근 7일 로그만 유지하는 예시입니다.
5. Docker 공간 확인하기
Docker 환경에서는 이미지와 볼륨이 많은 공간을 차지할 수 있습니다.
docker system df
불필요한 리소스를 정리합니다.
docker system prune
주의: 사용하지 않는 이미지와 컨테이너가 삭제됩니다.
6. 열린 삭제 파일 확인하기
삭제된 파일이 프로세스에 의해 계속 사용 중이면 공간이 확보되지 않습니다.
lsof | grep deleted
프로세스를 재시작하면 공간이 회수됩니다.
7. 임시 파일 확인하기
임시 디렉터리도 확인합니다.
du -sh /tmp
필요 없는 임시 파일을 정리합니다.
8. 파일 시스템 상태 확인하기
읽기 전용으로 변경되었는지 확인합니다.
mount
또는
cat /proc/mounts
ro 옵션으로 마운트되어 있는지 확인합니다.
9. 시스템 로그 확인하기
디스크 오류가 있는지 로그를 확인합니다.
journalctl -xe
또는
dmesg
I/O 오류나 파일 시스템 오류가 기록되어 있는지 확인합니다.
10. 디스크 사용량 순위 확인하기
상위 디렉터리를 빠르게 확인합니다.
du -xh / | sort -rh | head -30
용량을 많이 사용하는 디렉터리를 빠르게 찾을 수 있습니다.
No space left on device 문제를 확인하는 순서
실무에서는 다음 순서대로 점검하는 것이 가장 효율적입니다.
- df -h
- df -i
- du -sh /*
- 로그 파일 확인
- Docker 공간 확인
- lsof | grep deleted
- /tmp 확인
- mount 확인
- journalctl 확인
- dmesg 확인
이 순서대로 확인하면 대부분의 원인을 빠르게 찾을 수 있습니다.
오류를 해결할 때 주의할 점
용량이 부족하다고 해서 무조건 큰 파일을 삭제하는 것은 위험할 수 있습니다.
특히 데이터베이스 파일, 서비스 로그, Docker 볼륨 등은 삭제 전에 반드시 백업 여부와 서비스 영향을 확인해야 합니다.
또한 inode 부족은 파일 개수가 너무 많은 경우 발생하므로, 작은 파일을 정리하는 것이 중요합니다.
자주 묻는 질문
df -h에서는 공간이 남아 있는데 같은 오류가 발생합니다.
df -i를 실행하여 inode 사용량을 확인해야 합니다. inode가 모두 사용된 경우에도 동일한 오류가 발생합니다.
파일을 삭제했는데 공간이 늘어나지 않습니다.
삭제된 파일을 프로세스가 계속 사용 중일 수 있습니다. lsof | grep deleted 명령으로 확인한 뒤 해당 프로세스를 재시작합니다.
Docker를 사용하면 이 오류가 자주 발생하나요?
네. 오래된 이미지, 중지된 컨테이너, 사용하지 않는 볼륨이 누적되면 디스크 공간을 많이 차지할 수 있습니다.
마무리
No space left on device 오류는 단순한 디스크 용량 부족뿐 아니라 inode 부족, Docker 리소스 증가, 삭제된 파일 점유 등 다양한 원인으로 발생합니다. df, du, lsof, journalctl 등의 명령어를 활용해 원인을 정확히 파악한 후 불필요한 데이터를 정리하면 대부분의 문제를 해결할 수 있습니다.