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.txt
는 inode 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. 정리
- inode는 파일 시스템의 “inode table” 영역에 저장됨
- 각 블록 그룹별로 inode table이 존재하며, 파일 시스템 생성 시 미리 정해짐
- df -i, dumpe2fs, debugfs 명령어로 inode 정보를 확인 가능
- inode가 부족하면 디스크 용량이 남아 있어도 파일을 생성할 수 없음
inode는 파일 시스템의 중요한 관리 구조이며, 디스크 공간뿐만 아니라 inode 개수도 고려해야 함