콘텐츠로 이동

UNIX 아이노드 (Inode)

Jan 23, 2026 · Updated Feb 10, 2026

아이노드(index node)는 파일의 메타데이터와 데이터 블록 위치를 저장하는 디스크 상의 자료구조이다. 파일 데이터가 디스크 여러 곳에 흩어져 있을 수 있고 파일명만으로는 파일을 관리할 수 없으므로, 파일명과 파일 데이터를 분리하여 하드 링크와 효율적인 메타데이터 관리를 지원한다.

파일 시스템은 <장치 번호, 아이노드 번호> 쌍으로 파일을 고유하게 식별한다.

Inode 내부 구조
메타데이터
소유자 (UID, GID) 파일 유형 권한 (rwx) 타임스탬프 (3) 링크 카운트 파일 크기
블록 포인터
direct[0-11] single indirect double indirect triple indirect
  • 12개: 직접 블록 (direct blocks) → 데이터 직접 참조
  • 1개: 단일 간접 (single indirect) → 블록 포인터들의 블록
  • 1개: 이중 간접 (double indirect)
  • 1개: 삼중 간접 (triple indirect) → 4.2BSD에서는 불필요 (2^32 바이트 한계)
블록 포인터 참조 경로 (간접 블록)
1 Inode
indirect 포인터 읽기
2 간접 블록
포인터들의 블록
3 데이터 블록
실제 파일 데이터

아이노드는 “도서관 카드”와 같다. 책의 제목(파일명)은 별도 목록(디렉토리)에 있고, 카드에는 책의 위치(블록 포인터), 저자(소유자), 대출 기록(타임스탬프)이 기록된다.

4KB 블록 크기에서 최대 파일 크기:

4KB 블록 기준 최대 파일 크기
직접 블록 12 × 4KB = 48KB
단일 간접 1024 × 4KB = 4MB
이중 간접 1024² × 4KB = 4GB
총합 ≈ 4GB (32비트 오프셋 한계)
  • 파일명과 메타데이터 분리로 하드 링크 지원
  • 작은 파일은 직접 블록으로 빠른 접근, 큰 파일도 간접 블록으로 효율적 지원
  • 단점: 큰 파일 접근 시 간접 블록 추가 I/O 발생, 아이노드 개수 고정(Version 7)
  • VFS (Virtual File System) - 디스크 아이노드를 in-core inode 객체로 추상화하는 가상 파일 시스템 계층
  • UNIX 파일 디스크립터 - fd → file → inode 참조 체인으로 아이노드에 접근하는 핸들
  • BSD 실린더 그룹 - 아이노드와 데이터 블록을 인접 배치하여 seek를 줄이는 할당 단위
  • NTFS 구조 - UNIX 아이노드에 대응하는 MFT Entry 기반의 Windows 파일 메타데이터 구조
  • 저널링 파일 시스템 - 아이노드 등 메타데이터 변경을 로그로 보호하는 크래시 복구 기법