inode

2025. 3. 4. 15:07Linux File System

🏗️ inode 개요 및 특징 정리

🔍 1. inode란?

inode (index node) 는 유닉스 스타일 파일 시스템에서 파일 및 디렉터리를 관리하는 데이터 구조에요.

📂 파일의 속성(metadata)과 디스크 블록 위치 저장
📊 파일 소유권, 권한, 시간 정보 포함
📑 디렉터리는 inode와 파일 이름을 연결하는 리스트

디렉터리 자체도 inode를 가지며, 자신과 부모 디렉터리에 대한 정보도 포함하고 있어요.

🏛️ 2. inode의 어원

inode에서 "i"가 무엇을 의미하는지는 논란이 있었어요.

📜 Dennis Ritchie의 설명 → "i-number(인덱스 번호)"에서 유래했을 가능성이 높음
📜 Ken Thompson과 함께한 논문(1978년) → "inode"는 파일 시스템에서 파일을 가리키는 인덱스 역할
📜 Maurice J. Bach의 주장 → "index node"의 줄임말

💡 즉, inode는 파일 시스템 내에서 파일의 위치와 속성을 저장하는 "인덱스 역할"을 수행해요.

📂 3. inode의 역할 및 구조

🔹 파일 시스템에서 파일의 메타데이터 관리
🔹 파일 이름이 아닌 inode 번호로 파일을 관리
🔹 파일을 열 때 inode 테이블을 검색하여 실제 데이터 블록을 찾음
🔹 ls -i 명령어로 inode 번호 확인 가능

ls -i 파일이름

📌 inode에 저장된 정보

  • 📍 파일 소유자 (User ID, Group ID)
  • 📍 파일 유형 (일반 파일, 디렉터리, 심볼릭 링크 등)
  • 📍 파일 크기 및 블록 수
  • 📍 파일 권한 (읽기, 쓰기, 실행 권한)
  • 📍 하드 링크 개수
  • 📍 디스크 블록 위치 정보
  • 📍 타임스탬프 (생성, 수정, 접근 시간: ctime, mtime, atime)

🚀 4. inode의 특징 및 동작 원리

📑 (1) inode는 파일 이름을 포함하지 않음

📂 디렉터리는 파일 이름과 inode 번호를 매핑하는 역할을 해요.
즉, 파일 이름은 디렉터리에서 관리되고, inode는 파일의 실제 데이터를 가리킴.

ls -li

🔍 파일의 inode 번호와 연결된 파일명을 확인 가능!

🔄 (2) 하드 링크 (Hard Link)와 관계

🔹 여러 개의 파일 이름이 같은 inode를 가리킬 수 있음하드 링크 개념
🔹 inode는 그대로 유지되지만, 링크가 모두 삭제되면 파일이 제거됨

ln 원본파일 링크파일
ls -li

💡 같은 inode를 공유하는 것을 확인 가능!

🗑️ (3) 파일 삭제와 inode의 관계

🔹 파일을 삭제해도 inode는 즉시 제거되지 않음
🔹 해당 inode를 참조하는 하드 링크가 모두 사라지면 inode와 데이터 블록이 삭제됨
🔹 실행 중인 프로세스가 파일을 사용 중이면, 파일이 삭제되더라도 여전히 접근 가능

rm 파일명

💡 프로세스가 접근 중이면 파일은 삭제된 것처럼 보여도 여전히 남아있음!

🔎 (4) inode 번호와 파일 경로 조회 문제

📌 inode 기반 파일 시스템에서는 열린 파일의 경로를 직접 알 수 없음
📌 getcwd() 함수는 부모 디렉터리를 따라가며 현재 디렉터리의 경로를 재구성

💡 디렉터리 캐시(dentry cache)를 사용하여 빠른 조회 가능

🏗️ 5. inode 관련 파일 시스템 특징

🚀 (1) inode가 고정 크기로 할당되는 파일 시스템

📂 EXT2, EXT3, EXT4 같은 파일 시스템에서는 inode 개수가 파일 시스템 생성 시 고정
📌 만약 많은 작은 파일이 존재하면, inode 부족 현상 발생 가능
📌 보통 2KB당 1개 inode를 할당

df -i

📊 파일 시스템의 inode 사용 현황 확인 가능!

🛠 (2) 동적 inode 할당이 가능한 파일 시스템

📂 JFS, XFS, ZFS, Btrfs 등 최신 파일 시스템
🔹 B-트리, B+ 트리 구조를 사용하여 inode를 유동적으로 할당
🔹 파일 시스템의 확장성과 유연성이 높음

📌 6. inode와 파일 시스템 관리

🔄 (1) inode가 고갈될 경우 해결 방법

파일 시스템을 다시 생성할 때 inode 개수를 조정
작은 파일이 많다면, 동적 inode 할당이 가능한 파일 시스템 사용

📌 (2) inline data (파일 데이터를 inode에 저장)

💡 매우 작은 파일은 inode 자체에 데이터를 저장하여 디스크 접근을 최소화
EXT4의 inline_data 옵션 사용 가능
EXT2는 작은 심볼릭 링크(60바이트 이하)를 inode에 저장하는 fast symbolic link 지원

tune2fs -O inline_data /dev/sdX

📊 inode에 데이터를 직접 저장하도록 설정 가능!

🏁 7. 결론

🛠 inode는 유닉스 스타일 파일 시스템에서 파일을 관리하는 핵심 개념
📂 파일 이름이 아닌 inode 번호를 통해 파일을 식별
🔄 하드 링크, 파일 삭제, 파일 경로 조회에 영향을 미침
📊 inode 개수가 부족할 경우 파일 시스템 설계 시 고려해야 함
📌 EXT4에서는 inline_data를 활용해 작은 파일을 inode에 직접 저장 가능

 

💡 inode 구조를 이해하면 리눅스 파일 시스템을 더욱 효율적으로 관리할 수 있어요! 🐧 🚀

'Linux File System' 카테고리의 다른 글

EXT4  (0) 2025.03.04
Linux File System  (0) 2025.03.04