導讀目錄
硬盤的組成
-
硬盤的物理結構
主要針對的是機械硬盤及其內部的結構加以介紹,以下內容可能不是硬盤內部全部的部件,本次的介紹的重點是說明與硬盤讀寫相關主要部件的作用。
剛接觸到linux,學習到硬盤分區的部分,感覺需要對機械硬盤的內部結構了解的太少了,所以經過翻閱資料,在這里稍微整理下硬盤內部的結構內容,有助于對硬盤分區的理解。- 磁頭
- 主要任務完成盤片上數據的讀寫操作,盤片在高速旋轉時,磁頭會飛行在盤面上方,而不是接觸盤面。
- 每個盤片的兩面都會有一個磁頭,當然有的硬盤的盤片有可能只有一個磁頭,磁頭的編號從0開始。
- 機械臂
- 使磁頭部件作徑向移動的裝置,已完成磁道變換
- 盤片
- 含有磁性的合金盤片,用來存取寫入的數據
- 每張盤片的容量成為單碟容量,而硬盤的容量就是所有盤片容量的總和
- 由于單碟容量的限制,通常一個硬盤會含有多張盤片
- 盤片的厚度在0.5mm左右,盤片的轉速與盤片大小有關
- 5400r/min,7200r/min,12000r/min,15000r/min
- 每個盤片都會有上下兩面,都可以被利用來存儲數據;能存儲數據的盤面成為有效盤面,每個盤面都會有一個盤面號,其和磁頭編號是相對應的,從0開始編號。
- 含有磁性的合金盤片,用來存取寫入的數據
- 主軸馬達
- 盤片安裝在主軸上,馬達的轉動,帶動盤片高速旋轉
- 磁頭
以上就是對硬盤內部物理結構主要部件的介紹,下面繼續介紹盤片上的內容,盤片主要是用來存儲數據的,究竟是怎么完成對存取數據的劃分,就需要對盤片進行邏輯劃分;這中操作在硬盤出廠的時候就已經設置好了,這種屬于對硬盤的低級格式換,主要的作用就是對硬盤劃分扇區、磁道和柱面等,硬盤的CHS就是在這時候被確定下來的。
盤片的邏輯劃分
這里即是對硬盤的低級格式化,會劃分出扇區、磁道及柱面等其他的一些硬盤參數;對扇區進行編號(C/H/S)。
- 扇區
- 盤片在轉動時,磁頭在盤面上畫過的一段圓弧,成稱扇區,即sector
- 扇區并不是連續的,在磁道上被劃分成一段一段的,從1開始編號
- 是硬盤最小的物理存取單位,每個扇區為512byte
- 磁道
- 磁盤在格式化時被劃分成許多同心圓,這些同心圓軌跡叫做磁道,即track
- 磁道從外向內從0開始編號,盤面的容量越大,包含的磁道數越多
- 磁道是看不見的,只是盤面上一些被磁化的區域
- 柱面
所有盤面上相同編號的磁道構成的圓柱,稱為柱面,即 cylinder
每個柱面上的磁頭(header)由上到下從0開始編號
-
數據的讀寫是按照柱面進行的,而非按照盤面進行
數據的讀/寫按柱面進行,即磁頭讀/寫數據時首先在同一柱面內從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀/寫完畢后磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換相當快,比在機械上磁頭向鄰近磁道移動快得多,所以,數據的讀/寫按柱面進行,而不按盤面進行
一個磁道寫滿數據后,就在同一柱面的下一個盤面來寫,一個柱面寫滿后,才移到下一個扇區開始寫數據 柱面是分區的最小單位
硬盤的分區
以上通過對硬盤的內部結構及盤片劃分的介紹,對硬盤的大致讀寫方式及數據的有了大致的了解,出廠前的是低級格式化,是針對整個一個盤的操作,那么硬盤的分區就是將整個物理硬盤分隔成邏輯的區域,對分區進行操作的。
- 分區概述
-
什么是分區
分配指定的柱面范圍,劃定磁盤上數據存取的區域分區的概念,相當于一套房子里,有臥室,有廚房,衛生間。或者可以比喻成一個柜子,里面有很多個抽屜,有大的,有小的,抽屜就可以理解成分區。
一塊硬盤,使用前,要經過三個步驟
1. 低級格式化
2. 分區
3. 高級格式化
其中,低級格式化,是硬盤廠商做的事情,每一塊硬盤出廠前,廠商就已經對它進行低級格式化了,這也是一個必須的步驟,低級格式化的目的是將磁盤劃分出柱面和磁道,再將磁道劃分成若干個扇區,每個扇區又劃分出標識部分ID,間隔區GAP和數據區DATA等等。另外,低級格式化,對硬盤是一種損耗,不到萬不得已,不建議進行低級格式化。
分區的就是硬盤的區分,這個概念在之前已經提過,而高級格式化,也就是創建文件系統,就是我們在電腦上的格式化操作。 -
分區的作用
- 大硬盤搜索范圍大,效率低
- 在不損失數據的情況下重裝系統
- 針對不同的掛載點開啟不同的掛載選項
- 針對不同掛載點的特性分配給分區合適的文件系統以合理發揮性能
- 對磁盤的頻繁讀取限定在分區內,降低磁盤的受損;對于經常訪問的掛載點單獨分區
-
- 硬盤的標識
- 分區的命令規則
對于linux來說一切皆文件,所以硬盤也不例外,不同的硬盤設備及分區都有對應的文件名。 - 硬盤分類
硬盤的分類可以通過多個緯度來區分的,本次主要以硬盤的接口類型來進行區分-
IDE接口的硬盤
- 支持IDE接口類型的硬盤,一個IDE扁平電纜可以接兩塊硬盤,一般主機會提供兩個IDE接口,故最多可以接4個IDE硬盤。
- /dev/hd[a-d]x
hd:代表為IDE接口的硬盤
a:代表第一個IDE接口的主硬盤
b:代表第一個IDE接口的從硬盤
c:代表第二個IDE接口的主硬盤
d:代表第二個IDE接口的從硬盤
x:代表硬盤上分區的標識
IDE(Integrated DriveElectronics)接口是一種在個人電腦中曾經廣泛使用的磁盤接口。其采用并行數據傳輸的方式,接口體積比較大,IDE總線是一條共享總線,為了增加一條IDE總線上的設備數量,每個IDE總線可以支持兩個設備,分別為主設備和從設備。
-
SCSI/SATA/SAS/USB硬盤
這幾種硬盤類型使用的接口都不同與IDE接口,但SCSI和IDE接口的硬盤接口類型都屬于并口,SATA/SAS接口類型屬于串口。IDE是一種比較舊的硬盤接口類型,隨著串行IDE驅動器的發明,既SATA(串行ATA)接口的出現,IDE驅動器的名稱也發生了改變。
SCSI(Small ComputerSystem Interface)為小型計算機系統接口,是一種連接主機和外圍設備的接口,SCSI接口和IDE都是一種并行接口類型。但和IDE相比,SCSI接口具有更好的傳輸性能,因此通常應用在服務器硬盤中。采用這種接口的硬盤具有更好的穩定性、更快的性能
由于串行接口在數據傳輸要由于并行接口,所以在之前的ATA的基礎上出現了串行ATA即SATA;在SCSI的基礎上發展形成了SAS。
1. /dev/sd[a-p]x
sd:代表硬盤為SCSI/SATA/SAS/USB硬盤
[a-p]:代表第幾個硬盤,通常為優先檢測到的硬盤用a表示,第二個硬盤用b標識,以此類推。
x:代表硬盤上分區標識
-
- 分區的命令規則
- 分區機制
對于硬盤的分區機制主要有兩種,一種是MBR,一種是GPT。-
MBR分區
即Master Boot Record)主引導記錄,是傳統的分區機制,應用于絕大多數使用BIOS的PC設備。
對于MBR分區機制,才會有主分區、擴展分區和邏輯分區的概念。
所謂的“分區”只是針對那個64bytes 的分區表進行設置而已。
MBR硬盤分區結構圖.png- MBR分區機制的特點
支持32位和64位操作系統
支持分區數量有限
只支持不超過2T的硬盤,超過2T的硬盤將只能用2T空間 - MBR引導扇區結構
- 位于磁盤的0磁道的第一個扇區,不參與硬盤分區;主要用來存儲MBR,主引導記錄
- 一共有512byte,其中系統引導加載器(boot loader)占446byte;分區表(partition table)占64byte,每16byte標識一個分區,一共可以標識4個分區(主分區+擴展分區),所以最多可以支持4個主分區,需要4個以上的分區就需要將一個主分區用于擴展分區,在擴張分區的基礎上劃分邏輯分區;結束標識占2byte,用4個16進制數來表示55AA,表示前面的510byte是有效的。
-
分區表的結構
MBR分區表.png
從上邊的圖示很直觀的看到MBR分區表64bytes中16byte的結構,其中有4byte是用來記錄分區的扇區總數的,所以可以計算出一個扇區最多支持2^32扇區,一個扇區512byte,所以最大支持2T的分區。
-
-
MBR的分區方式
通過對MBR分區表的介紹,可以知道其對分區的數量是有限制的,所有通常MBR的分區方式為:首先需要確保至少有一個主分區,對windows來說用來安裝系統,而linux系統,在安裝時也需要將/boot放在主分區。
常用分區方式一.png
分區方式命名一
常用分區方式二
分區方式命名二- 主分區
主分區是單純的一個分區,一塊硬盤最少要有一個主分區。 - 擴展分區
實際上是無法直接使用的,需要在擴展分區的基礎之上再劃分邏輯分區,才可以使用,這個理論上可以劃分無限個邏輯分區的。除了主分區以外,就是擴展分區,只能有一個。
-
什么是擴展分區?
所謂擴展分區,嚴格地講它不是一個實際意義的分區,它僅僅是一個指向下一個分區的指針,這種指針結構將形成一個單向鏈表。這樣在主引導扇區中除了主分區外,僅需要存儲一個被稱為擴展分區的分區數據,通過這個擴展分區的數據可以找到下一個分區(實際上也就是下一個邏輯磁盤)的起始位置,以此起始位置類推可以找到所有的分區。無論系統中建立多少個邏輯磁盤,在主引導扇區中通過一個擴展分區的參數就可以逐個找到每一個邏輯磁盤 -
擴展分區結構:擴展引導記錄(EBR)+ 邏輯分區
擴展分區中的每個邏輯驅動器都存在一個類似于MBR的擴展引導記錄( Extended Boot Record, EBR) -
擴展引導扇區(EBR):類似于MBR的擴展引導記錄,擴展引導記錄包括一個擴展分區表和該扇區的標簽.
擴展引導記錄將記錄只包含擴展分區中每個邏輯驅動器的第一個柱面的第一面的信息,但是,如果磁盤上沒有擴展分區,那么就不會有擴展引導記錄和邏輯驅動器。 -
EBR結構:
邏輯分區前扇區,如擴展分區0號扇區(512bytes)- 前446bytes:未使用,全為0;
- 擴展分區表(64bytes):記錄分區狀態,每16bytes分為一個項,共四個項。
第一項:指向它自身的引導扇區;
第二項:指向下一個邏輯驅動器的EBR,注:如果不存在進一步的邏輯驅動器,第二項不會使用,且被記錄成一系列零。
第三項:未使用
第四項:未使用 - 結束標識(2bytes): 55AA ,有效性標識;55AA為有效
- 主分區
- MBR分區機制的特點
-
GPT分區
全局唯一標識分區表(GUID Partition Table,縮寫:GPT),是一種新的分機管理機制,解決了 MBR 分區表機制存在的缺點,可以支持超過 2T 的硬盤,可以兼容 MBR。GPT 分區機制,不再有擴展分區和邏輯分區的概念,只有主分區,GPT 最大支持的分區可以達到 128 個。它是可擴展固件接口(EFI)標準(被Intel用于替代個人計算機的BIOS)的 一部分,被用于替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主引導記錄(MBR)分區表,GPT分配64bits給邏輯塊地址,
- GPT的特點
與目前普遍使用的主引導記錄(MBR)分區方案相比,GPT提供了更加靈活的磁盤分區機制。它具有如下優點:- 支持2TB以上的大硬盤。
- 每個磁盤的分區個數幾乎沒有限制(Windows系統最多只允許劃分128個分區)。
- 分區大小幾乎沒有限制。
- 分區表自帶備份。在磁盤的首尾部分分別保存了一份相同的分區表,其中一份被破壞后,可以通過
另一份恢復; - 循環冗余檢驗值針對關鍵數據結構而計算,提高了數據崩潰的檢測幾率;
- 雖然MBR提供1字節分區類型代碼,但GPT使用一個16字節的全局唯一標識符(GUID)值來標識分區
類型,這使分區類型更不容易沖突; - 每個分區可以有一個名稱(不同于卷標)。
-
GPT分區硬盤結構
由于比較專業,直接摘取別的地方,如下:
全局唯一標識分區表圖示- LBA0:保護性MBR,
在GPT分區表的最開頭,處于兼容性考慮仍然存儲了一份傳統的MBR(LBA 0),這個MBR叫做保護性MBR(Protective MBR)。其中包含有磁盤簽名,MBR分區表,結束標志。這里沒有引導代碼,分區表中只有一個分區表項,GPT不會用到,這個分區項只是為了讓系統認為磁盤是合法的. - LBA1:主要GPT頭部:
主要GPT頭部位于1號扇區,會定義分區表的起始位置,結束位置,分區表項個數;
分區表頭還記錄了這塊硬盤的GUID,記錄了分區表頭本身的位置和大小以及備份分區表頭和分區表的位置和大小(在硬盤的最后)。它還儲存著它本身和分區表的CRC32校驗。固件、引導程序和操作系統在啟動時可以根據這個校驗值來判斷分區表是否出錯,如果出錯了,可以使用軟件從硬盤最后的備份GPT中恢復整個分區表,如果備份GPT也校驗錯誤,硬盤將不可使用。 - LBA2-33:分區表項
分區表位于GPT磁盤的2-33號扇區,一共占用32個扇區,能夠容納128個分區表項。每個分區表項大小為128字節。因為每個分區表項管理一個分區,所以GPT磁盤可以創建128個分區。
GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。接下來的16字節是該分區唯一的GUID(這個GUID指的是該分區本身,而之前的GUID指的是該分區的類型)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。 - LBA34:分區區域
GPT分區區域就是用戶使用的分區,也是用戶進行數據存儲的區域。分區區域的起始地址和結束地址由GPT頭定義。 - LBA -33~-2:分區表備份
分區區域結束后就是分區表備份,其地址在GPT頭備份扇區中有描述。分區表備份是對分區表32個扇區的完整備份。如果分區表被破壞,系統會自動讀取分區表備份,也能夠保證正常識別分區 - LBA -1:GPT頭備份
GPT頭有一個備份,放在GPT磁盤的最后一個扇區,但這個GPT頭備份并非完全GPT頭備份,某些參數有些不一樣。復制的時候根據實際情況更改一下即可。
- LBA0:保護性MBR,
- GPT的特點
-