Performance Issue: UFS(Unix File System) => FFS(Fast File System)

Jin Hur·2021년 7월 5일
0

[Linux] File system

목록 보기
16/22

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

UFS(Unix File System)

Layout

  • Boot Sector: 시스템이 처음 작동할 때 부팅 과정에서 필요한 정보들
  • Super Block: metadata for FS(FS 전체를 관리), 파일 시스템의 크기, 아이노드의 갯수, 아이노드 위치 등..
  • Bitmap / Inode / User data

pros(+): Simpla and easy-to-use

cons(-): long seek time, multiple I/O per a write

UFS 성능 저하 이유

1) inode와 user data가 다른 트랙에 존재할 확률이 크다.
2) 시간이 지날수록 외부 단편화가 증가한다.
=> Seek Time 증가
multiple I/O and inode 블록과 user data 블록의 트랙 차이 => Seek Time 증가

UFS의 성능 이슈 해결 => FFS(Fast File System)

(아이디어)

  • 아이노드와 데이터 블록을 가까운 위치에 놓는다.(Disk-awareness)
    => Data in the same cylinder(같은 트랙 집합) -> no seek distance(or closer cylinder -> less seek distance)
  • 실린더들을 하나의 그룹으로 묶고, 하나의 파일의 content(inode and data blocks)를 같은 실린더 그룹에 넣는다.

(FFS in Detail)
  • 파일 시스템이 설치될 파티션(또는 디스크)는 실린더 그룹들로 나뉨(참고로 ext2의 경우 block group이라 칭함).

  • 하나의 실린더 그룹의 구조

    • Superblock(duplication for reliability)
    • per group bitmap, inode, and data blocks
  • Management

    • 하나의 파일의 inode와 데이터 블록들을 같은 실린더 그룹에 할당.

      (FFS's Layout) 하나의 파티션에 FFS 생성.

    FFS's Allocation issue

  • Rule A. Directory: 디렉터리 하위에 최대한 많은 파일들이 생성되게끔 한다. -> to balance directories across groups(fairness)
    -> load-balancing을 위해 각 그룹마다 디렉터리 갯수를 균등하게 할당한다.

  • Rule B. File: (1)해당 파일이 속한 디렉터리와 같은 실린더 그룹에 파일을 할당한다. (2) 파일의 아이노드와 데이터 블록들을 같은 실린더 그룹에 할당한다. -> to allocate inode, data blocks and directory as close as possinble
    -> "name space locality"를 활용

  • How to handle a large file for allocation in FFS? => Rule C
    : 하나의 파일 데이터가 하나의 실린더 그룹을 독점할 수 있음. 이럴경우 디렉터리 내 다른 파일에 대해 name space locality를 활용할 수 없음.
    : (해결) 한정된 블록을 할당한다(a limited number of blocks, called as chunks). 남은 데이터들은 다른 실린더 그룹의 청크에 할당한다.
    : pros: locality among files / cons: locality in a file

FFS의 다른 특징들

  1. UFS의 디스크 블록 크기: 512B => FFS의 디스크 블록 크기: 4KB(대부분의 FS의 블록 사이즈는 4KB)

    (블록 크기 증가)

    pros: Less seek and more transfer -> higher bandwidth
    cons: 내부 단편화(internal fragment) 증가 <- (해결채) sub-blocks (fragment) allocation

  2. Symbolic link 처음 도입

  3. atomic rename(), long file name, ...

0개의 댓글