# linux的檔案系統 ###### tags: `Linux` ## 一 . 分割硬碟和硬碟的基本概念 ### (一) . 硬碟的組成 #### 第一點 : 硬碟三大部分 : 磁柱、磁軌、磁區 - 硬碟由多個磁柱組成,磁柱上又可以分成磁軌和磁區。 1. 磁柱 : 一個硬碟上的一片同心圓。 2. 磁軌 : 一個磁柱上的一塊ring。 3. 磁區 : 硬碟的最小單位,舊時多為512bytes,一個磁區有開始和結束的磁軌。 ![](https://i.imgur.com/hTEjYDo.png =500x) - 磁碟資料的定位方法 : ```CHS```,每一個用1個byte表示2個16進位的數字。 1. ```C``` : 代表『cylinder』,為磁柱位置。 2. ```H``` : 代表『head』(讀寫頭的位置),為磁柱位置。 3. ```S``` : 代表『sector』,為磁區位置。 #### 第二點 : 硬碟分割 - 什麼是硬碟分割 : 邏輯上分割儲存空間,讓主機板的裝置可以使用I/O 。 1. 硬碟只是一大塊空間 : 硬碟上沒有軟體,不可能提供電腦一個介面,說明哪邊存了什麼資料。 2. 硬碟分割 : disk自己規定在特定位置,特定大小的地方儲存一些關於硬碟使用的資料,『邏輯上』分割硬碟區塊。 - 注意 這裡的『分割』硬碟,像是一層空樓層分成多個『房間』,並記錄『房間』的開始位置,但房間內部的使用模式,則不管了(教給『file system管理』)。 - 硬碟分割的技術應該規定 : 所以,硬碟分割就應該要規定『房間的紀錄』應該如何被讀取。 1. 固定位置和結構:在特定位置有特定大小的區塊,紀錄固定結構的資訊。 2. 結構的內容:這些資訊應該要如何被解讀,以告訴主機,硬碟的使用情況。 --- ### (二) . MBR分割方法 ![](https://i.imgur.com/u9mDuhd.png =400x) #### 第一點 : - 固定位置大小 : 在硬碟的第一個磁區,大小剛好一個磁區,即512bytes。 - 固定結構 : 分成兩個部分。 1. 主要開機記錄區(Master Boot Record, MBR):安裝開機管理程式的地方,有446 bytes。 2. 分割表(partition table):記錄整顆硬碟分割的狀態,有64 bytes。 #### 第二點 : 結構的內容 - 分割表的資料格式 : 規定一個分割槽必須用16type儲存資料。 ![](https://i.imgur.com/Wj1Np0R.png =500x) - ```CHS```定址的轉換。 #### 第三點 : 缺點 - 有限的分割槽數。 - 有限的大小。 #### 第四點 : 延伸和邏輯分割 --- ### (三) . GPT分割方式 ![](https://i.imgur.com/8QYe1Ms.jpg =300x) #### 第一點 : 固定位置和結構 - 固定位置大小 : 在硬碟的第1到34磁區,大小用的是LBA,不一定要512bytes一個磁區。 - 固定結構 : 1. ```LBA0``` : 相融MBR的地方 2. ```LBA1``` : GPT的表頭,不儲存分割槽位置,是儲存LBA2-34的格式。 3. ```LBA 2-34``` : 一個LBA存4個分割槽的位置,。 #### 第二點 : 結構的內容 - GPT header : ![](https://i.imgur.com/Eeakre2.png =600x) - GPT 的entry : ![](https://i.imgur.com/bpe3mLs.png =350x) --- ### (四) . RAID #### 第一點 : 什麼RAID - 分割槽的缺點 : 有限的大小。如果一個分割槽滿了,就不能再存了。但可能另外一個分割槽是空的,卻不能連接上目前的分割槽沒存完的資料。 - RAID(```Redundant Array of Independent Disks```) : 磁碟陣列,可以用硬體軟體的方法製造出一個抽象的陣列,連接多個分割槽的資料。 - 常見的RAID方法 : 有不同的原理行成RAID, 1. 特色 : 這個方法的優缺點。 2. 原理 : 連接多個陣列的原理。 #### 第二點 : RAID 0 - 原理 : 儲存的資料分別分散到多個磁碟中。 1. 至少需要兩個。 1. 先將硬碟切成多的『chunk』,大小約為1-4K。 2. 資料分別存入多個硬碟中。 - 特色 : 效能最好 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 。 ![](https://i.imgur.com/39Iqi4N.png =400x) --- ### (二) . EXT2 檔案系統