硬盤結構
1、硬盤的物理結構
核心:磁盤片被密封、固定並且不停的高速旋轉,磁頭懸浮於盤片上方沿磁盤徑向移動,並且不和片接觸。
兩部分:
①磁頭-盤片組件(HDA),其中包括讀寫磁頭、磁頭驅動機構、磁盤片、盤片驅動電機等。
②印制電路板組件(PCBA),其中包括電阻、電容、半導體集成電路等元器件組成的控制電路,負責對各種信號進行處理。
磁盤存儲數據是根據電、磁轉換原理實現的。
必須對磁盤片表面的磁介質進行某些有序的磁化處理,使這些磁介質符合進行數據存儲的要求。對磁介質的處理分為三個過程,就是通常所說的低級格式化、分區和高級格式化。
2、低級格式化
目的:將空白的磁盤划分出柱面和磁道,再將磁道划分為若干個扇區,每個扇區又划分出標識部分ID、間隔區GAP和數據區DATA等。
低級格式化只能針對一塊硬盤而不能支持單獨的某一個分區。每塊硬盤在出廠時,已由硬盤生產商進行低級格式化,因此通常使用者無需再進行低級格式化操作。其實,我們對一張軟盤進行的全面格式化就是一種低級格式化。
需要指出的是,低級格式化是一種損耗性操作,其對硬盤壽命有一定的負面影響。
磁盤的基本參數
硬盤由很多盤片組成,每個盤的每個面都有一個讀寫磁頭。如果有N個盤片,就有2N個面,對應2N個磁頭,從0、1、2開始編號。
每個盤片的每個面都有一個讀寫磁頭(Head),從0、1、2...編號。
每個盤片被划分成若干個同心圓磁道(邏輯上的,是不可見的),每個盤片的半徑均為固定值R的同心圓在邏輯上形成了一個以電機主軸為軸的柱面(Cylinder),從0開始編號,柱面從外向內編號為0,1,2......。
每個盤片上的每個磁道又被划分為若干個扇區(Sector),通常容量是512B。
老硬盤3D參數:老硬盤采用與軟盤類似的結構生產
硬盤:硬盤盤片的每一條磁道都具有相同的扇區數。
磁頭數最大值為255,柱面最大值為1023,扇區數最大為63,每個扇區一般是512字節,老硬盤最大容量為:
255× 1023× 63× 512/10148576=8024MB
255× 1023× 63× 512/10000000=8414MB
基本INT 13H調用
BIOS Int 13H 調用是 BIOS 提供的磁盤基本輸入輸出中斷調用。
它可以完成磁盤(包括硬盤和軟盤)的復位, 讀寫, 校驗, 定位, 診斷, 格式化等功能。
它使用的就是 CHS 尋址方式, 因此最大識能訪問 8 GB 左右的硬盤。
擴展 Int 13H 簡介
- 雖然現代硬盤都已經采用了線性尋址, 但是由於基本 Int 13H 的制約, 使用 BIOS Int 13H 接口的程序, 如 DOS 等還只能訪問 8 G 以內的硬盤空間。
- 為了打破這一限制, Microsoft 等幾家公司制定了擴展 Int 13H 標准(Extended Int13H), 采用線性尋址方式存取硬盤, 所以突破了 8 G 的限制,而且還加入了對可拆卸介質 (如活動硬盤) 的支持。
分區與高級格式化
划分好的每一個區域都稱作一個分區,最多可以划分4個主分區
分區過程中,分區程序向0柱面0磁頭1扇區寫入主引導記錄(Master Boot Record, MBR)和分區記錄表(Disk Partition Table,DPT)
硬盤的分區格式有很多種,由操作系統決定。常見的有:FAT16,FAT32,NTFS等。
硬盤分區后還需要通過高級格式化在分區內建立完整的存儲系統后才能正常使用。
高級格式化的目的是在分區內建立分區引導記錄(DOS Boot Record, DBR)、文件分配表(File Allocation Table,FAT)、文件目錄表(File Directory Table,FDT)和數據區(DATA)
3、硬盤的數據結構
硬盤的結構體系由6個部分組成:主引導區、主分區表和分區鏈表、分區引導記錄、文件分配表、文件目錄表以及數據區。
主引導扇區的組成
主引導扇區也就是硬盤的第一個扇區(0柱面0磁頭1扇區),它由主引導記錄MBR、主分區表即磁盤分區表DPT和引導扇區標記(Boot Record ID)三部分組成,是完成系統BIOS像操作系統交接的重要入口。
該扇區所在磁道屬於隱藏磁道,其上63個扇區屬於隱藏扇區,除FDisk可訪問外,其他程序一般不能訪問該區域。
為病毒程序代碼提供了棲身之地。


