Ⅰ. i-node의 개요
- i-node 정의
- 각 파일에 대한 정보를 기억하는 약 120byte 고정된 크기의 구조체
- 일반 파일, 디렉토리 파일 i-node -> 파일의 디스크 블록 위치
- 특수 파일의 i-node -> 주변 장치를 식별 정보
- i-node 정보
- 파일의 유형(정규형, 디렉토리형, 특수형 파일), 파일의 허가권, 소유자와 그룹. 하드 링크 개수,
마지막 수정과 마지막 접근 시간, 블록의 위치, 특수 파일이라면 주와 보조 장치 번호, 만약
심볼릭 링크라면 심볼릭 링크의 값
Ⅱ. i-node 구조
구성 요소 | 설 명 | 비 고 |
Mode | 파일과 관계된 접근과 실행권한을 저장하는 플래그 | 16비트 플래그 |
Owner | 파일과 관계된 개별 소유자, 그룹 소유자 | |
TimeStamp | 마지막 접근, 마지막 수정 시각 | |
Size Block | 파일의 바이트수 | |
Count | 파일시스템의 브록크기를 바이트 단위로 표시 | |
Direct | 직접데이타 블록을 가리키는 포인터로 구성 12개 Points Array 로 구성 |
Block이 8,192Byte일 경우 96KB |
Single Indirect | Index block을 가리킴, 이 인덱스 블록은 실제 데이터 블록을 가리키는 포인터로 구성 | 96KB ~ 16MB |
Double Indirect | Index block이 2개의 레이어로 구성, 첫번째 인덱스 블록은 두번째 인덱스 블록을 가리키는 포인터로 두번째 인덱스 블록은 실제 데이터 블록을 가리킴 | 16MB ~ 32GB |
Triple Indirect | Index block이 3개의 레이어로 구성, 첫번째, 두번째 인덱스 블록은 다른 인덱스 블록을 가리키는 포인터 센번째 인덱스 블록은 실제 데이터블록을 가리키는 포인터로 구성 |
70TB |
[참고 - 세부설명]
i-node
- Unix File System의 각 file은 시스템 내부에서 i-node로 표현된다.
- 각 i-node는 서로 구별되는 i-node number를 갖는다.
- ‘ls –i’명령을 사용하여 i-node number를 확인할 수 있다.
- stat() 함수를 사용하여 ‘struct stat’의 ‘st_ino’값을 읽음으로써 i-node number를 얻을 수 있다.
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *path, struct stat *buf);
- 어느 한 file이나 directory가 만들어 질 경우 그에 해당되는 하나의 i-node가 만들어 지고, i-node list에 등록된다.
- I-node는 64 byte 크기이며 root directory의 i-node number는 1이다.
- I-node에 담겨진 내용 (SunOS의 경우)
참조: “Advanced Programming in the Unix Environment,” by W. Richard Stevens
- File의 최대 크기 (SunOS의 경우)
data / directory blocks
- File은 연속된 block (regular file의 경우 data block, 혹은 directory file의 경우 directory block)으로 구성된다.
- I-node에 file을 구성하는 block에 대한 정보 (pointer 집합)가 들어 있다.
- Block의 크기는 보통 512 bytes이다. (SunOS의 경우 8192 bytes)
- Data block은 regular file의 내용을 담는다.
- Directory block은 directory에 있는 subdirectory들과 file들의 정보를 담는다.
- Directory의 내용을 읽을 때는 opendir(), readdir(), closedir() 함수들을 사용하며 directory의 내용은 ‘dirent’ structure에 담겨진다.
- Directory file은 추가적으로 두 개의 entity를 더 담고 있는데, directory tree를 탐색할 때에는 이 두 개의 entity를 무시해야 한다.
참조: “Advanced Programming in the Unix Environment,” by W. Richard Stevens
'IT 이야기 > Software Engineering' 카테고리의 다른 글
Refactoring (마틴 파울러 책 기반) (2) | 2023.09.26 |
---|---|
전사관점의 프로젝트 통합 관리 조직, PMO의 개요 (1) | 2023.09.20 |
크립토재킹의 정의와 공격 방식 (0) | 2023.09.19 |
[CA] HA 개념 정리 (2) | 2023.08.26 |
[CA] RAID 개념 정리 (0) | 2023.08.25 |