我們通常對磁盤分區時,都會涉及到MBR和GPT。MBR和GPT都是磁盤分區的類型,由於以前的硬盤只有幾個GB,幾十個GB,幾百個GB,使用MBR類型分區已經足夠。但是近些年來,硬盤容量的發展速度迅速,已經達到2TB以上。這時,使用MBR分區將不能滿足要求,至於為什么不能滿足,請看下文。
我們可以使用WinHex打開一個磁盤,本磁盤共有4個分區,第1個是主分區,第二個是主分區(里面含有系統),第三個是邏輯分區,第四個是主分區。
磁盤的第1個扇區叫做MBR扇區,一共有512B,主要有3個部分,引導信息、分區表、結束標志。
1. 引導信息
上圖中0~0x1BD即為引導程序,占扇區前446字節。計算機在上電完成BIOS自檢后,會將該主引導扇區加載到內存中並執行前面446字節的引導程序,引導程序首先會在分區表中查找活動分區,若存在活動分區,則根據活動分區的偏移量找到該活動分區上的引導扇區的地址,並將該引導扇區加載到內存中,同時檢查該引導扇區的有效性,然后根據該引導扇區的規則去引導操作系統。在一些非啟動磁盤上,MBR引導代碼可能都是0,這對磁盤使用沒有任何影響。
2.分區表
上圖中0x1BE~0x1FD即為分區表,占扇區中間64字節。分區表是磁盤管理最重要的部分,通過分區表信息來定位各個分區,訪問用戶數據。分區表包含4個分區項,每一個分區項通過位置偏移、分區大小來唯一確定一個主分區或者擴展分區。每個分區項占16字節,包括引導標識、起始和結束位置的CHS參數、分區類型、開始扇區、分區大小等,具體描述如下表所示
字節位移 | 占用字節數 | 描述 |
0x01BE | 1Byte | 引導指示符,指明該分區是否是活動分區 |
0x01BF | 1Byte | 開始磁頭 |
0x01C0 | 6Bit | 開始扇區,占用6位 |
0x01C1 | 10Bit | 開始柱面,占用10位,最大值1023 |
0x01C2 | 1Byte | 分區類型,NTFS位0x07 |
0x01C3 | 1Byte | 結束磁頭 |
0x01C4 | 6Bit | 結束扇區,占用6位 |
0x01C5 | 10Bit | 介乎柱面,占用10位,最大值1023 |
0x01C6 | 4Byte | 相對扇區數,從此扇區到該分區的開始的扇區偏移量,以扇區為單位 |
0x01CA | 4Byte | 該分區的總扇區數 |
字節位移0x01BE:引導指示符,只能是0和0x80,0代表是非活動分區,0x80代表是活動分區。活動分區里包含着操作系統的入口扇區。
字節位移0x01BF~0x01C1:指明了該分區位於磁盤的物理位置。具體搜索C/H/S與LBA地址的對應關系。
字節位移0x01C2:文件系統格式
3.結束標志
上圖中最后的"55 AA"即為結束標志,或者稱魔數,占扇區最后2字節。每次執行系統引導代碼時都會檢查MBR主引導扇區最后2字節是否是"55 AA",若是,則繼續執行后續的程序,否則,則認為這是一個無效的MBR引導扇區,停止引導系統。
按照上面的描述,可以看出磁盤的狀態。
第一個分區表信息:0x00,0x01,0x02,0x00,0x07,0xFE,0xFF,0xFF,0x40,0x00,0x00,0x00,0xAB,0xB3,0x0F,0x23
可得出此分區為非活躍分區,文件系統格式為NTFS(0x07),此分區開始扇區為(0x00(當前扇區)+0x00000040) ,總扇區數為(0x230FB3AB) ,總容量=(0x230FB3AB*512)/1024/1024/1024GB=280.49GB
第二個分區表信息:0x80,0xFE,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0x30,0xB4,0x0F,0x23,0x91,0xA3,0x40,0x06
可得出此分區為活躍分區,文件系統格式為NTFS(0x07),此分區開始扇區為(0x00(當前扇區)+0x230FB430) ,總扇區數為(0x0640A391), 總容量=(0x0640A391*512)/1024/1024/1024GB=50.02GB
第三個分區表信息:0x00,0xFE,0xFF,0xFF,0x0F,0xFE,0xFF,0xFF,0xC1,0x57,0x50,0x29,0x3F,0x00,0x80,0x3E
可得出此分區為非活躍分區,文件系統格式為擴展分區(0x0F),此分區開始扇區為(0x00(當前扇區)+0x295057C1),總扇區數為(0x3E80003F),總容量=(0x3E80003F*512)/1024/1024/1024GB=500.00GB
第四個分區表信息:0x00,0xFE,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0x00,0x58,0xD0,0x67,0x00,0x00,0xA0,0x0C
可得出此分區為非活躍分區,文件系統格式為NTFS(0x07),此分區開始扇區為(0x00(當前扇區)+0x67D05800),總扇區數為(0x0CA00000) ,總容量=(0x0CA00000*512)/1024/1024/1024GB=101.00GB
對於第三個分區是擴展分區,再進一步研究。我們同WinHEX跳轉到此分區的開始扇區0x295057C1處。可看到如下界面。
在此扇區的偏移0x1BE處又有向MBR類似的分區表信息,規則與MBR規則一樣,只是此處分區表的分區類型不同,我們叫做邏輯分區。
第一個分區表信息:0x00,0xFE,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x80,0x3E
可得出此分區為非活躍分區,文件系統格式為NTFS(0x07),此分區開始扇區為(0x295057C1(當前扇區)+0x0000003F),總扇區數為(0x3E800000) ,總容量=(0x3E800000*512)/1024/1024/1024GB=500.00GB
疑問:按照上面每個分區的范圍,MBR后面為什么保留了0x40個扇區?擴展分區扇區到邏輯分區扇區也保留了0x40個扇區?