운영체제에서 사용하는 파일 시스템 중 하나에요. Inode
의 기본 구조는 파일 시스템을 대표하는 수퍼 블록, 그 파일의 상세 정보, 일종의 PCB
인 아이노드 블록 그리고 실제 데이터를 담은 데이터 블록이 있어요(파일 시스템에서의 블록은 하나의 단위에요. 이 블록의 크기는 1~4KB정도에요. 따라서 하나의 파일엔 다수의 데이터 블록이 있어요).
위 그림은 언급한 블록의 관계도에요.
파일은 inode
고유 값과 자료구조에 의해 주요 정보를 관리해요. 컴퓨터를 사용하는 사람은 파일 이름으로만 인식하지만, 실제 컴퓨터는 파일이름:inode로 파일과 inode
번호를 매칭시켜 인식해요.
파일 처리
1. 파일이 생성되자마자inode
번호가 부여되요.
2.inode
블록이 생성되어 상세 정보Meta-data
가 기입되요.
3. 이를 기반으로 파일을 접근해요.
가져온 그림은 리눅스에서 사용하는 파일 시스템인 ext
에 대한 구조에요. inode
메타 데이터에는 파일 권한, 소유자 정보, 파일 사이즈, 생성 시간 등 시간 정보 및 데이터 저장 위치 등을 담고 있어요.
예시로 설명드리자면, cat
명령어는 대상 파일의 내용을 출력해요. 이에 대한 메커니즘은,
inode
블록에 접근해서 파일의 정보를 읽어요.- 이후 Direct Block에 접근해서 내부 데이터를 읽어와요.
이 Direct Block은 12개의 주소만 저장해요. 블록의 크기는 최대 4KB니까 파일의 공간은 48KB 밖에 되지 않아요. 하지만 우리가 사용하는 모든 프로그램이나 파일은 이 크기를 아득히 뛰어넘죠. 이 구조에서 어떻게 파일을 관리하면 될까요?
파일의 용량이 클수록 데이터 정보를 담는 Direct Block
의 크기를 늘리면 비효율적이에요. 그래서 이를 Single Indirect, Double Indirect, Triple Indirect로 처리해요.
각 Indirect
는 4KB의 블록인데, 여기 안에 데이터를 직접 처리하는게 아니라 특정 블록을 접근할 수 있게 주소를 담고 있어요.
Single Indirect
의 경우 4KB / 4byte = 1024개의 데이터 주소를 담아요. 그리고 Double Indirect
는 Single Indirect
의 주소를 1024개를 담고 있어요. 계산하면 1024 x 1024 x 4KB = 4GB정도의 데이터를 접근할 수 있어요. 마지막으로 Triple Indirect
는 Double Indirect
의 주소를 1024개 담고 있어요. 이러한 구조를 통해 파일은 비교적 적은 블록을 가지고 있어도 대량의 데이터를 관리할 수 있게 되는거에요.
inode
에 대한 내용은 여기까지에요.