inode table

inode table

📌 inode들은 어디에 저장될까? (리눅스 파일 시스템 구조)

파일 시스템에서 inode는 파일의 메타데이터를 저장하는 구조체이며, 파일 시스템 내부에서 특정한 영역(inode table)에 저장됩니다.


1️⃣ inode가 저장되는 위치

inode는 파일 시스템이 생성될 때 미리 정해진 크기만큼 할당되며, 보통 데이터 블록과는 별도의 “inode table(아이노드 테이블)“이라는 영역에 저장됩니다.

inode는 데이터 블록과 별개로 존재
파일 시스템이 생성될 때 미리 예약된 공간

📌 파일 시스템 구조 개요
리눅스의 대표적인 파일 시스템인 ext4(ext2/ext3도 유사) 기준으로 보면, 디스크는 여러 영역으로 나뉩니다.

|-----------------|-----------------|-----------------|-----------------|-----------------|
|  Boot Block    | Superblock      | Inode Table    | Data Blocks    | Free Space      |
|-----------------|-----------------|-----------------|-----------------|-----------------|
  • Boot Block: 부팅에 필요한 데이터 저장
  • Superblock: 파일 시스템 정보(블록 크기, inode 개수 등) 저장
  • Inode Table: 파일들의 inode 정보 저장
  • Data Blocks: 실제 파일 내용 저장

📍 inode table은 데이터 블록과 분리되어 있음
📍 각 블록 그룹에 inode table이 따로 존재


2️⃣ inode table 확인하는 방법

📌 (1) 파일 시스템 정보를 확인하는 방법

sudo dumpe2fs /dev/sda1 | grep -i "inode"

출력 예시:

Inode count:              61054976
Free inodes:              61054321
Inodes per group:         16384
Inode size:               256

총 61054976개의 inode가 존재
inode는 256바이트 크기로 저장됨
각 블록 그룹마다 16384개씩 inode가 배치됨


📌 (2) 특정 inode의 위치 확인

stat myfile.txt

출력 예시:

  File: myfile.txt
  Size: 13         Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d    Inode: 123456      Links: 1

myfile.txtinode 123456에 저장되어 있음
✅ 하지만 inode table이 어디 있는지는 아직 모름

inode가 저장된 블록 그룹을 찾으려면?

debugfs /dev/sda1

그다음 inode 번호를 검색

stat /123456

출력 예시:

Inode: 123456   Type: regular  Mode:  0644  Flags: 0
Generation: 294563890
User: 1000   Group: 1000
File ACL: 0

inode 123456이 실제로 존재하는지 확인 가능


3️⃣ inode table은 어떻게 관리될까?

파일 시스템에서는 inode를 그룹 단위(block group) 로 나누어 관리합니다.

📌 ext4 파일 시스템에서 inode table 위치 예시

Block Group 0:
    Superblock 위치
    Group Descriptor Table
    Inode Bitmap
    Block Bitmap
    Inode Table  ⬅️ (여기에 inode들이 저장됨)
    Data Blocks
  • Inode Bitmap: 사용 중인 inode를 관리 (0: 사용 안 함, 1: 사용 중)
  • Block Bitmap: 데이터 블록 사용 여부 관리
  • Inode Table: 실제 inode 메타데이터 저장

4️⃣ inode table의 크기와 한계

inode는 파일 시스템이 생성될 때 미리 할당되므로, 파일 시스템을 만들 때 정해진 inode 개수 이상 파일을 생성할 수 없음

📌 inode 개수 확인

df -i

출력 예시:

Filesystem      Inodes   IUsed    IFree  IUse% Mounted on
/dev/sda1     61054976  123456 60931520   0%   /

현재 61054976개의 inode 중 123456개 사용됨
inode가 부족하면 새 파일을 만들 수 없음

📍 디스크 용량이 남아 있어도 inode가 부족하면 더 이상 파일을 생성할 수 없음
📍 이 문제를 피하려면 파일 시스템을 생성할 때 inode 개수를 충분히 설정해야 함


📌 5️⃣ 정리

1️⃣ inode는 파일 시스템의 “inode table” 영역에 저장됨
2️⃣ 각 블록 그룹별로 inode table이 존재하며, 파일 시스템 생성 시 미리 정해짐
3️⃣ df -i, dumpe2fs, debugfs 명령어로 inode 정보를 확인 가능
4️⃣ inode가 부족하면 디스크 용량이 남아 있어도 파일을 생성할 수 없음

🔥 즉, inode는 파일 시스템의 중요한 관리 구조이며, 디스크 공간뿐만 아니라 inode 개수도 고려해야 한다! 🔥