Drive Initialization

這裡說的是拿到一個啥都沒的 disk 我們會怎麼樣初始化它

Step 1: Low-Level/Physical Formatting

磁碟會被分割成一個個 sector,每個 sector 會有自己的 metadata 以及 ECC。每次讀取此 sector 都會透過 ECC 檢查此 sector 是否有壞掉

一個 sector 大小是 512 bytes 或 4096 bytes(現代 disk)

Sector

  • Sector 在 HDD 的語境下是物理上最小讀寫單位,也就是物理上不可能讀取半個 sector
  • Sector 在 NVM 則是抽象概念是為了對 OS 保持兼容

硬體層面最小單位我們稱 sector,軟體層面我們則稱 block(兩者相同只是在不同層面的名詞)

Step 2: Partition

在 low-level formatting 後,Disk 會像是一大塊儲存空間,OS 接下來會將其分割成多個 partition,每個都可以當成是獨立硬碟使用

Step 3: Logical Formatting

在啥都沒有的 partition 上我們會在上面建立 file system(ext4, FAT…),這個操作稱為 logical formatting

在這個步驟中 OS 會往 partition 上寫上 file system metadata(i-node table 之類的)

為了提升效率,雖然 bus 的傳輸以 sector 為單位,然而在 file system 會以 cluster 為單位配置空間,cluster 通常由多個 sector 組成,因此會有一些 internal fragmentation 的問題(因為 granularity)

file system metadata

在 OS 每次要 mount 某個 partition 時會先去確認 file system metadata 有沒有問題,沒問題才允許 mount