Chapter 14: File System Implementation

공부하자·2022년 12월 7일
1

운영체제

목록 보기
11/12
post-custom-banner

File-System Structure

  • File structure
    • Logical storage unit
    • Collection of related information
  • File system resides on secondary storage (disks)
    • Provided user interface to storage, mapping logical to physical
    • Provides efficient and convenient access to disk by allowing data to be stored, located retrieved easily
  • Disk provides in-place rewrite and random access
    • I/O transfers performed in blocks of sectors (usually 512 bytes)
  • File control block (FCB) – storage structure consisting of information about a file
  • Device driver controls the physical device
  • File system organized into layers
  • 파일 구조
    • 논리 저장 단위
    • 관련 정보 수집
  • 파일 시스템이 보조 스토리지(디스크)에 상주
    • 스토리지에 대한 사용자 인터페이스 제공, 논리적/물리적 매핑
    • 데이터를 저장하고 쉽게 검색할 수 있도록 하여 디스크에 대한 효율적이고 편리한 액세스를 제공
  • 디스크는 인플레이스 재작성 및 랜덤 액세스를 제공합니다.
    • 섹터 블록에서 수행되는 I/O 전송(일반적으로 512바이트)
  • 파일 제어 블록(FCB) – 파일에 대한 정보로 구성된 스토리지 구조
  • 장치 드라이버가 물리적 장치를 제어
  • 파일 시스템을 계층으로 구성

Layered File System

File System Layers

  • Device drivers manage I/O devices at the I/O control layer
    • Given commands like “read drive1, cylinder 72, track 2, sector 10, into memory location 1060” outputs low-level hardware specific commands to hardware controller
  • Basic file system given command like “retrieve block 123” translates to device driver
  • Also manages memory buffers and caches (allocation, freeing, replacement)
    • Buffers hold data in transit
    • Caches hold frequently used data
  • File organization module understands files, logical address, and physical blocks
  • Translates logical block # to physical block #
  • Manages free space, disk allocation
  • 장치 드라이버는 I/O 제어 계층에서 I/O 장치를 관리한다.
    • "드라이브 1, 실린더 72, 트랙 2, 섹터 10, 메모리 위치 1060으로 읽기"와 같은 명령이 주어지면 하드웨어 컨트롤러에 낮은 수준의 하드웨어 관련 명령을 출력한다.
  • "블록 123 검색"과 같은 기본 파일 시스템이 제공된 명령은 장치 드라이버로 변환된다.
  • 메모리 버퍼 및 캐시(할당, 여유 공간, 교체)도 관리한다.
    • 전송 중인 데이터를 보유하는 버퍼
    • 자주 사용하는 데이터를 캐시에 저장
  • 파일 구성 모듈이 파일, 논리적 주소 및 물리적 블록을 이해함
  • 논리 블록 #을 물리적 블록 #로 변환합니다.
  • 사용 가능한 공간, 디스크 할당 관리

  • Logical file system manages metadata information
    • Translates file name into file number, file handle, location by maintaining file control blocks (inodes in UNIX)
    • Directory management
    • Protection
  • Layering useful for reducing complexity and redundancy, but adds overhead and can decrease performanceTranslates file name into file number, file handle, location by maintaining file control blocks (inodes in UNIX)
    • Logical layers can be implemented by any coding method according to OS designer
  • 논리 파일 시스템이 메타데이터 정보를 관리한다.
    • 파일 제어 블록(UNIX의 아이노드)을 유지 관리하여 파일 이름을 파일 번호, 파일 핸들, 위치로 변환한다.
    • 디렉토리 관리
    • 보호
  • 복잡성과 중복성을 줄이는 데 유용하지만 오버헤드를 증가시키고 성능을 저하시킬 수 있는 계층화 파일 제어 블록(UNIX의 아이노드)을 유지 관리하여 파일 이름을 파일 번호, 파일 핸들, 위치로 변환
    • 논리 계층은 OS 설계자에 따라 어떤 코딩 방법으로도 구현 가능

  • Many file systems, sometimes many within an operating system
    • Each with its own format (CD-ROM is ISO 9660; Unix has UFS, FFS; Windows has FAT, FAT32, NTFS as well as floppy, CD, DVD Blu-ray, Linux has more than 130 types, with extended file system ext3 and ext4 leading; plus distributed file systems, etc.)
    • New ones still arriving – ZFS, GoogleFS, Oracle ASM, FUSE
  • 많은 파일 시스템, 때로는 운영 체제 내의 많은 파일 시스템
    • 각각 고유한 포맷(CD-ROM은 ISO 9660, 유닉스는 UFS, FFS, 윈도우는 FAT32, NTFS는 물론 플로피, CD, DVD 블루레이, 리눅스는 130가지 이상의 종류를 가지고 있으며 확장 파일 시스템 ext3와 ext4가 선두에 있다.)을 가지고 있다.
    • 새로운 제품이 아직 출시 중입니다 – ZFS, GoogleFS, Oracle ASM, FUSE

