운영체제/리눅스

Linux 용량은 남았는데 파일이 생성되지 않을 때: df -i와 du --inodes 점검

filefind

  •  

디스크에 여유 공간이 있는데도 파일 생성이 “No space left on device”로 실패할 수 있다. 작은 파일이 많이 쌓였다면 데이터 공간과 함께 inode 사용량을 확인한다.

공간과 파일 관리 항목은 다르다

inode는 파일의 소유자·권한 등 메타데이터를 관리하는 구조다. 파일시스템에 따라 inode 할당 방식이 다르며, 데이터 블록 여유와 inode 여유가 항상 함께 움직이지는 않는다. GNU df는 -i로 inode 사용량을, GNU du는 --inodes로 디렉터리별 inode 사용량을 조회할 수 있다. df 문서 · du 문서

조회 확인할 내용
df -hT 파일시스템 종류와 데이터 공간
df -i 전체·사용·남은 inode
du --inodes inode를 많이 쓰는 디렉터리

1. 실패한 경로의 파일시스템부터 확인

# /var는 실제 파일 생성이 실패한 경로로 변경
df -hT /var
df -i /var

IUse%가 높고 IFree가 부족한지 확인한다. 루트 파일시스템의 상태를 별도 마운트인 /var나 /data의 상태로 대신 판단하지 않는다. 파일시스템이 inode 통계를 제공하지 않거나 동적으로 할당한다면 수치 해석에 주의한다.

2. 작은 파일이 쌓인 위치 찾기

du --help
sudo du --inodes -x --max-depth=1 /var | sort -nr | head -20

-x는 다른 파일시스템으로 넘어가는 탐색을 제한한다. 출력 숫자는 바이트가 아니라 inode 사용량이다. 많이 사용하는 디렉터리가 /var/spool이라면 같은 명령의 경로만 /var/spool로 바꾸어 좁혀 간다. 전체 탐색은 파일 수에 따라 I/O 부하와 시간이 커질 수 있어 대상 경로와 점검 시간을 조정한다.

3. 원인과 조치 정책을 연결

메일 큐, 임시파일, 애플리케이션 캐시처럼 작은 파일을 많이 만드는 기능을 확인한다. 파일 개수가 많다는 이유만으로 운영 데이터를 삭제하지 않는다. 제품이 제공하는 만료·보존·큐 정리 절차를 적용하고, 생성 속도와 보존 기간을 함께 검토한다.

inode 부족이 아니라면 사용자·프로젝트 쿼터, 읽기 전용 마운트, 스토리지 상태와 실제 오류 메시지를 추가 조사한다. XFS와 ext4 등 파일시스템별 특성을 확인하고, 동일한 해결 명령을 일괄 적용하지 않는다.

운영 체크리스트

  • 파일 생성에 실패한 정확한 경로와 오류를 기록했는가?
  • 데이터 공간과 inode 공간을 따로 확인했는가?
  • 작은 파일이 증가하는 기능과 보존 정책을 찾았는가?
  • 정리 후 실제 파일 생성과 df -i 결과를 확인했는가?

용량 경보는 바이트 사용률과 inode 여유를 함께 살펴보는 방식으로 보강할 수 있다. 임계치는 파일시스템 특성과 평소 증가 속도에 맞춰 정한다.

참고자료