Post

File System 1

프로젝트를 구현하기에 앞서 파일 시스템에 대해서 간단하게 알아보고자 한다.

파일이란

  • 데이터를 저장하는데 사용되는 단위로, 일반적으로 레코드 또는 블록 단위로 비휘발성 보조기억장치에 저장된다.
  • 파일을 관리하기 위한 각종 정보를 포함하는 메타데이터와 실제 파일의 데이터로 이루어진 데이터 영역으로 구성되어 있다.

메타데이터에 포함되는 정보

1
2
3
4
5
6
7
1. Name : 사람이 읽을 수 있는 형태의 유일한 정보
2. Identifier : 파일 시스템 내부의 유일한 식별 태그
3. Type : 파일의 종류
4. Location : 장치내에서 파일의 위치를 위한 포인터
5. Size : 현재 파일의 크기
6. Protection : 읽기, 쓰기, 실행에 대한 권한 제어
7. Time,date,and userIdentification : 파일 사용에 대한 보호,보안,모니터링을 위한 데이터

파일 시스템이란

컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 말한다. ex) FAT, HPFS, NTFS, UFS, Ext2

ext2의 전체적인 구조를 통해서 Block group의 각 부분이 어떤 역할을 하는지 간단하게 정리해 보았다.

ext2-Data-Structure

1
2
3
4
5
6
7
8
9
1. Super block : 전체적인 파일 시스템의 정보를 담고 있으며 여러개의 Block Group에 모두 동일한 값으로 저장되어 있다. ( 총 inode 개수, 총 블록 개수, 볼륨 라벨명, 블록 사이즈 등) 

2. Block descriptor table : 각 Block Group에 있는 Data Block bitmap, inode bitmap, inode table의 위치를 알려주며, 각각의 Block Group에 포함된 위치를 알려주므로, Block Group의 개수만큼의 엔트리가 존재한다.

3. Data block bitmap, inode bitmap : inode와 data의 할당 정보에 대한 정보를 담고 있으며, 할당되어있을 경우 1, 아닐 경우 0으로 표시한다.

4. inode table : 각 파일의 inode 정보가 표 형식으로 배열되어 있으며, 각 Inode에는 접근시각, 수정시각, 삭제시각, extents 트리 데이터, extents 할당 블록 개수, 데이터의 위치 등의 정보를 담고 있다. 

5. Data Blocks : 실제 데이터들이 저장되어 있는 곳이며, Block 단위로 게산을 하고, Inode 정보를 통해 파일의 실제 데이터 위치를 파악한다.

inode란

inode-structure

각 파일은 생성과 함께 inode 번호를 할당 받으며, 파일 시스템은 파일 이름이 아닌 inode 번호를 기반으로 파일을 검색하고 엑세스하게 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1. Mode, Owner Info, Size, Timestamps : inode의 메타 데이터가 기록되는 영역이다.
   1-1. Mode : 권한
   1-2. Owner info: 사용자 정보
   1-3. Size: 파일 사이즈
   1-4: TimeStamps: 파일 생성시간

2. Direct Blocks(12개)
   2-1. 12개의 주소 공간을 가진다. ( 파일 시스템에 따라 다를 수 있다.)
   2-2. 각 주소 공간이 실제 데이터 블록을 가리키게 된다.
   2-3. 각 데이터블록은 4Kb의 크기를 갖는다.
   2-4. 12개로 구성되어 있기 때문에 총 48Kb 용량을 차지한다. 

3. Single Indirect Block : 데이터 블록의 주소를 가리키는 4byte 단위의 포인터로 구성되어 있으며 총 4kb의 크기를 갖는다.

4. double Indirect Block : single indirect block을 가리키는 포인터로 구성되어 있으며 총 4kb의 크기를 갖는다.

5. Triple Indirect Block : 동일한 방식으로 Double indirect block을 가리키는 포인터로 구성되어 있다.
This post is licensed under CC BY 4.0 by the author.