Linux 서버를 운영하다 보면 디스크 용량은 충분한데도 “No space left on device” 오류가 발생하는 경우가 있습니다. df -h 명령어를 실행하면 여유 공간이 많이 남아 있는데도 파일이 생성되지 않거나 로그가 저장되지 않는다면 inode 부족을 의심해야 합니다.
inode는 파일 자체의 데이터를 저장하는 것이 아니라 파일의 이름, 권한, 소유자, 생성 시간, 위치 등의 정보를 저장하는 구조입니다. Linux에서는 파일 하나당 inode 하나를 사용하기 때문에 작은 파일이 매우 많이 생성되면 디스크 공간과 관계없이 inode가 먼저 모두 소진될 수 있습니다.
이번 글에서는 inode 부족이 발생하는 원인과 확인 방법, 그리고 해결 방법까지 자세히 알아보겠습니다.
inode란 무엇인가?
inode는 Linux 파일 시스템에서 각각의 파일을 관리하기 위한 고유한 정보입니다.
파일마다 하나의 inode를 가지며 다음과 같은 정보를 저장합니다.
- 파일 권한
- 소유자
- 그룹
- 생성 및 수정 시간
- 파일 크기
- 데이터 블록 위치
즉, 파일 개수가 많아질수록 inode도 함께 사용됩니다.
inode 부족이 발생하는 대표적인 원인
다음과 같은 경우 inode 부족이 자주 발생합니다.
- 로그 파일이 수백만 개 생성되는 경우
- 캐시 파일이 계속 쌓이는 경우
- 메일 서버 큐 파일 증가
- 웹 서버 세션 파일 증가
- 임시 파일 생성
- 작은 이미지 파일 대량 저장
- Docker Overlay 파일 증가
특히 작은 파일이 매우 많은 환경에서 자주 발생합니다.
1. inode 사용량 확인하기
가장 먼저 inode 사용률을 확인합니다.
df -i
다음과 같은 결과를 확인할 수 있습니다.
- IUsed
- IFree
- IUse%
IUse%가 100%에 가까우면 inode 부족 상태입니다.
2. 디스크 공간과 함께 비교하기
디스크 용량도 함께 확인합니다.
df -h
디스크는 30%만 사용 중인데 inode는 100%라면 공간 부족이 아니라 inode 부족입니다.
3. inode를 많이 사용하는 디렉터리 찾기
어떤 디렉터리에 파일이 많은지 확인합니다.
for i in /*; do echo "$i"; find "$i" | wc -l; done
파일 개수가 비정상적으로 많은 디렉터리를 찾을 수 있습니다.
4. 특정 디렉터리 파일 개수 확인하기
예를 들어 /var/log의 파일 개수를 확인합니다.
find /var/log | wc -l
또는
find /tmp | wc -l
수십만 개 이상의 파일이 있는지 확인합니다.
5. 작은 파일이 많은지 확인하기
크기가 작은 파일이 너무 많으면 inode가 빠르게 소모됩니다.
find / -type f -size -4k | wc -l
작은 파일이 수백만 개 존재하는 경우 inode 부족 가능성이 매우 높습니다.
6. 최근 생성된 파일 확인하기
최근 생성된 파일을 확인합니다.
find / -mtime -1
갑자기 생성된 파일이 있는지 확인하면 원인을 찾는 데 도움이 됩니다.
7. Docker 환경 확인하기
Docker를 사용하는 서버에서는 Overlay 파일이 inode를 많이 사용할 수 있습니다.
docker system df
사용하지 않는 이미지와 컨테이너를 정리하면 inode 사용량도 함께 줄일 수 있습니다.
8. 로그 파일 개수 확인하기
로그 디렉터리를 확인합니다.
find /var/log -type f | wc -l
로그가 계속 생성되고 있다면 로그 로테이션 설정도 확인해야 합니다.
9. 캐시 디렉터리 확인하기
캐시 파일도 inode를 많이 사용합니다.
du -sh /var/cache/*
캐시 파일이 과도하게 쌓여 있는지 확인합니다.
10. 불필요한 파일 정리하기
원인을 확인한 후 필요 없는 파일을 삭제합니다.
예를 들어 오래된 로그를 삭제할 수 있습니다.
find /var/log -type f -mtime +30 -delete
삭제 전에 반드시 백업 여부와 파일의 용도를 확인하는 것이 좋습니다.
inode 부족 문제를 해결하는 순서
실무에서는 다음 순서대로 확인하는 것이 가장 효율적입니다.
- df -i
- df -h
- 파일 개수 확인
- 로그 디렉터리 확인
- 캐시 디렉터리 확인
- Docker 사용량 확인
- 최근 생성 파일 확인
- 오래된 파일 정리
- 로그 로테이션 확인
- inode 사용률 재확인
inode 부족을 예방하는 방법
inode 부족은 대부분 파일 개수가 과도하게 증가하면서 발생합니다.
다음과 같은 방법으로 예방할 수 있습니다.
- 로그 자동 삭제 설정
- Log Rotation 적용
- 임시 파일 정리
- 오래된 캐시 삭제
- Docker 이미지 정리
- 정기적인 디스크 점검
정기적으로 관리하면 inode 부족 문제를 예방할 수 있습니다.
자주 묻는 질문
디스크 공간은 남았는데 파일을 만들 수 없습니다.
inode가 모두 사용되었을 가능성이 높습니다.
다음 명령어를 먼저 확인합니다.
df -i
inode는 늘릴 수 있나요?
일반적으로 파일 시스템 생성 시 inode 개수가 결정됩니다.
이미 생성된 파일 시스템에서는 inode 개수를 변경하기 어렵기 때문에 불필요한 파일을 정리하는 것이 가장 현실적인 해결 방법입니다.
inode 부족은 SSD와 HDD 모두 발생하나요?
네.
저장 장치 종류와 관계없이 파일 개수가 많으면 inode 부족이 발생할 수 있습니다.
마무리
inode 부족은 Linux 서버에서 자주 발생하지만 디스크 공간 부족과 혼동하기 쉬운 문제입니다. df -i를 먼저 확인하고 파일 개수, 로그 디렉터리, 캐시 파일, Docker 환경 등을 차례대로 점검하면 대부분의 원인을 빠르게 찾을 수 있습니다. 평소 로그 관리와 임시 파일 정리를 자동화하면 inode 부족으로 인한 서비스 중단을 예방하는 데 큰 도움이 됩니다.