커널에서 System Call을 통해서 file/IO 등을 처리

Architecture

File

유저의 관점에서 가장 작은 할당 단위

속성(metadata)

  • Name
  • Identifier
  • Type
  • Location
  • Size
  • Protection
  • Time

Inode (Unix)

파일의 메타데이터+ file block의 pointer를 저장하는 블럭(FCB)

Directory

디렉토리도 사실상 파일로 attribute로 구분

  • Inode은 disk에 저장
  • 다만 memory에 cache 시켜 속도를 향상시키기도 함

File descriptor

  • 프로세스는 각자의 파일 디스크립터 테이블(접근하고 있는 파일 리스트)을 가짐
  • 접근 시에는 integer로 접근하게 함(커널이 직접 주소로 접근하기 위해)
  • 커널이 접근할 때는 inode의 주소로 통해 접근
  • 해당 방식을 통해 여러 프로세스가 동시에 같은 파일에 접근 가능하게 하며, 동시성 문제 해결

Hard Link

  • 서로 다른 directory entire가 같은 Inode의 주소를 갖고 있음
  • 같은 파일시스템 내에서만 가능함
  • 원본 파일을 지워도 ref count만 변해서 상관없음

Soft Link (Symbolic Link)

  • 원본 파일을 ref하는 새로운 파일 생성
  • 기존 원본 파일 지우면 문제 생김
  • 다른 파일시스템을 통해서도 가능

Mounting File System

커널파일이 포함된 기본 root 파일시스템에 tree 형태로 특정 위치에 다른 파일시스템을 마운트할 수 있다.

Virtual File System

file system의 추상 레이어를 통해 여러 타입의 파일시스템을 제어할 수 있도록 함

제어할 때 같은 system call interface를 사용하지만 파일시스템 별로 다른 구현체를 사용함

Disk

파일시스템은 일단 디스크에 저장된다.

기본적으로 디스크는 할당할 수 있는 단위인 block으로 관리되고 파일시스템은 블럭에 해당 내용을 저장한다.

  • Boot Control Block
  • Volume Control Block (Superblock)
    • 해당 group에 있는 block 정보들
    • 복구에도 이걸보고 사용
  • Directory structure
  • File Control Block (Inode)
  • Blocks for free area

Block Allocation

file create, write할 때, 새로운 block을 할당해서 저장하게 되는데

  • 파일의 크기에 따라 block 추가 할당 가능해야함
  • 그렇다고 너무 큰 사이즈를 초기 할당하면 internal fragment가 너무 큼

저널링 파일시스템

  • 두 파일시스템 모두 durability를 보장하기 위해서 저널링이라는 로그를 활용
  • 디스크에 저널링을 위한 구역을