본문으로 바로가기

[운영체제(OS)] 파일시스템

category Computer Science/OS 2021. 7. 13. 20:29

파일 시스템

파일 시스템이란 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘이다.

파일 시스템의 등장

데이터를 저장매체에 저장할 때 비트 단위로 관리하기는 오버헤드가 큼. 때문에 블록 단위(보통 4KB)로 관리하기 시작함. 파일 블록들은 연속된 공간에 존재하면 좋지만 외부 단편화 문제가 발생. 파일 사이즈는 가변적이기 때문. 때문에 아래와 같이 불연속 공간에 파일을 저장 및 탐색하기 위해 아래와 같은 기법들이 사용된다.

  • 블록체인: 블록을 링크드 리스트로 연결
  • 인덱스 블록 기법: 각 블록에 대한 위치 정보를 기록해서, 한 번에 불록을 찾아가는 방식

파일 시스템의 종류

Window: FAT, FAT32, NTFS 방식 → 블록 위치를 FAT라는 자료구조에 기록
Linux(UNIX): ext2, ext3, ext4 방식 → 일종의 인덱스 블록 기법인 inode 방식 사용

inode 방식 파일 시스템

inode의 고유값과 자료구조에 의해 주요 정보가 관리되는 파일 시스템이다. inode에 있는 파일 상세정보를 바탕으로 파일에 액세스 할 수 있다. inode 방식 파일 시스템의 기본 구조는 다음과 같다.

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

▲ inode 방식의 파일 시스템

inode의 정보

inode에는 파일 권한, 소유자 정보, 파일 사이즈, 생성시간, 데이터 저장 위치 등 파일에 대한 메타데이터가 포함되어 있다. 운영체제는 inode의 메타 데이터를 바탕으로 파일을 관리한다.

inode 구조와 파일 데이터

리눅스에서 데이터 블록 하나당 4KB를 가진다. 하지만 파일 시스템은 수십 GB가 넘는 대용량의 파일도 지원할 수 있어야 한다. inode에서는 수많은 데이터 블록을 관리하기 위해서 Direct blocks / Single indirect / Double indirect / Triple indirect와 같은 단계를 두어서 대용량 파일까지 지원한다.

▲ inode 구조