①主引導記錄(MBR)占用主引導扇區的前446個字節,存放系統主引導程序(它負責從活動分區中裝載並運行系統引導程序)。MBR不隨操作系統的不同而不同,即不同的操作系統可能會存在相同的 MBR。MBR不夾帶操作系統的性質,具有公共引導的特性。通常情況下,一塊硬盤只有一個主引導記錄
②主分區表(DPT)占用64個字節,記錄了磁盤的基本分區信息。主分區表分為4個分區表項,每項16個字節,分別記錄了每個主分區的信息,因此最多可以有4個主分區。
③引導區標記占用兩個字節,對於合法引導區,它等於OxAA55(磁盤中超過1個字節的數據都以實際數據顯示,就是按高位到低位的方式顯示,按低位到高位的方式存儲),這是判別引導區是否合法的標志。(結束標志55AA)
硬盤主分區表結構簡介
主分區表由4個分區表項構成,每一項的結構相同,各占16個字節。圖2.4是用WinHex 讀取的MBR中主分區表部分(用工具軟件划分出3個主分區,第3個主分區的類型為0x0F,即用於擴展,擴展成兩個邏輯驅動器,參見圖),其中主分區表的第一個主分區表項(用虛線標志部分)的內容解釋如表所示。


擴展分區與擴展MBR簡介
通過主引導記錄定義的硬盤分區表,最多只能描述4個分區,如果要多余4個分區,就要突破主引導記錄中的分區描述方法。



