Linux Disk Full(No space left on device) 오류 원인과 해결 방법! 디스크 부족 문제 완벽 이해하기

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 -iinode 사용량 확인
du -sh디렉터리 용량 확인
ls -lh파일 크기 확인
find큰 파일 검색
journalctl시스템 로그 확인
docker system dfDocker 사용량 확인

큰 파일 빠르게 찾는 방법

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 오류 해결 순서

문제가 발생했을 때는 아래 순서대로 확인하면 됩니다.

  1. 디스크 사용량 확인
df -h
  1. inode 확인
df -i
  1. 큰 디렉터리 확인
du -sh /*
  1. 큰 파일 검색
find / -type f -size +1G
  1. 로그 및 불필요한 데이터 정리
  2. Docker 환경 확인

마무리

Linux Disk Full(No space left on device) 오류는 서버 운영 환경에서 매우 자주 발생하는 장애 원인입니다.

단순히 저장 공간만 확인하는 것이 아니라 디스크 용량, inode, 로그 파일, Docker 데이터까지 함께 확인해야 정확한 원인을 찾을 수 있습니다.

특히 서버 운영에서는 디스크 사용률을 정기적으로 모니터링하고 불필요한 데이터를 관리하는 것이 안정적인 서비스 운영의 핵심입니다.

함께 보면 좋은 글

Linux Out of Memory(OOM) Killer가 동작하는 이유와 해결 방법

Linux 네트워크 장애 종합 트러블슈팅 실무 체크리스트

Docker System Prune 사용법 완벽 가이드! Docker 리소스 정리 방법

Linux 파일 시스템(File System) 구조와 Storage 관리 방식 이해하기

댓글 남기기