Try   HackMD

linux的檔案系統

tags: Linux

一 . 分割硬碟和硬碟的基本概念

(一) . 硬碟的組成

第一點 : 硬碟三大部分 : 磁柱、磁軌、磁區

  • 硬碟由多個磁柱組成,磁柱上又可以分成磁軌和磁區。

    1. 磁柱 : 一個硬碟上的一片同心圓。
    2. 磁軌 : 一個磁柱上的一塊ring。
    3. 磁區 : 硬碟的最小單位,舊時多為512bytes,一個磁區有開始和結束的磁軌。
  • 磁碟資料的定位方法 : CHS,每一個用1個byte表示2個16進位的數字。

    1. C : 代表『cylinder』,為磁柱位置。
    2. H : 代表『head』(讀寫頭的位置),為磁柱位置。
    3. S : 代表『sector』,為磁區位置。

第二點 : 硬碟分割

  • 什麼是硬碟分割 : 邏輯上分割儲存空間,讓主機板的裝置可以使用I/O 。
    1. 硬碟只是一大塊空間 : 硬碟上沒有軟體,不可能提供電腦一個介面,說明哪邊存了什麼資料。
    2. 硬碟分割 : disk自己規定在特定位置,特定大小的地方儲存一些關於硬碟使用的資料,『邏輯上』分割硬碟區塊。
    • 注意 這裡的『分割』硬碟,像是一層空樓層分成多個『房間』,並記錄『房間』的開始位置,但房間內部的使用模式,則不管了(教給『file system管理』)。
  • 硬碟分割的技術應該規定 : 所以,硬碟分割就應該要規定『房間的紀錄』應該如何被讀取。
    1. 固定位置和結構:在特定位置有特定大小的區塊,紀錄固定結構的資訊。
    2. 結構的內容:這些資訊應該要如何被解讀,以告訴主機,硬碟的使用情況。

(二) . MBR分割方法

第一點 :

  • 固定位置大小 : 在硬碟的第一個磁區,大小剛好一個磁區,即512bytes。
  • 固定結構 : 分成兩個部分。
    1. 主要開機記錄區(Master Boot Record, MBR):安裝開機管理程式的地方,有446 bytes。
    2. 分割表(partition table):記錄整顆硬碟分割的狀態,有64 bytes。

第二點 : 結構的內容

  • 分割表的資料格式 : 規定一個分割槽必須用16type儲存資料。
  • CHS定址的轉換。

第三點 : 缺點

  • 有限的分割槽數。
  • 有限的大小。

第四點 : 延伸和邏輯分割


(三) . GPT分割方式

第一點 : 固定位置和結構

  • 固定位置大小 : 在硬碟的第1到34磁區,大小用的是LBA,不一定要512bytes一個磁區。
  • 固定結構 :
    1. LBA0 : 相融MBR的地方
    2. LBA1 : GPT的表頭,不儲存分割槽位置,是儲存LBA2-34的格式。
    3. LBA 2-34 : 一個LBA存4個分割槽的位置,。

第二點 : 結構的內容

  • GPT header :

  • GPT 的entry :


(四) . RAID

第一點 : 什麼RAID

  • 分割槽的缺點 : 有限的大小。如果一個分割槽滿了,就不能再存了。但可能另外一個分割槽是空的,卻不能連接上目前的分割槽沒存完的資料。
  • RAID(Redundant Array of Independent Disks) : 磁碟陣列,可以用硬體軟體的方法製造出一個抽象的陣列,連接多個分割槽的資料。
  • 常見的RAID方法 : 有不同的原理行成RAID,
    1. 特色 : 這個方法的優缺點。
    2. 原理 : 連接多個陣列的原理。

第二點 : RAID 0

  • 原理 : 儲存的資料分別分散到多個磁碟中。
    1. 至少需要兩個。
    2. 先將硬碟切成多的『chunk』,大小約為1-4K。
    3. 資料分別存入多個硬碟中。
  • 特色 : 效能最好
    1. 優點:增加最大容量,讀寫效率(可以同時讀寫)。
    2. 缺點:不可以有任一個磁碟損毀。

第三點 : RAID 1

  • 原理 : 完整備份硬碟的資料,將資料同時存在多個硬碟。
    • 至少需要兩個。
  • 特色 : 容錯最佳
    1. 優點:可以有硬碟損失。
    2. 缺點:沒有增加容量,且讀寫的速度較慢。

第四點 : RAID 5

  • 原理 :
    1. 至少需要三個。
    2. 類似RAID 0的儲存方式,分散儲存在多個硬碟。
    3. 但多加入一個硬碟儲存partity,可以提供至多一個硬碟的錯誤。
  • 特色 : 算是前兩個的一個折衷。

第五點 : RAID 6

  • 原理 : 同RAID 5 ,增加partity。
    1. 至少需要四個。
    2. 類似RAID 0的儲存方式,分散儲存在多個硬碟。
    3. 但多加入兩個硬碟儲存partity,可以提供至多兩個硬碟的錯誤。
  • 特色 : 算RAID 0 和 RAID 1的折衷,且比RAID 5 更加的容錯率。

二 . 格式化和檔案系統

(一) . 格式化和檔案系統

第一點 : 格式化

  • 什麼是格式化 : 讓分割槽可以存入讀取file的方法。
    1. 分割完後的硬碟 : 分割完之後的分割槽還不能用,因為每個作業系統存file的方法都不一樣。
    2. 格式化硬碟 : 所以,我們必須把分割槽變成作業系統可以存取的狀態,也像分割硬碟一樣,要對分割槽做一點設定。
    • 注意 : 分割硬碟是對硬碟設定,變成分割槽;而格式化,像對分割槽在做一些設定,變成可以存檔案的。
  • 檔案系統 : 作業系統需要存檔案的方式。
    1. 格式化成作業系統需要的狀態,這個狀態,就是檔案系統。
    2. 所以,『格式化』就是對一個分割槽進行『檔案系統』的設定。
  • 格式化的最小單位

第二點 : 索引式檔案系統

  • Linux的檔案特性 : 每一個Linux的檔案都可以分成
    1. 檔案設定 : file的權限,修改時間,群組等等。
    2. 檔案內容 : file實際的content。
  • i-node的檔案系統 :
    1. superblock:記錄此 filesystem 的整體資訊,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與相關資訊等;
    2. inode:記錄檔案的屬性,一個檔案佔用一個inode,同時記錄此檔案的資料所在的 block 號碼;
    3. block:實際記錄檔案的內容,若檔案太大時,會佔用多個 block 。

(二) . EXT2 檔案系統