반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리눅스
- 트러블슈팅
- 피드백
- array
- react
- mysql
- 알고리즘
- 네트워크
- 생각일기
- 생각정리
- MongoDB
- 코테
- mongo
- CS
- nest.js
- Grafana
- 생각로그
- til
- javascript
- mongoose
- 주간회고
- WIL
- 회고
- js
- Git
- Java
- next.js
- 자바스크립트
- typescript
- 기록
Archives
- Today
- Total
코딩일상
[inode]서버 모니터링 관리요소 df -i 본문
반응형
서버 운영하면서 메모리/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 모니터링이 필요한 이유
- 파일 수 제한
- inode는 파일 1개마다 1개씩 필요.
- 수백만 개의 작은 파일이 쌓이면, 디스크 용량은 충분해도 inode 부족으로 No space left on device 오류 발생.
- 로그 폭주 문제
- 로그 파일이 수없이 많이 생성될 때 inode가 급격히 소모됨.
- 예: 하루에 수십만 개의 작은 로그 파일이 쌓이는 경우.
- 서비스 장애 위험
- 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 문제 예방/대처 방법
- 로그 관리
- logrotate로 오래된 로그를 압축/삭제.
- 압축하면 여러 개의 작은 파일 대신 큰 파일 하나가 됨 → inode 절약.
- 불필요한 파일 정리
- 캐시 디렉토리(/tmp, /var/cache) 주기적 청소.
- 오래된 세션/스풀 파일 삭제.
- 파일시스템 설계
- 대량 파일 저장 예상 시 → 파일시스템 생성 시 inode 밀도 조정:
-
mkfs.ext4 -N <inode 수> /dev/sdX
- 또는 XFS, Btrfs처럼 inode를 동적으로 관리하는 파일시스템 사용.
- 대량 파일 저장 피하기
- 수백만 개의 작은 파일 대신 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
기존 문제 서버 상태
해결 처리 후 서버 상태
반응형
'기록 > Troubleshooting' 카테고리의 다른 글
[next.js] Hydration mismatch 에러(사이드 프로젝트 진행하며 ) (0) | 2025.01.01 |
---|---|
[ERROR]cannot create poolableconnectionfactory 에러 (0) | 2024.04.04 |
[caffeine 컴파일에러 ]class file has wrong version 55.0, should be 52.0 (0) | 2023.07.04 |
Failed to determine a suitable driver class (0) | 2023.04.03 |
RangeError: Invalid string length 에러 해결 방법 (0) | 2023.03.25 |
Comments