UFS / FFS / EXT2 / EXT3 / EXT4

Jin Hur·2021년 9월 17일
0

[Linux] File system

목록 보기
12/22

reference: https://pages.cs.wisc.edu/~remzi/OSTEP/, 시스템 프로그래밍, 운영체제 수업(최종무 교수님)

UFS(UNIX File System)

  • 하나의 파티션에 올려진 파일 시스템에 대한 레이아웃이 단일적이다.
  • 따라서 아이노드 블록 부분과 데이터 블록 부분을 반복적으로 이동하며 읽기/쓰기를 하는 특성상 seek time이 커지게 된다. 결국 성능적으로 불리하다.
  • 추가로 시간이 지날수록 외부 단편화가 심해진다. 이 또한 성능적 불리로 작용한다.


source: https://embedded.dankook.ac.kr/~choijm/


FFS(Fast File System)

  • from BSD OS
  • 디스크의 물리 구조를 고려하여(disk-awareness) 설계하였다.
  • 구체적으로 만약 데이터들이 같은 실린더에 존재한다면 seek time이 발생하지 않는다는 점을 고려하였다.
  • FFS부터 '실린더 그룹'이란 것이 정의되는데, 이는 인접한 실린더들의 집합을 뜻한다.
  • 하나의 파티션은 결국 여러 개의 실린더 그룹으로 나뉘어진다.
  • 하나의 파일을 위한 비트맵 정보/아이노드/(user)데이터들은 하나의 실린더 그룹에 다 저장이 된다.



source: https://embedded.dankook.ac.kr/~choijm/

이 FFS의 아이디어는 ext2/3/4에도 적용된다.
ext2에선 실린더 그룹을 '블록 그룹'이라고도 부른다.

Allocation-Rule

FFS에선 하나의 파일을 저장할 때 몇가지 할당 규칙(Allocation-Rule)에 따라 특정 실린더 그룹에 저장된다.

FFS의 다른 특징들

  1. UFS의 디스크 블록 사이즈: 512B(sector) => FFS의 디스크 블록 사이즈: 4KB(disk block)
  • (+) seek time이 줄어들고, 더 많은 큰 사이즈의 I/O가 가능하다. => Higher Bandwidth
  • (-) 블록 사이즈가 커짐에 따라 내부 단편화가 빈번해진다. => 'sub-blocks allocation으로 해결'
  1. parameterized placement
  • rotational time 고려
  1. 심볼릭 링크, atomic rename(), long file name ..

참고: Ext 2/3/4 차이와 장단점
https://blog.soobinpark.com/142

Ext2

  • FFS의 실린더 그룹 개념을 승계한다. = 블록 그룹(block group)
  • (+) pre-allocation(선할당) (usally 8 adjacent block) => 외부 단편화 방지
  • (+) Read-ahead during sequential reads => 읽기 성능 향상

Ext3

  • Ext2 + 저널링(journaling)
  • 여러 블록 그룹 중 하나를 저널링을 위해 사용한다.
  • 저널의 타입: 1) 데이터 저널, 2) ordered, 3) writeback


source: https://embedded.dankook.ac.kr/~choijm/

저널링 참고: https://velog.io/@jinh2352/Consistency-FSCK-and-Journaling

Ext4

Ext3 + Lager file system capacity with 64-bit + Extent-based mapping + Hash based directory entries management

Lager file system capacity with 64-bit

  • 기존, 블록 사이즈: 4KB 가정
  • 기존 32-bit 시스템에서 최대 file size: (by triple-indirect pointer 1024^3*4KB) 4TB
  • 기존 32-bit 시스템에서 최대 file system size: 2^32(blocks) * 4KB = 16TB

  • 최대 file size: 16TB
  • 최대 file system size: 2^64(blocks) * 4KB
  • 다른 파일 시스템보다 하나의 디렉터리가 가질 수 있는 디렉터리(sub directory)가 더 많다. (up to 64,000 subdirs)

Extent-based mapping

  • Extent: variable size
  • (extent)트리 구조에서 split/merge 방식이 필요하다.
  • 인접한 16KB가 있을 때, one-mapping(Ext4) vs 4-mappins(Ext2/3)
  • extent structure: offset + length

    source: https://embedded.dankook.ac.kr/~choijm/

0개의 댓글