파일 시스템 (File System)

Linux 부팅 프로세스에서 중요한 역할을 하는 File System이다. SSD, HDD 등의 하드웨어에 저장된 데이터를 OS에서 어떻게 저장하고 관리할 것인지 결정한다. Windows에서는 윈도우 파일 탐색기를 통해 파일 시스템을 확인할 수 있다.

Windows 파일 탐색기

 

탐색기에서는 C:\ 폴더 아래에 여러 개의 폴더로 이루어지는 Tree 형태의 구조를 이루고 있다. 이러한 파일 시스템은 과거 DOS에서 사용한 FAT(File Allocation Table)부터 윈도우의 NTFS, 유닉스의 UFS 등이 존재한다.

(윈도우에서는 폴더라고 부르고 Unix 계열에서는 디렉토리 라고 불린다. 구분하는게 좋음!)

 

파일 시스템 종류

FAT(File Allocation Table)

  • FAT16(File Allocation Table)
    • 대부분의 MS 운영체제에서 호환되며, 단순한 구조
    • 최대 2GB까지 지원
    • 암호화, 압축 불가
    • 파일명 최대 길이는 영문 8글자
    • 클러스터당 1,632KB를 할당하여 내부 단편화가 발생한다.
  • FAT32(File Allocaiton Table)
    • FAT16의 진화된 버전, 최대 2TB까지 지원
    • 암호화 및 압축은 여전히 불가
    • 파일명의 최대길이는 영문 256자
    • 클러스터당 4KB를 사용하여 내부 단편화를 줄였다
  • NTFS(New Technology File System) --> 현재 Windows 에서 사용
    • 암호화 및 압축 지원, 대용량 파일 시스템 지원
    • 가변 클러스터 크기(512 ~ 64KB), Default 는 4KB이다.
    • 트랜잭션 로깅을 통해 복구/오류 수정이 가능
    • Windows NT 이상에서 지원

EXT(Extended File System)

  • EXT(Extended File System)
    • MINIX File System을 보완하여, 최대 2GB까지 파일 시스템 크기를 지원하낟.
    • 255Byte까지 파일명을 지원(영문 256자 아닌가..?)
    • 사용할 수록 단편화가 심해진다.
  • EXT2(Second Extended File System)
    • 파일 시스템은 최대 2GB까지 파일 시스템 크기를 지원, 서브 디렉터리 개수제한이 대폭 증가
    • FSCK를 사용한 파일 시스템 오류 수정을 지원한다.
    • 캐시의 데이터를 디스크에 저장 중에 오류 발생시 파일 시스템에 손상이 올 수 있다. (Sync 이전 데이터 손실)
    • FSCK를 이용한 파일 복구 시간에 많은 시간이 소요된다.(전체 섹터 검사 필수)
  • EXT3(Third Extended File System)
    • EXT2에 저널링 기능 추가 및 온라인 파일 시스템이 증대됨.
    • 파일 시스템 변경 시 저널에 먼저 수정내용을 기록한다. (갑작스러운 시스템 다운 시 빠르게 오류 복구)
    • 온라인 조각 모음이 불필요. (장시간 사용 시 조각화 발생)
    • 디스크 조각화를 최소화
  • EXT4 (Fourth Extended File System)
    • 16TB까지 파일 시스템 지원, 볼륨은 1 Exabyte 까지 지원
    • Block Mapping 방식 및 Extends 방식을 지원
    • 저널 Checksum 기능 추가를 통한 안정성 향상
    • 하위 호환성 지원: EXT3, EXT2와 호환 가능
    • Delayed Allocation: 디스크에 쓰이기 전까지 블록 할당을 미루는 기술로 조각화 방지에 효과적
    • 온라인 조각 모음: 조각화 방지를 위한 커널 레벨의 기술
    • Persistent pre-allocaiton: 파일 전체만큼의 공간은 사전할당, 스트리밍, 데이터베이스 등에 유용
  • UFS(Unix File System)
    • VTOC 디스크 레이블: 각 파티션의 기본정보
    • Boot Bloack: 부트스트랩에 필요한 파일들
    • Primary Super Block: 데이터 블록의 개수, 실린더 그룹의 개수, 마운트 정보 (블록 메타데이터?)
    • Backup Super Block: 각 실린더마다 슈퍼블록에 대한 복사본을 가짐
    • Cylinder Group: 슈퍼블록, 실린더 그룹블록, i-node 테이블, 데이터 블록을 포함
    • Super Block: 파일 시스템 크기, i-node 테이블의 크기, free block list 등 파일 시스템 관리 정보
    • Cylinder Group Block: 실린더 그룹 내의 유효 블록들의 비트맵 정보나 통계 정보
    • i-node Table: 파일에 대한 중요한 정보, 파일 크기, 위치, 유형, 사용 허가권, 날짜 정보
    • Data Block: 실제 데이터가 저장되는 공간

여러가지 파일 시스템에 알아봤는데, 심심하면 자기가 쓰는 OS의 파일 시스템 유형이 뭔지 알아보고 특징들을 다시보면 기억에 남을듯!

 

Reference

https://ohaengsa.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9CFile-System