2017年9月15日 星期五

OS - Ch11 檔案系統實作 File System Implementation

 

i-node 和 data block。
圖片來源:Professor Eggert, UCLA CS 111

2015.1.15 初版
2017.9.15 二版




一、File System Structure


Directory Implementation overview

Linear list of file names with pointer to the data blocks.

  • simple to program 
  • time-consuming to execute 
  • ex : FAT and ext 2,3

Linear list with hash data structure.

  • decreases directory search time 
  • collisions – situations where two file names hash to the same location 
  • fixed size 

B-trees

  • XFS, NTFS, ext4
  • Scaling to terabyte/petabyte filesystems






二、Free Space Management


Disk allocation/free space 單位是以 block 為主。


1. Bit Vector:用一組 bits 來代表 blocks 配置與否,一個 bit 對應一個Block。

  • 優點:Simple,且易於找到連續可用空間 (即找到連續的 0) 
  • 缺點:bit vector 儲存佔用 memory 空間,所以此法不適用於大型 disk


2. Link List:用 link list 將 free block 串接,形成一個 AV List。

  • 優點:加入/刪除 block 容易 
  • 缺點:效率不佳。因為在找尋可用區塊時,需從頭檢視此串列,I/O time 過長 (檢視一個 block 就須做一次 I/O) 。


3. Combination (組合法,Grouping) :向量加上 link list。取某個可用區塊記錄其它可用區塊之編號。若此區塊不足以容納所有的 free block 編號,則再以其它區塊記錄並用 link 串連。

  • 優點:加入/刪除 block 容易,可迅速取得大量可用區塊。 
  • 缺點:效率不佳,I/O time 過長。 


4. Counting:適用於連續區塊較多之情況。在一個 free block 中,記錄其後的連續可用區塊數目 (含自已)。

  • 如果連續區塊數目夠多,則 link list 長度可大幅縮短。




三、Allocation Methods



1. 連續性配置 (Contiguous allocation)


若檔案大小為 n 個 blocks,則 OS 必須在 disk 上找到 >= n 個連續 free blocks 才能配置。 

記錄方式 :

  • File Name, Size, Starting Block # 

優點:

  • 可支援 sequential access 及 random access 
  • seek time 通常較短 (檔案所佔的連續區塊大都會落在同一個 track 上) 

缺點:

  • external fragmentation 
  • 檔案大小無法任意增/刪
  • 建檔時須事先宣告大小 


2. 連結配置 (Link allocation)


若檔案大小為 n 個區塊,則 OS 必須在 disk 上找到 >= n 個可用區塊即可配置 (不一定要連續)。各配置區塊之間以 link list 做串連。 

記錄方式 :

  • File Name, Start Block #, End Block # 

優點:

  • 沒有 external fragmentation
  • 檔案可任意增/刪空間建檔時無需事先宣告大小 

缺點:

  • 不支援 random access :要讀某個檔案的某個區塊時需從頭找起,只支援 sequential access。 
  • seek time比 contiguous 配置方式長,非連續性 blocks 可能散落在不同的 track。
  • Reliability 差,若連結斷裂則會資料丟失。


3. 索引式配置 (Index Allocation) 


每個檔案皆會多配置一些額外的 blocks 作為 index blocks,內含各配置的 data block 編號。採非連續性配置方式。

記錄方式 :

  • File Name, Index Block # 

優點 :

  • 沒有 external fragmentation:linked list 的優點
  • 支援 random access 及 sequential access:contiguous 的優點
  • 可任意增/刪空間
  • 建檔時無需事先宣告大小 

缺點 :

  • index blocks 佔用額外空間:索引區塊佔用 free block 的空間。
  • index block 太小不夠存放一個檔案的所有 block 編號,太大又形成浪費。

解決 index block 不夠大的三個方法:

  • 利用多個 index blocks 儲存,且其之間以 link 方式串連。
    • 缺點是資料區塊 IO 隨大小線性成長,無法 random access。
  • Multilevel index
    • 僅適用大檔案,小檔案不適合 (似 2-level cache table),當存到小檔案時,有可能 index 的大小會大於檔案。
  • Unix i-Node Structure


[用心去感覺] Unix i-Node Structure

有 15 個Pointer,可逐級累加使用。

  • 1~12 號指標 : 儲存 data block # (檔案的Block需求 ≤12 個時適用)
  • 13 號指標 : 指向 Single-level index
  • 14 號指標 : 指向 Two-level index
  • 15 號指標 : 指向 Three-level index



[實例1]  FAT (File Allocation Table)


為 link allocation 的變形。將所有配置區塊之間的 link 及 free block 資訊全部記錄在一個Table(FAT)。FAT集中在磁碟某一個固定位置,或可以將它載入主記憶體內,因此雖然在找尋指標時是循序找尋,但速度相對快很多。若 disk 有 n 個 blocks,則 FAT 有 n 個項目 (不論是Free的還是使用中的Block皆需記錄)。

FAT中的項目資訊:

  • 空白 : 表示 free block。
  • block # : 有 link 指向此 block,即使用中的 block。

概覽:
  • MS-DOS 及 OS/2 採用
  • Physical directory 的記錄方式 : [file name, FAT Index]
  • block 可完全都存放 data,不像 link Allocation 會有幾個 byte 用來存放連結。
  • 優缺點和 link allocation 差不多。


[實例2] Extent-Based Systems - ext4


現代檔案系統使用改良式的 contiguous allocation,例如 ext4。

ext4基本資料:

  • 發布時間:2006年10月10日 (Linux 2.6.28, 2.6.19)
  • 目錄內容:連結串列, hashed B-tree
  • 檔案分配:Extents/Bitmap

Extents-based : Extent 指的是一連串的連續實體 block,這種方式可以增加大型檔案的效率並減少分裂檔案。

  • Extents 大小不用一樣。
  • Extents 間採用 sequential access

ext4 引進了 Extent 檔案儲存方式,以取代 ext2/3 使用的 block mapping 方式。ext4 支援的單一 Extent,在單一block為4KB的系統中最高可達128MB。單一 i-node 中可儲存 4 筆 Extent;超過四筆的 Extent 會以 Htree 方式被索引。




四、Review


Directory Implementation

  • Plain table : FAT, ext.
  • B-tree : XFS, NTFS.

Allocation methods

  • Linked list : FAT
  • Indexed allocation : ext (using I-Node, extent : ext4)

Free space management

  • Linked list : FAT
  • Bitmap : ext






References


Abraham Silberschatz, Peter B. Galvin, Greg Gagne - Operating System Concepts 8th Edition

聯合大學陳士杰教授課程教材

洪逸 - 作業系統金寶典






技術提供:Blogger.