File-System Operations

  • We have system calls at the API level, but how do we implement their functions?
    • On-disk and in-memory structures
  • Boot control block contains info needed by system to boot OS from that volume
    • Needed if volume contains OS, usually first block of volume
  • Volume control block (superblock, master file table) contains volume details
    • Total # of blocks, # of free blocks, block size, free block pointers or array
  • Directory structure organizes the files
    • Names and inode numbers, master file table
  • 우리는 API 수준의 시스템 호출이 있지만, 우리는 그들의 기능을 어떻게 구현하는가?
    • 온디스크 및 인메모리 구조
  • 부팅 제어 블록에는 해당 볼륨에서 OS를 부팅하는 데 필요한 시스템에 필요한 정보가 포함되어 있다.
    • 볼륨에 OS(일반적으로 볼륨의 첫 번째 블록)가 포함된 경우 필요
  • 볼륨 컨트롤 블록(슈퍼블록, 마스터 파일 테이블)에 볼륨 세부 정보가 포함되어 있다.
    • 총 블록 수, 사용 가능한 블록 수, 블록 크기, 사용 가능한 블록 포인터 또는 배열
  • 디렉터리 구조가 파일을 구성한다.
    • 이름 및 아이노드 번호, 마스터 파일 테이블

  • Per-file File Control Block (FCB) contains many details about the file
    • typically inode number, permissions, size, dates
    • NFTS stores into in master file table using relational DB structures
  • 파일별 파일 제어 블록(FCB)에는 파일에 대한 많은 세부 정보가 포함되어 있다.
    • 일반적으로 inode 번호, 권한, 크기, 날짜
    • 관계형 DB 구조를 사용하여 NFTS를 마스터 파일 테이블에 저장

In-Memory File System Structures

  • Mount table storing file system mounts, mount points, file system types
  • system-wide open-file table contains a copy of the FCB of each file and other info
  • per-process open-file table contains pointers to appropriate entries in system-wide open-file table as well as other info
  • The following figure illustrates the necessary file system structures provided by the operating systems
  • Figure 12-3(a) refers to opening a file
  • Figure 12-3(b) refers to reading a file
  • Plus buffers hold data blocks from secondary storage
  • Open returns a file handle for subsequent use
  • Data from read eventually copied to specified user process memory address
  • 파일 시스템 마운트, 마운트 지점, 파일 시스템 유형을 저장하는 마운트 테이블
  • 시스템 전체의 열린 파일 테이블에는 각 파일의 FCB 복사본 및 기타 정보가 포함된다.
  • 프로세스별 오픈 파일 테이블에는 시스템 전체 오픈 파일 테이블의 해당 항목에 대한 포인터와 기타 정보가 포함되어 있다.
  • 다음 그림은 운영 체제에서 제공하는 필수 파일 시스템 구조를 보여준다.
  • 그림 12-3(a)는 파일 열기를 참조한다.
  • 그림 12-3(b)는 파일 읽기를 참조한다.
  • 또한 버퍼가 보조 스토리지의 데이터 블록을 보관한다.
  • 열기 이후에 사용할 파일 핸들을 반환한다.
  • 읽기 데이터가 지정된 사용자 프로세스 메모리 주소로 복사된다.

