코딩일상

[inode]서버 모니터링 관리요소 df -i 본문

기록/Troubleshooting

[inode]서버 모니터링 관리요소 df -i

solutionMan 2025. 9. 25. 14:35
반응형

 서버 운영하면서 메모리/CPU뿐 아니라 inode 모니터링도 꼭 필요합니다.📌 inode란 무엇인가?

1. inode의 정의

  • inode(index node) = 리눅스/유닉스 계열 파일시스템에서 파일의 메타데이터를 저장하는 자료구조.
  • 파일의 실제 데이터가 아니라, 파일을 설명하는 정보를 담고 있음.

예를 들어 ls -i 명령어로 보면 파일마다 inode 번호가 있어요:

 
123456 myfile.txt

여기서 123456이 inode 번호입니다.


2. inode 안에 들어 있는 정보

  • 파일 유형 (일반 파일, 디렉토리, 링크 등)
  • 파일 소유자, 그룹
  • 접근 권한 (rwx)
  • 파일 크기
  • 생성/수정/접근 시간 (ctime, mtime, atime)
  • 실제 데이터 블록의 위치 (디스크 상 오프셋 주소)
  • 링크 수 (하드링크 개수)

📌 즉, inode = 파일의 주민등록증 같은 것.
데이터는 따로 있고, inode가 그것을 가리킵니다.


3. inode는 어디에 저장되나?

  • 파일시스템 생성(mkfs.ext4 등) 시 고정된 개수의 inode를 미리 생성.
  • 각 inode는 디스크 상에 저장되고, 파일이 생성될 때 하나씩 할당됨.
  • 예: ext4 파일시스템에서는 보통 1 inode = 256바이트.

👉 그래서 파일 갯수가 많아지면 inode가 먼저 고갈될 수 있음.
(디스크 용량이 남아 있어도 새로운 파일을 만들 수 없음)


📌 inode 모니터링이 필요한 이유

  1. 파일 수 제한
    • inode는 파일 1개마다 1개씩 필요.
    • 수백만 개의 작은 파일이 쌓이면, 디스크 용량은 충분해도 inode 부족으로 No space left on device 오류 발생.
  2. 로그 폭주 문제
    • 로그 파일이 수없이 많이 생성될 때 inode가 급격히 소모됨.
    • 예: 하루에 수십만 개의 작은 로그 파일이 쌓이는 경우.
  3. 서비스 장애 위험
    • DB, 메시지 큐, 캐시 서버 등은 작은 파일을 대량 생성하기 때문에 inode 부족 → 신규 파일 생성 불가 → 서비스 중단.

📌 inode 모니터링 방법

1. 현재 inode 사용량 확인

 
df -i

 

  • Inodes: 총 inode 개수
  • IUsed: 사용 중인 inode
  • IFree: 남은 inode
  • IUse%: 사용률

2. inode 많이 차지하는 파일 찾기

find / -xdev -type f | wc -l  # 전체 파일 개수 세기
 
du --inodes -d 1 /var # /var 디렉토리 inode 사용량

📌 inode 문제 예방/대처 방법

  1. 로그 관리
    • logrotate로 오래된 로그를 압축/삭제.
    • 압축하면 여러 개의 작은 파일 대신 큰 파일 하나가 됨 → inode 절약.
  2. 불필요한 파일 정리
    • 캐시 디렉토리(/tmp, /var/cache) 주기적 청소.
    • 오래된 세션/스풀 파일 삭제.
  3. 파일시스템 설계
    • 대량 파일 저장 예상 시 → 파일시스템 생성 시 inode 밀도 조정:
    •  
      mkfs.ext4 -N <inode 수> /dev/sdX
    • 또는 XFS, Btrfs처럼 inode를 동적으로 관리하는 파일시스템 사용.
  4. 대량 파일 저장 피하기
    • 수백만 개의 작은 파일 대신 DB나 객체스토리지(S3 등) 사용.
    • 로그는 ElasticSearch, Loki 같은 중앙화된 스토리지로 전송.

📌 정리

  • inode는 파일 메타데이터를 관리하는 구조체 (파일 주민등록증 역할).
  • 파일 1개마다 1 inode 필요 → 수많은 작은 파일이 생기면 inode 고갈 가능.
  • 모니터링: df -i로 inode 사용률 확인.
  • 예방책:
    • logrotate로 로그 관리
    • /tmp, /var/cache 정리
    • 파일시스템 생성 시 inode 조정
    • 작은 파일 → DB/스토리지로 집약

 

inode 가 많이 존재하는곳 파악하기

du --inodes -d 1 / | sort -nr | head

 

기존 문제 서버 상태

해결 처리 후 서버 상태

 

 

반응형
Comments