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 개수도 고려해야 함