擴展分區大小定義
擴展分區表項中的相對扇區數字段所顯示的是從擴展分區開始到邏輯驅動器中第一個扇區的位移的字節數。
總扇區數字段中的數是指組成該邏輯驅動器的扇區數目。總扇區數字段的值等於從擴展分區表項所定義的引導扇區到邏輯驅動器末尾的扇區數。
磁盤分區表示例
| 序號 | 偏移位置 | 大小 | |
|---|---|---|---|
| 1 | 00 00 08 00 | 00 40 00 00 | 2G |
| 2 | 00 40 08 00 | 00 40 00 00 | 2G |
| 3 | 00 80 08 00 | 00 80 00 00 | 4G |
| 4 | 01 00 08 00 | 02 A2 68 00 | 21G |
擴展分區1
物理位置:01 00 08 00
本擴展分區位置:00 00 08 00,大小:00 80 00 4G
后續擴展分區位置:00 80 08 00,大小:00 80 08 00
后續擴展分區物理位置=擴展分區物理位置+偏移地址:01000800+00800800=01 80 10 00
擴展分區2
物理位置: 01 80 10 00
本擴展分區位置:00 00 08 00,大小:00 80 00 4G
后續擴展分區位置:01 00 10 00,大小:00 40 08 00
后續擴展分區物理位置:01 00 08 00+01 00 10 00 =02 00 18 00
擴展分區3
物理位置:02 00 18 00
本擴展分區位置:00 00 08 00,大小:00 40 00 00
后續擴展分區位置:01 40 18 00,大小:01 62 50 00
后續擴展分區物理位置:01 00 08 00+01 40 18 00 =02 40 20 00
擴展分區4
物理位置:02 40 20 00
本擴展分區位置:00 00 08 00,大小:01 62 48 00
后續擴展分區位置:00 00 00 00,大小:00 00 00 00 00
擴展分區結束
4、GPT分區結構
①保護MBR
保護MBR位於GPT磁盤的第一個扇區,也就是0號扇區,由磁盤簽名、MBR磁盤分區表和結束標志組成。
在保護MBR扇區中沒有引導程序,分區表內只有一個表項,這個表項描述一個類型為0xEE的分區,分區起始地址是1號扇區,大小為四個字節所能存儲的最大值(FF FF FF FF)。
該分區的存在可以使計算機認為這個磁盤是合法的,並且已被使用,從而不再去試圖對其進行分區、格式化等操作,而EFI根本不使用這個分區表。
②GPT頭
GPT頭位於GPT磁盤的第二個扇區,該扇區是在創建GPT磁盤時生成的。
GPT頭會定義分區表的起始位置、分區表的結束位置、每個分區表項的大小、分區表項的個數及分區表的校驗和等信息。
18H~1FH。長度為8字節,表示GPT頭所在扇區號,通常為1號扇區,也就是GPT磁盤的第二個扇區。
20H~27H。長度為8字節,是GPT頭備份的所在扇區號,也就是GPT磁盤的最后一個扇區,當前值為2 503 871。
28H~2FH。長度為8字節,是GPT分區區域的起始扇區號,當前值為34,GPT分區區域通常都是起始於GPT磁盤的34號扇區。
30H~37H。長度為8字節,是GPT分區區域的結束扇區號,當前值為2 503 838。
48H~4FH。長度為8字節,表示GPT分區表的起始扇區號,當前值為2,GPT分區表通常都是起始於GPT磁盤的2號扇區。
50H~53H。長度為4字節,表示分區表項的個數。Windows系統限定GPT分區個數為128,每個分區占用一個分區表項,所以該值為128。
54H~57H。長度為4字節,每個分區表項占用字節數,該值固定為128。
58H~5BH。長度為4字節,是分區表的CRC校驗和。
5CH~1FFH。長度為420字節,保留不用。
③GPT分區表
分區表位於GPT磁盤的2~33號扇區,一共占用32個扇區,能夠容納128個分區表項,每個分區表項大小為128字節。
因為每個分區表項管理一個分區,所以Windows系統允許GPT磁盤創建128個分區。
每個分區表項中記錄着分區的起始和結束地址、分區類型的GUID、分區名字、分區屬性和分區GUID。
00H~0FH。長度為16字節,用來描述分區類型,其類型可以是前面提到過的EFI系統分區(ESP)、微軟保留分區(MSR)、LDM元數據分區、LDM數據分區、OEM分區、主分區。
微軟公司為GPT分區定義的類型
Intel公司為GPT分區定義的類型
10H~1FH。長度為16字節,是分區表的GUID,這個GUID對於分區來講是唯一的。
20H~27H。長度為8字節,是分區的起始地址,用LBA地址表示,在分區表項1中該值為34,說明第一個分區開始於GPT磁盤的34號扇區。
28H~2FH。長度為8字節,是分區的結束地址,用LBA地址表示,在分區表項1中該值為65 569,說明第一個分區結束於GPT磁盤的65 569號扇區
30H~37H。長度為8字節,是分區的屬性。
38H~7FH。長度為72字節,是分區的名稱,用Unicode碼表示。例如,在第一個分區表項中分區名為“Microsoft reserved partition”,說明這是一個微軟保留分區;第二個分區表項中分區名為“Basic data partition”,說明這是一個基本數據分區,也就是主分區。
④分區區域
GPT分區區域通常都是起始於GPT磁盤的34號扇區,是整個GPT磁盤中最大的區域,由多個具體分區組成,如EFI系統分區(ESP)、微軟保留分區(MSR)、LDM元數據分區、LDM數據分區、OEM分區、主分區等。分區區域的起始地址和結束地址由GPT頭定義。
⑤GPT頭備份
GPT頭有一個備份,放在GPT磁盤的最后一個扇區,但這個GPT頭備份並不是GPT頭的簡單復制,它們的結構雖然一樣,但其中的參數卻有一些區別。
00H~07H。長度為8字節,是GPT頭的簽名,十六進制為“45 46 49 20 50 41 52 54”,ASCII碼為“EFI PART”。
08H~0BH。長度為4字節,表示版本號。
0CH~0FH。長度為4字節,是GPT頭備份的總字節數。當前值為92,說明GPT頭備份占用92字節。
10H~13H。長度為4字節,是GPT頭備份的CRC校驗和。
14H~17H。長度為4字節,保留不用。
18H~1FH。長度為8字節,表示GPT頭備份所在扇區號,當前值為2 503 871號扇區,也就是GPT磁盤的最后一個扇區。
20H~27H。長度為8字節,是GPT頭的所在扇區號,當前值為1號扇區,也就是GPT磁盤的第二個扇區。
28H~2FH。長度為8字節,是GPT分區區域的起始扇區號,當前值為34,GPT分區區域通常都是起始於GPT磁盤的34號扇區。
30H~37H。長度為8字節,是GPT分區區域的結束扇區號,當前值為2 503 838。
38H~47H。長度為16字節,是GPT磁盤的GUID。
⑥GPT分區表備份
分區區域結束后,緊跟着就是分區表的備份,其地址在GPT頭備份扇區中有描述。
分區表備份是對分區表32個扇區的完整備份。如果分區表被破壞,系統會自動讀取分區表備份,也就能夠保證正常地識別分區。
