OS #32 Inode 방식 & VFS

underlier12·2020년 4월 10일
0

OS

목록 보기
32/35

32. Inode 방식 & VFS

Inode 방식 파일 시스템

파일 시스템의 기본 구조로 다음과 같은 3가지 블록으로 구분된다.

  • 수퍼 블록 : 파일 시스템 정보
  • 아이노드 블록 : 파일 상세 정보
  • 데이터 블록 : 실제 데이터

수퍼 블록

수퍼 블록은 파일 시스템 정보 및 파티션 정보를 포함한다.

Inode와 파일

파일은 inode 고유값과 자료구조에 의해 주요 정보를 관리한다.

  • '파일이름:inode' 로 파일이름은 inode 번호와 매칭
  • 파일 시스템에서는 inode를 기반으로 파일 엑세스
  • inode 기반 메타 데이터 저장

Inode 구조

inode 기반 메타 데이터는 다음과 같은 구조로 되어 있다.
(파일 권한, 소유자 정보, 파일 사이즈, 시간 관련 정보, 데이터 저장 위치 등)

다음과 같이 cat이라는 명령어를 통해 파일 내용을 열어 볼때 등장하는 내용들은 inode 구조상 Direct Blocks에 존재하는 데이터이며 ls -al 이라는 명령을 통해 파일의 정보를 볼 때 등장하는 정보는 Mode, Owner info, Timestamp 등에 있다.

Direct Block 및 Indirect Block들에 대해 따로 분리하여 설명하자면 다음과 같다. 기존에 Direct Block만 존재하여 4KB 크기의 데이터 12개만 처리가 가능하였고 최대 48KB의 데이터만 핸들링 할 수 있었다. 하지만 더 큰 크기의 데이터를 내포해야 할 필요가 있었고 Single indirect는 한 깊이 들어가서 Direct block을 연결한 것이며 따라서 여기에는 4KB/4byte = 1024개 즉 4MB 만큼의 data를 포함할 수 있게 된다. 동일한 원리로 Double indirect는 두 깊이 들어가고 Triple indirect는 3깊이 더 깊게 연결되어 더 큰 용량의 데이터를 포함시킬 수 있다.

디렉토리 엔트리

리눅스의 경우 파일 탐색을 할 때 -/home/ubuntu/link.txt와 같은 형식으로 엔트리를 탐색한다. 즉 엔트리는 해당 디렉토리 파일/디렉토리 정보를 가지고 있다.

다음과 같은 예시에서는 '/' dentry에서 'home'을 찾고, 'home'에서 'ubuntu'를 찾고, 'ubuntu'에서 link.txt 파일이름에 해당하는 inode를 얻는다.

VFS

Virtual File System은 가상 파일 시스템으로 네트워크 등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리할 수 있도록 구성된 시스템이다.

따라서 모든 인터렉션은 파일을 읽고 쓰는 것처럼 이루어져 있다. 마우스, 키보드와 같은 디바이스 관련 기술도 파일과 같이 다루어지며 이를 통해 엔드 유저는 이 추상화된 인터페이스만 다룰 수 있으면 모든 것을 통제할 수 있게되는 편의를 얻게 된다.

profile
logos and alogos

0개의 댓글