서버에서 파일이 사라졌다고? inode 개념 모르면 생기는 문제들

Views: 1

리눅스 서버에서 파일을 삭제했는데 df -h 결과가 변하지 않거나 디렉터리에 파일이 없는데도 공간이 계속 사용 중인 경우가 있다. 이런 현상은 대개 inode와 파일 시스템의 구조적 이해가 부족해 발생한다. inode는 파일의 메타데이터와 저장 위치 정보를 보관하는 핵심 요소이며, 이를 이해하지 못하면 파일 삭제, 로그 관리, 디스크 용량 문제를 정확히 해결할 수 없다.

inode란 무엇인가

inode의 기본 개념

inode는 파일에 대한 메타데이터를 저장하는 구조체로, 데이터 위치, 권한, 소유자, 생성/수정 시간 등을 가진다. 중요한 점은 inode에는 파일 이름이 저장되지 않는다는 것이다. 파일 이름은 디렉터리가 inode 번호와 연결해 관리한다.

파일과 inode의 구조

  • 파일 = inode + 데이터 블록
  • 파일 이름은 inode 번호와 매칭된 정보일 뿐
  • 삭제는 파일 이름 제거 + inode 참조 수 감소 작업

inode가 실제로 삭제되려면 참조되는 링크 수가 0이 되어야 하며, 이를 위해 프로세스가 파일을 사용 중이 아니어야 한다.

파일은 삭제했는데 디스크 용량이 줄지 않는 이유

프로세스가 파일을 점유하고 있을 때

로그 파일이나 대규모 데이터를 삭제해도 해당 파일을 사용하는 프로세스가 있으면 inode는 삭제되지 않는다. 이 상태에서는 du로는 확인되지 않지만 df로는 디스크 공간이 여전히 사용 중인 것으로 표시된다.

확인 방법

lsof | grep deleted

해결 방법

  • 파일을 점유한 프로세스를 종료하거나 재시작
  • 로그 파일은 logrotate를 사용해 안전하게 순환 관리

삭제된 파일이 /proc 디렉터리에서 여전히 존재

프로세스가 파일을 계속 열고 있다면 /proc/<PID>/fd/ 경로에서 삭제된 파일이 fd로 유지된다. 이때 파일 시스템 공간은 해제되지 않는다.

inode가 부족하면 생기는 문제

디스크 용량은 충분해도 inode가 고갈되면 파일 생성이 불가능해진다. 특히 작은 파일이 대량으로 생성되는 환경에서 자주 발생한다.

증상

  • “No space left on device” 오류 발생
  • 파일 수가 너무 많아 ls 명령도 느려짐
  • 웹 서버의 캐시, 이메일 큐, 세션 저장소에서 흔히 발생

해결 방법

  1. inode 사용량 확인
df -i
  1. 작은 파일이 많은 디렉터리 정리
  2. 필요하다면 파일 시스템을 재포맷하거나 확장
  3. 백업 및 주기적 삭제 스크립트 운영

하드 링크와 inode의 관계

하드 링크는 같은 inode를 가리키는 또 다른 파일 이름이며, 링크 수가 모두 0이 되기 전까지 데이터는 삭제되지 않는다.

확인 방법

ls -li
  • 첫 번째 숫자는 inode 번호
  • 두 번째 숫자는 링크 수

링크 수가 1 초과라면 하나의 파일을 삭제해도 데이터는 유지된다.

실무에서 자주 발생하는 inode 관련 문제 사례

로그 파일 삭제 후 공간이 줄지 않을 때

  • /var/log/messages 파일을 삭제해도 용량이 유지
  • 원인: rsyslog 등 로그 프로세스가 파일을 계속 점유
  • 해결: systemctl restart rsyslog 또는 logrotate 설정

Docker, Kubernetes 환경에서 inode 고갈

  • /var/lib/docker/containers에서 JSON 로그가 과도하게 쌓임
  • 해결: docker system prune, 로그 로테이션 설정 필요

/tmp 디렉터리에 파일 폭증

  • 수십만 개의 임시 파일이 쌓여 inode 고갈
  • 해결: tmpfiles.d 설정 또는 정기 삭제 스크립트 사용

inode 문제를 예방하는 방법

로그 및 임시 파일 자동 정리

logrotate, tmpwatch, cron 등을 사용해 주기적으로 불필요한 파일 삭제

파일 시스템 선택 및 구성

  • 작은 파일이 많다면 XFS 또는 ext4 추천
  • inode 수 조절 가능하도록 파일 시스템 생성 시 설계 필요

모니터링 도입

  • df -h뿐만 아니라 df -i도 정기적으로 점검
  • Prometheus, Zabbix 등에서 inode 사용량 모니터링 설정

결론

파일이 사라졌는데도 디스크 공간이 줄지 않거나 파일 생성이 되지 않는 문제는 대부분 inode와 관련된다. inode는 파일 시스템의 핵심 구조이며, 이를 이해하면 로그 관리, 디스크 문제 해결, 서버 안정성을 크게 향상시킬 수 있다. 단순히 파일을 삭제하는 것이 아니라 프로세스, 링크 수, 파일 시스템 구조까지 고려하는 것이 안정적인 시스템 운영의 핵심이다.