리눅스 서버를 운영하다 보면 디스크 용량이 충분히 남아 있는데도 파일이 생성되지 않거나 서버에서 오류가 발생하는 경우가 있습니다. df -h 명령어로 확인했을 때 디스크 사용량이 70~80% 정도밖에 되지 않아 원인을 찾기 어려울 수 있습니다.
이런 상황에서 반드시 확인해야 하는 것이 바로 inode 부족 문제입니다.
inode는 리눅스 파일 시스템에서 파일과 디렉터리를 관리하기 위해 사용되는 중요한 정보 영역입니다. 디스크 용량과는 별개의 개념이기 때문에 저장 공간이 남아 있어도 inode가 모두 소진되면 새로운 파일을 만들 수 없습니다.
이번 글에서는 리눅스 inode가 무엇인지, inode가 부족하면 어떤 문제가 발생하는지, 그리고 서버에서 inode 사용량을 확인하고 해결하는 방법까지 쉽게 알아보겠습니다.
inode란 무엇인가?

inode는 리눅스 파일 시스템에서 파일을 관리하기 위한 메타데이터라고 생각하면 이해하기 쉽습니다.
파일의 이름 자체보다는 파일의 크기, 권한, 소유자, 생성 및 수정 정보, 실제 데이터가 저장된 위치 등을 관리하는 역할을 합니다.
쉽게 비유하면 디스크 용량은 물건을 보관할 수 있는 창고의 공간이고, inode는 창고에 보관된 각각의 물건을 관리하는 번호표와 비슷합니다.
따라서 디스크에 빈 공간이 많이 남아 있더라도 inode를 모두 사용했다면 새로운 파일을 생성하기 어렵습니다.
디스크 공간이 남았는데 서버가 멈추는 이유
많은 사람들이 서버의 저장 공간을 확인할 때 다음 명령어만 사용하는 경우가 많습니다.
df -h
이 명령어는 파일 시스템의 전체 용량과 사용량을 확인하는 데 유용합니다.
하지만 df -h에서 여유 공간이 충분하더라도 수많은 작은 파일이 생성되면 inode가 먼저 부족해질 수 있습니다.
예를 들어 1KB짜리 작은 파일이 수백만 개 만들어졌다고 가정해 보겠습니다.
파일 하나하나를 관리하기 위해 inode가 필요하기 때문에 파일 크기가 작더라도 inode 사용량은 계속 증가합니다.
결국 다음과 같은 상황이 발생할 수 있습니다.
디스크 공간은 남아 있음 → inode는 100% 사용 → 새로운 파일 생성 실패
이것이 inode 부족 문제의 핵심입니다.
inode 사용량 확인하는 방법
inode 사용량은 다음 명령어로 확인할 수 있습니다.
df -i
결과에서 특히 확인해야 할 항목은 IUse%입니다.
예를 들어 다음과 같이 표시될 수 있습니다.
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1000000 999500 500 100% /
여기에서 IUse%가 100%라면 inode가 모두 사용된 상태입니다.
반대로 디스크 전체 사용량은 다음 명령어로 확인합니다.
df -h
따라서 리눅스 서버에서 저장 공간 문제가 발생했을 때는 df -h와 df -i를 함께 확인하는 습관이 중요합니다.
inode를 많이 사용하는 원인은 무엇일까?
inode 부족의 가장 흔한 원인은 작은 파일이 지나치게 많이 생성되는 것입니다.
대표적인 원인은 다음과 같습니다.
1. 로그 파일이 계속 쌓이는 경우
웹서버나 애플리케이션에서 로그 파일을 계속 생성하면 파일 개수가 빠르게 증가할 수 있습니다.
특히 로그 관리가 제대로 설정되지 않은 서버에서는 오래된 로그가 계속 남아 inode 사용량을 높일 수 있습니다.
2. 임시 파일이 쌓이는 경우
/tmp와 같은 임시 디렉터리에 프로그램이 생성한 파일이 제대로 삭제되지 않고 계속 남아 있을 수 있습니다.
3. 캐시 파일이 지나치게 많은 경우
웹 애플리케이션이나 각종 프로그램이 캐시를 작은 파일 형태로 저장하는 경우에도 inode가 빠르게 소모될 수 있습니다.
4. 백업 파일이 너무 많이 생성되는 경우
자동 백업 시스템에서 매일 또는 매시간 수많은 작은 파일을 생성하도록 설정되어 있다면 시간이 지나면서 inode 사용량이 크게 증가할 수 있습니다.
5. 프로그램 오류
특정 프로그램이 정상적으로 처리하지 못하고 계속해서 임시 파일이나 작은 파일을 생성하는 경우에도 inode 부족이 발생할 수 있습니다.
inode를 많이 사용하는 디렉터리 찾기
inode 부족이 확인되었다면 어떤 위치에 파일이 많이 쌓여 있는지 찾아야 합니다.
예를 들어 /var 아래의 파일 개수를 확인하려면 다음과 같이 사용할 수 있습니다.
find /var -xdev -type f | wc -l
특정 로그 디렉터리에 파일이 얼마나 많은지도 확인할 수 있습니다.
find /var/log -type f | wc -l
파일이 지나치게 많이 존재한다면 해당 디렉터리에서 어떤 프로그램이 파일을 생성하고 있는지 추가로 확인해야 합니다.
inode 부족 문제 해결 방법
inode 부족이 확인되었다고 해서 무작정 파일을 삭제하는 것은 좋지 않습니다.
먼저 어떤 파일이 많이 생성되고 있는지 확인한 다음 불필요한 파일만 정리해야 합니다.
오래된 로그 파일이나 필요하지 않은 임시 파일, 불필요한 캐시 파일 등이 원인이라면 안전한 범위에서 정리할 수 있습니다.
또한 로그 파일이 계속 생성되는 서버라면 logrotate와 같은 로그 관리 기능을 이용해 오래된 로그를 자동으로 관리하는 방법도 고려해야 합니다.
중요한 것은 단순히 현재의 파일을 삭제하는 데 그치지 않고 왜 파일이 계속 생성되는지 원인을 찾는 것입니다.
inode 부족을 예방하는 방법
서버 운영에서 inode 부족을 예방하려면 정기적으로 파일 시스템을 점검하는 것이 좋습니다.
다음 명령어를 이용하면 간단하게 확인할 수 있습니다.
df -h
df -i
df -h에서는 디스크 사용량을 확인하고, df -i에서는 inode 사용량을 확인합니다.
특히 웹서버, 데이터베이스 서버, 로그 서버처럼 파일이 많이 생성되는 환경이라면 정기적인 점검이 중요합니다.
또한 로그 보관 기간을 적절하게 설정하고 불필요한 임시 파일과 캐시 파일이 계속 쌓이지 않도록 관리해야 합니다.
마무리
리눅스 서버에서 디스크 공간이 남아 있는데도 파일 생성이 실패하거나 No space left on device와 같은 오류가 발생한다면 inode 부족을 확인해야 합니다.
디스크 용량만 확인해서는 문제의 원인을 놓칠 수 있습니다.
가장 먼저 다음 두 명령어를 실행해 보세요.
df -h
df -i
df -h는 디스크 용량을 확인하는 명령어이고, df -i는 inode 사용량을 확인하는 명령어입니다.
리눅스 서버 장애를 예방하기 위해서는 디스크 공간과 inode를 함께 관리하는 것이 중요합니다.
특히 작은 파일이 많이 생성되는 서버라면 inode 사용량을 정기적으로 확인하고 로그, 캐시, 임시 파일 등을 적절하게 관리하는 것이 안정적인 서버 운영에 도움이 됩니다.
함께 알아두면 좋은 리눅스 서버 관리 명령어
- df -h : 디스크 용량 확인
- df -i : inode 사용량 확인
- du -sh : 디렉터리 용량 확인
- find : 특정 조건의 파일 검색
- ls -lah : 파일 및 디렉터리 정보 확인
- journalctl : 시스템 로그 확인