Directory Implementation

  • Linear list of file names with pointer to the data blocks
    • Simple to program
    • Time-consuming to execute
      • Linear search time
      • Could keep ordered alphabetically via linked list or use B+ tree
  • Hash Table – linear list with hash data structure
    • Decreases directory search time
    • Collisions – situations where two file names hash to the same location
    • Only good if entries are fixed size, or use chained-overflow method
  • 데이터 블록에 대한 포인터가 있는 파일 이름의 선형 목록
    • 프로그래밍이 간편함
    • 실행하는 데 시간이 많이 소요됨
      • 선형검색시간
      • 연결된 목록을 통해 알파벳 순으로 주문하거나 B+ 트리를 사용할 수 있습니다.
  • 해시 테이블 – 해시 데이터 구조가 있는 선형 목록
    • 디렉토리 검색 시간 단축
    • 충돌 – 두 개의 파일 이름이 동일한 위치에 해시되는 경우
    • 항목 크기가 고정되어 있거나 체인 오버플로 방법을 사용하는 경우에만 좋습니다.

Allocation Methods

Allocation Methods - Contiguous

  • An allocation method refers to how disk blocks are allocated for files:
  • Contiguous allocation – each file occupies set of contiguous blocks
    • Best performance in most cases
    • Simple – only starting location (block #) and length (number of blocks) are required
    • Problems include finding space for file, knowing file size, external fragmentation, need for compaction off-line (downtime) or on-line
  • 할당 방법은 파일에 디스크 블록을 할당하는 방법을 말합니다.
  • 연속 할당 – 각 파일이 연속 블록 집합을 차지함
    • 대부분의 경우 최고의 성능
    • 단순 – 시작 위치(블록 번호)와 길이(블록 수)만 필요하다.
    • 파일 공간 찾기, 파일 크기 파악, 외부 조각화, 오프라인(다운타임) 또는 온라인 압축 필요성 등의 문제가 있다.

Contiguous Allocation

  • Mapping from logical to physical

Extent-Based Systems

  • Many newer file systems (i.e., Veritas File System) use a modified contiguous allocation scheme
  • Extent-based file systems allocate disk blocks in extents
  • An extent is a contiguous block of disks
    • Extents are allocated for file allocation
    • A file consists of one or more extents
  • 많은 최신 파일 시스템(예: Veritas File System)은 수정된 연속 할당 체계를 사용한다.
  • 익스텐트 기반 파일 시스템에서 익스텐트의 디스크 블록 할당
  • 익스텐트는 연속된 디스크 블록
    • 파일 할당을 위해 익스텐트가 할당됨
    • 파일은 하나 이상의 익스텐트로 구성됨

Allocation Methods - Linked

  • Linked allocation – each file a linked list of blocks
    • File ends at nil pointer
    • No external fragmentation
    • Each block contains pointer to next block
    • No compaction, external fragmentation
    • Free space management system called when new block needed
    • Improve efficiency by clustering blocks into groups but increases internal fragmentation
    • Reliability can be a problem
    • Locating a block can take many I/Os and disk seeks
  • 연결된 할당 – 각 파일에 연결된 블록 목록

    • 파일이 0 포인터에서 끝남
    • 외부 조각화 없음
    • 각 블록에는 다음 블록에 대한 포인터가 포함됩니다.
    • 압축 없음, 외부 조각화
    • 새 블록이 필요할 때 사용 가능한 공간 관리 시스템 호출
    • 블록을 그룹으로 클러스터링하여 효율성을 향상시키지만 내부 조각화가 증가한다.
    • 신뢰성이 문제가 될 수 있음
    • 블록을 찾는 데 많은 I/O 및 디스크 검색이 필요할 수 있음
  • FAT (File Allocation Table) variation

    • Beginning of volume has table, indexed by block number
    • Much like a linked list, but faster on disk and cacheable
    • New block allocation simple
  • FAT(파일 할당 테이블) 변동

    • 볼륨 시작 부분에 블록 번호로 인덱싱된 테이블이 있습니다.
    • 연결된 목록과 유사하지만 디스크 속도가 빨라지고 캐시 가능
    • 새 블록 할당 단순

Linked Allocation

  • Each file is a linked list of disk blocks: blocks may be scattered anywhere on the disk


File-Allocation Table

Allocation Methods - Indexed

  • Indexed allocation
    • Each file has its own index block(s) of pointers to its data blocks
  • Logical view

Example of Indexed Allocation

Indexed Allocation (Cont.)

  • Need index table
  • Random access
  • Dynamic access without external fragmentation, but have overhead of index block
  • Mapping from logical to physical in a file of maximum size of 256K bytes and block size of 512 bytes. We need only 1 block for index table
  • 인덱스 테이블 필요
  • 랜덤 액세스
  • 외부 조각화 없이 동적 액세스가 가능하지만 인덱스 블록의 오버헤드가 있음
  • 최대 크기가 256K 바이트이고 블록 크기가 512바이트인 파일에서 논리적에서 물리적으로 매핑. 인덱스 테이블에 블록 하나만 있으면 된다.

Indexed Allocation - Mapping (Cont.)

  • Mapping from logical to physical in a file of unbounded length (block size of 512 words)

  • Linked scheme – Link blocks of index table (no limit on size)

  • two-level index (4K blocks could store 1,024 four-byte pointers in outer index -> 1,048,567 data blocks and file size of up to 4GB)

Combined Scheme: UNIX UFS

Performance

  • Best method depends on file access type
    • Contiguous great for sequential and random
  • Linked good for sequential, not random
  • Declare access type at creation -> select either contiguous or linked
  • Indexed more complex
    • Single block access could require 2 index block reads then data block read
    • Clustering can help improve throughput, reduce CPU overhead
  • For NVM, no disk head so different algorithms and optimizations needed
    • Using old algorithm uses many CPU cycles trying to avoid non-existent head movement
    • With NVM goal is to reduce CPU cycles and overall path needed for I/O
  • 최적의 방법은 파일 액세스 유형에 따라 다르다.
    • 순차 및 랜덤에 적합한 연속형
  • 무작위가 아닌 순차적으로 좋은 연결한다.
  • 생성 시 액세스 유형 선언 -> 연속 또는 연결 선택
  • 인덱스가 더 복잡하다.
    • 단일 블록 액세스 시 인덱스 블록 읽기 2회 이후 데이터 블록 읽기가 필요할 수 있다.
    • 클러스터링을 통해 처리량을 개선하고 CPU 오버헤드를 줄일 수 있다.
  • NVM의 경우 디스크 헤드가 없으므로 서로 다른 알고리즘과 최적화가 필요하다.
    • 기존 알고리즘을 사용하면 많은 CPU 사이클을 사용하여 헤드가 움직이지 않도록 방지할 수 있다.
    • NVM의 목표는 I/O에 필요한 CPU 주기 및 전체 경로를 줄이는 것이다.
  • Adding instructions to the execution path to save one disk I/O is reasonable
    • Intel Core i7 Extreme Edition 990x (2011) at 3.46Ghz = 159,000 MIPS
    • Typical disk drive at 250 I/Os per second
      • 159,000 MIPS / 250 = 630 million instructions during one disk I/O
    • Fast SSD drives provide 60,000 IOPS
      • 159,000 MIPS / 60,000 = 2.65 millions instructions during one disk I/O
  • 실행 경로에 지침을 추가하여 디스크 I/O를 하나 저장하는 것이 합리적이다.
    • Intel Core i7 Extreme Edition 990x (2011) 3.46Ghz = 159,000 MIPS
    • 초당 250 I/O의 일반적인 디스크 드라이브
      • 디스크 I/O 한 번에 159,000개의 MIPS / 250 = 6억 3천만 개의 명령어
    • 고속 SSD 드라이브는 60,000 IOPS 제공
      • 159,000개의 MIPS / 60,000개의 = 265만 개의 명령어를 디스크 I/O 중에 사용

Free-Space Management

  • File system maintains free-space list to track available blocks/clusters
    • (Using term “block” for simplicity)
  • Bit vector or bit map (n blocks)
  • 파일 시스템에서 사용 가능한 블록/클러스터를 추적할 수 있는 빈 공간 목록 유지
    • (간소화를 위해 "블록"이라는 용어 사용)
  • 비트 벡터 또는 비트 맵(n개의 블록)

  • Bit map requires extra space
    • Example:
      block size = 4KB = 212 bytes
      disk size = 240 bytes (1 terabyte)
      n = 240/212 = 228 bits (or 32MB)
      if clusters of 4 blocks -> 8MB of memory
  • Easy to get contiguous files
  • 비트맵에 추가 공간 필요
    • 예:
      블록 크기 = 4KB = 212바이트
      디스크 크기 = 240바이트(1테라바이트)
      n = 240/4000 = 228비트(또는 32MB)
      4개 블록으로 구성된 클러스터의 경우 -> 8MB 메모리
  • 연속 파일을 쉽게 가져올 수 있다.

Linked Free Space List on Disk

  • Linked list (free list)
    • Cannot get contiguous space easily
    • No waste of space
    • No need to traverse the entire list (if # free blocks recorded)
  • 연결된 목록(자유 목록)
    • 인접 공간을 쉽게 가져올 수 없음
    • 공간 낭비 없음
    • 전체 목록을 통과할 필요 없음(사용 가능한 블록 수가 기록된 경우)

Free-Space Management (Cont.)

  • Grouping
    • Modify linked list to store address of next n-1 free blocks in first free block, plus a pointer to next block that contains free-block-pointers (like this one)
  • Counting
    • Because space is frequently contiguously used and freed, with contiguous-allocation allocation, extents, or clustering
      • Keep address of first free block and count of following free blocks
      • Free space list then has entries containing addresses and counts
  • 그룹화
    • 링크된 목록을 수정하여 다음 n-1 빈 블록의 주소를 첫 번째 빈 블록에 저장하고, 추가로 자유 블록 포인터를 포함하는 다음 블록에 대한 포인터(이와 같이)
    • 연속 할당 할당, 익스텐트 또는 클러스터링을 통해 공간을 지속적으로 사용하고 확보하는 경우가 많기 때문이다.
      • 첫 번째 사용 가능한 블록의 주소와 다음 사용 가능한 블록의 개수 유지
      • 빈 공간 목록에는 주소와 개수가 포함된 항목이 존재

  • Space Maps
    • Used in ZFS
    • Consider meta-data I/O on very large file systems
      • Full data structures like bit maps couldn’t fit in memory -> thousands of I/Os
    • Divides device space into metaslab units and manages metaslabs
      • Given volume can contain hundreds of metaslabs
    • Each metaslab has associated space map
      • Uses counting algorithm
    • But records to log file rather than file system
      • Log of all block activity, in time order, in counting format
    • Metaslab activity -> load space map into memory in balanced-tree structure, indexed by offset
      • Replay log into that structure
      • Combine contiguous free blocks into single entry
  • 스페이스 맵
    • ZFS에서 사용
    • 대용량 파일 시스템에서 메타데이터 I/O 고려
      • 비트맵과 같은 전체 데이터 구조는 메모리에 들어갈 수 없음 -> 수천 개의 I/O
    • 장치 공간을 메타슬라브 단위로 나누고 메타슬라브를 관리합니다.
      • 지정된 볼륨에 수백 개의 메타슬라브가 포함될 수 있음
    • 각 메타슬라브에는 연관된 공간 지도가 있습니다.
      • 계수 알고리즘 사용
    • 그러나 파일 시스템이 아닌 로그 파일에 기록
      • 모든 블록 활동의 로그(시간 순서, 계수 형식)
    • 메타슬라브 활동 -> 간격띄우기로 인덱싱된 균형 트리 구조의 메모리에 공간 맵 로드
      • 해당 구조로 로그인 재생
      • 연속적인 사용 가능한 블록을 단일 항목으로 결합

TRIMing Unused Blocks

  • HDDS overwrite in place so need only free list
  • Blocks not treated specially when freed
    • Keeps its data but without any file pointers to it, until overwritten
  • Storage devices not allowing overwrite (like NVM) suffer badly with same algorithm
    • Must be erased before written, erases made in large chunks (blocks, composed of pages) and are slow
    • TRIM is a newer mechanism for the file system to inform the NVM storage device that a page is free
      • Can be garbage collected or if block is free, now block can be erased
  • HDD 덮어쓰기 기능이 있으므로 사용 가능한 목록만 있으면 된다.
  • 해제 시 블록이 특별히 처리되지 않는다.
    • 덮어쓸 때까지 데이터를 파일 포인터 없이 유지한다.
  • NVM과 같이 덮어쓰기를 허용하지 않는 스토리지 디바이스에서 동일한 알고리즘으로 심각한 문제가 발생
    • 쓰기 전에 지워야 하며, 큰 청크(블록, 페이지로 구성됨)로 작성되며 속도가 느리다.
    • TRIM은 파일 시스템이 NVM 스토리지 디바이스에 페이지가 비어 있음을 알리는 최신 메커니즘이다.
      • 가비지 수집이 가능하거나 블록이 비어 있으면 이제 블록을 지울 수 있다.

Efficiency and Performance

  • Efficiency dependent on:
    • Disk allocation and directory algorithms
    • Types of data kept in file’s directory entry
    • Pre-allocation or as-needed allocation of metadata structures
    • Fixed-size or varying-size data structures
  • 효율성은 다음과 같다.
    • 디스크 할당 및 디렉토리 알고리즘
    • 파일의 디렉토리 항목에 보관되는 데이터 유형
    • 메타데이터 구조의 사전 할당 또는 필요에 따라 할당
    • 고정 크기 또는 다양한 크기의 데이터 구조
  • Performance
    • Keeping data and metadata close together
    • Buffer cache – separate section of main memory for frequently used blocks
    • Synchronous writes sometimes requested by apps or needed by OS
      • No buffering / caching – writes must hit disk before acknowledgement
      • Asynchronous writes more common, buffer-able, faster
    • Free-behind and read-ahead – techniques to optimize sequential access
    • Reads frequently slower than writes
  • 성과
    • 데이터와 메타데이터를 가깝게 유지
    • 버퍼 캐시 – 자주 사용하는 블록에 대한 메인 메모리의 별도 섹션
    • 애플리케이션에서 요청하거나 OS에서 필요한 동기식 쓰기
      • 버퍼링/캐싱 없음 – 쓰기가 디스크에 도달해야 확인 가능
      • 비동기식 쓰기가 더 일반적이고, 버퍼링이 가능하며, 속도가 더 빠름
    • 사전 준비 및 읽기 – 순차적 액세스를 최적화하는 기술
    • 쓰기보다 자주 읽는 속도가 느림

Page Cache

  • A page cache caches pages rather than disk blocks using virtual memory techniques and addresses
  • Memory-mapped I/O uses a page cache
  • Routine I/O through the file system uses the buffer (disk) cache
  • This leads to the following figure
  • 페이지 캐시는 가상 메모리 기술 및 주소를 사용하여 디스크 블록 대신 페이지를 캐시한다.
  • 메모리 매핑 I/O에서 페이지 캐시 사용
  • 파일 시스템을 통한 루틴 I/O는 버퍼(디스크) 캐시를 사용한다.
  • 이것은 다음과 같은 수치로 이어진다.

I/O Without a Unified Buffer Cache

Unified Buffer Cache

  • A unified buffer cache uses the same page cache to cache both memory-mapped pages and ordinary file system I/O to avoid double caching
  • But which caches get priority, and what replacement algorithms to use?
  • 유니파이드 버퍼 캐시는 동일한 페이지 캐시를 사용하여 메모리에 매핑된 페이지와 일반 파일 시스템 I/O를 모두 캐시하여 이중 캐싱을 방지한다.
  • 그러나 어떤 캐시가 우선순위를 가지며, 어떤 대체 알고리즘을 사용할 것인가?

I/O Using a Unified Buffer Cache

Recovery

  • Consistency checking – compares data in directory structure with data blocks on disk, and tries to fix inconsistencies
    • Can be slow and sometimes fails
  • Use system programs to back up data from disk to another storage device (magnetic tape, other magnetic disk, optical)
  • Recover lost file or disk by restoring data from backup
  • 일관성 검사 – 디렉토리 구조의 데이터를 디스크의 데이터 블록과 비교하고 불일치를 수정한다.
    • 느릴 수 있으며 때때로 실패할 수 있다.
  • 시스템 프로그램을 사용하여 디스크의 데이터를 다른 스토리지 장치(자기 테이프, 기타 자기 디스크, 광학)로 백업한다.
  • 백업에서 데이터를 복원하여 손실된 파일 또는 디스크 복구한다.

Log Structured File Systems

  • Log structured (or journaling) file systems record each metadata update to the file system as a transaction
  • All transactions are written to a log
    • A transaction is considered committed once it is written to the log (sequentially)
    • Sometimes to a separate device or section of disk
    • However, the file system may not yet be updated
  • The transactions in the log are asynchronously written to the file system structures
    • When the file system structures are modified, the transaction is removed from the log
  • If the file system crashes, all remaining transactions in the log must still be performed
  • Faster recovery from crash, removes chance of inconsistency of metadata
  • 로그 구조화(또는 저널링) 파일 시스템은 파일 시스템에 대한 각 메타데이터 업데이트를 트랜잭션으로 기록한다.
  • 모든 트랜잭션이 로그에 기록된다.
    • 트랜잭션이 로그에 기록되면 커밋된 것으로 간주된다(순차적으로).
    • 별도의 장치 또는 디스크 섹션으로 이동하는 경우도 있다.
    • 그러나 파일 시스템이 아직 업데이트되지 않았을 수 있다.
  • 로그의 트랜잭션이 파일 시스템 구조에 비동기적으로 기록된다.
    • 파일 시스템 구조가 수정되면 트랜잭션이 로그에서 제거된다.
  • 파일 시스템이 충돌하는 경우에도 로그에 남아 있는 모든 트랜잭션을 계속 수행해야 한다.
  • 충돌로부터 신속하게 복구하여 메타데이터의 불일치 가능성을 제거한다.

Example: WAFL File System

  • Used on Network Appliance “Filers” – distributed file system appliances
  • “Write-anywhere file layout”
  • Serves up NFS, CIFS, http, ftp
  • Random I/O optimized, write optimized
    • NVRAM for write caching
  • Similar to Berkeley Fast File System, with extensive modifications
  • 네트워크 어플라이언스 "Filers" - 분산 파일 시스템 어플라이언스에서 사용
  • "어디서나 파일 레이아웃 쓰기"
  • NFS, CIFS, http, ftp 서비스 제공
  • 랜덤 I/O 최적화, 쓰기 최적화
    • 쓰기 캐싱을 위한 NVRAM
  • 광범위한 수정을 통해 Berkeley Fast File System과 유사하다.

The WAFL File Layout

Snapshots in WAFL

The Apple File System

profile
아주대학교 수업 기록
post-custom-banner

0개의 댓글