inode란?
Linux는 파일 시스템 내부의 모든 파일과 디렉토리에 index node(inode)를 할당해야 하는데 실제 데이터를 저장하진 않습니다. 대신, 각 파일 데이터의 스토리지 블록들을 찾을 수 있는 메타 데이터를 저장합니다.
inode에 담긴 메타데이터 유형
- 파일 타입
- 파일 권한 (permissions)
- 파일 크기
- Owner ID
- Group ID
- 마지막 접근 시간
- 마지막 수정 시간
- Soft / Hard 링크
- 접근 제어 목록 (Access Control List, ACLs)
inode의 기본 구조
- 파일 시스템의 전체 정보를 가진 슈퍼 블럭
- 각 파일의 상세 정보를 가진 inode 블럭
- 실제 데이터를 담은 데이터 블럭
inode 블럭의 구조
1) Mode, Owner Info, Size, Timestamps
- inode 메타 데이터가 기록되는 영역
2) Direct Blocks (12개)
- (파일 시스템에 따라 다르지만) 기본적으로 12개의 주소 공간을 갖습니다.
- 각 주소 공간이 실제 데이터 블럭을 가리킵니다.
- 각 데이터 블럭은 4 KB의 크기를 갖습니다.
3) Single Indirect Block
- 단일 개수로 구성되어 총 4 KB 크기 입니다.
- 데이터 블럭의 주소를 가리키는 4 byte 단위의 포인터로 구성되어 있습니다.
- 4 KB의 공간을 4 byte 포인터로 채운다면, 총 1024개의 포인터로 채울 수 있으며,
해당 포인터들이 각각 4 kb 데이터 블럭을 가리키므로, 1024 * 4 kb = 4 MB의 용량을 관리할 수 있습니다.
4) Double Indirect Block
- 단일 개수로 구성되어 총 4 KB 크기입니다.
- Single indirect block을 가리키는 포인터로 구성되었습니다.
- 그러므로 1024 * 1024 * 4kb = 4 GB 용량을 관리할 수 있습니다.
5) Triple Indirect Block
- Single / Double Indirect Bock과 동일한 방식으로 동작합니다.
- Double Indirect Bock을 가리키는 포인터로 구성되었습니다.
- 그러므로 1024 * 1024 * 1024 * 4kb = 4 TB 용량을 관리할 수 있습니다.
inode와 파일의 관계
파일은 inode 고유 값과 자료 구조를 통해 주요 정보를 관리합니다.
컴퓨터 사용자는 파일 이름으로 인식하지만, 실제 컴퓨터는 파일 이름 : inode 번호를 매칭시켜 인식합니다.
파일 처리 절차
1. 파일 생성 시 바로 inode 번호 부여된다.
2. inode 블록이 생성되어 상세 정보(metadata)가 기입된다.
3. 이를 기반으로 해당 파일에 접근
'CS > 운영체제' 카테고리의 다른 글
[Linux] 파일 시스템 관련 명령어 (0) | 2023.12.20 |
---|---|
[Linux] LVM이란? (0) | 2023.11.22 |
[Linux] RAID 란? (0) | 2023.11.19 |
[OS] 프로세스와 쓰레드에 대하여 (0) | 2023.10.19 |
[Linux] 리눅스 파티션과 포트 (0) | 2023.10.16 |