Be ready to study forever - 개발자 꿈나무

파일 시스템 본문

Programming/Operating System

파일 시스템

루눌룹 2021. 1. 7. 19:19

파일 시스템이란?

운영체제가 효과적으로 저장매체에 파일을 쓰기 위한 자료구조와 알고리즘을 파일 시스템이라고 한다. 생소하지만 Linux에서는 파일, 디랙토리, I/O디바이스(마우스, 모니터, 키보드등), 네트워크등 모든 것을 파일로서 정의한다. 따라서 모니터나 키보드에 접근하는 명령어도 파일에 접근하는 명령어와 동일하며 실제로 디랙토리의 /dev로 가면 키보드, 모니터 등이 파일로 존재한다.

파일을 처리하는 VFS interface에서 네트워크 및 I/O디바이스 역시 취급하고 있음. 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용하기 때문에 모든 인터렉션을 파일을 읽고 쓰는 것처럼 이루어져있음

 

Linux 의 디랙토리 구조

 

 

파일시스템의 종류

운영체제마다 구현하는 파일 시스템이 다름.

Windows – FAT, FAT32, NTFS – 블록 위치를 FAT라는 자료구조에 기록

Linux(Unix): ext2, ext3, ext4 – 일종의 인덱스 블록 기법인 inode 방식 사용

 

inode 방식 파일 시스템

inode 방식의 파일 시스템은 인덱스 블록 기법으로 구조를 살펴보면 크게 3가지 블록이 존재

-      수퍼 블록

-      아이노드 블록

-      데이터 블록

수퍼블록

파일 시스템의 파일 시스템이 의존하는 정보(파일 시스템의 크기, 파티션 정보 등)를 가지며 전체적인 정보를 보관함

df 명령어로 확인한 수퍼블록에 저장된 정보 ( 파일 시스템 ,  디스크 크기 ,  사용량 ,  사용률 ,  마운트 지점 등 )

 

수퍼 블록과 아이노드 블록의 관계

아이노드 블록

아이노드 기반 파일의 메타데이터를 저장한 블록(파일권한, 소유자 정보, 파일 사이즈, 생성시간, 데이터 저장 위치등) Linux명령어 ls -al로 확인 할 수 있는 정보

 

데이터 블록

데이터 블록은 아이노드 블록 안에 저장되어 있는데, 크게 Direct block, Single Indirect block, Double indirect block, Triple indirect block 이로 나뉜다. 이와 같이 나눈 이유는 파일의 크기는 천차만별이며 파일의 크기에 따라 효과적으로 데이터를 저장하기 위해 고안된 기법임.

- Direct block

아이노드 블록 안에 직접적으로 저장되는 데이터 블록으로 아주 적은 양의 데이터 일 경우에 사용(4kb*12의 공간)

- Single Indirect block

블록안에 데이터를 바로 넣는 것이 아니라 데이터가 저장된 주소값을 가지고 있어서 더 많은 양의 데이터를 보관 가능함(4kb*1024의 공간)

- Double indirect block

Single Indirect block블록과 원리는 같지만 주소값 참조에 참조를 하여 더 많은 데이터를 보관(4kb*1024*1024의 공간)

- Triple indirect block

Single Indirect block블록과 원리는 같지만 주소값 참조에 참조를 하여 더 많은 데이터를 보관(4kb*1024*1024*1024의 공간)

 

'Programming > Operating System' 카테고리의 다른 글

[Linux]리다이렉션과 파이프  (0) 2021.01.11
[Linux] 파일 권한  (0) 2021.01.11
가상 메모리와 페이징  (0) 2021.01.07
Thread의 이해  (0) 2021.01.06
프로세스 구조와 IPC(Inter Process Communication)  (0) 2021.01.06
Comments