古詩詞大全網 - 四字成語 - 什麽是硬盤主分區表?

什麽是硬盤主分區表?

硬盤分區表可以說是支持硬盤正常工作的骨架.操作系統正是通過它把硬盤劃分為若幹個分區,然後再在每個分區裏面創建文件系統,寫入數據文件.本文主要講述的是分區表的位置,結構以及各個分區表是如何鏈接起來的.當掌握了這些知識後,即使分區表受到破壞,壹樣也可以根據殘存的數據手工修復分區表,從而修復分區。

壹.分區表的位置及識別標誌

分區表壹般位於硬盤某柱面的0磁頭 1扇區.而第1個分區表(也即主分區表)總是位於

(0柱面,1磁頭,1扇區),剩余的分區表位置可以由主分區表依次推導出來.分區表有64個字節,占據其所在扇區的[441-509]字節.要判定是不是分區表,就看其後緊鄰的兩個字節(也即[510-511])是不是 '55AA',若是,則為分區表.

二.分區表的結構

分區表由4項組成,每項16個字節.***4×16 = 64個字節.每項描述壹個分區的基本信息.每個字節的含義如下:

分區表項含義 字節 含義

0 Activeflag.活動標誌.若為0x80H,則表示該分區為活動分區.若為0x00H,則表示該分區為非活動分區.

1,2,3 該分區的起始磁頭號,扇區號,柱面號磁頭號 -- 1字節, 扇區號 -- 2字節低6位,柱面號 -- 2字節高2位 + 3字節

4 分區文件系統標誌:

分區未用: 0x00H.

擴展分區: 0x05H, 0x0FH.

FAT16分區: 0x06H.

FAT32分區: 0x0bH, 0x1bH, 0x0CH, 0x1CH.

NTFS分區: 0x07H.

5,6,7 該分區的結束磁頭號,扇區號,柱面號,含義同上.

8,9,10,11 邏輯起始扇區號。表示分區起點之前已用了的扇區數.

12,13,14,15 該分區所占用的扇區數.

分區表項有幾個字節比較重要,下面分別闡述之:

1、(1,2,3)字節 磁頭號由(1)字節8位表示,其範圍為(0 -- 28 - 1),也即(0 磁頭-- 254磁頭)。 扇區號由(2)字節低6位表示,其範圍為(0 -- 26 - 1),由於扇區號從1開始,所以其範圍是(1扇區-- 63扇區)。 柱面號由(2)字節高2位 + (3)字節,***10位表示,其範圍為(0 --2 10 - 1),也即(0 柱面-- 1023柱面)。 當柱面號超過1023時,這10位依然表示成1023,需要註意。 (5,6,7)字節含義同上。 2、(8, 9, 10, 11)字節 如果是主分區表,則這4 個字節表示該分區起始邏輯扇區號與邏輯0扇區(0柱面,0磁頭,1扇區)之差。如果非主分區表, 則這4 個字節要麽表示該分區起始邏輯扇區號與擴展分區起始邏輯扇區號之差,要麽為63。詳細情況在後面有所闡述。

註意:

1、扇區上的字節是按左邊低位,右邊高位的順序排列的。所以在取值時,需要把字節再反壹下,讓高位字節在左邊,低位字節在右邊, 這壹點在讀取邏輯起始扇區號和分區大小時需要註意。舉個例子:第壹項的邏輯起始扇區為(3F 00 00 00),轉換為十進制前要先反壹下字 節順序,為(00 00 00 3F)然後在轉換為十進制,即63 .同理分區大小為(3F 04 7D 00),先反為(00 7D 04 3F)再轉換為十進制, 即8193087。

2、邏輯扇區號與(柱面,磁頭,扇區)的相互轉換: 令L = 邏輯扇區號,C = 柱面號,H = 磁頭號,S = 扇區號。 每道扇區數 = 63 每柱面磁頭數 = 255 每柱面扇區數 = 每道扇區數* 每柱面磁頭數 = 63 × 255 = 16065 柱面號下標從0開始。磁頭號[0 -- 254],扇區號[1 -- 63]。 邏輯扇區號下標也從0開始。 (柱面,磁頭,扇區)轉換成邏輯扇區號的公式為: L = C×16065 + H ×63 + S - 1 ; 比如(1柱面,1磁頭,1扇區),其邏輯扇區號為: L = 1×16065 + 1×63 + 1 - 1 = 16128 邏輯扇區號轉換成(柱面,磁頭,扇區) 公式為: C = L / 16065 H = (L % 16065) / 63 S = (L % 16065) % 63 + 1 比如邏輯扇區號 16127: C = 16127 / 16065 = 1 H = (16127 % 16065) / 63 = 0 S = (16127 % 16065) % 63 + 1 = 63 即(1柱面,0磁頭,63扇區)

3、分區表上有四項,每壹項表示壹個分區,所以壹個分區表最多只能表示4個分區。主分 區表上的4項用來表示主分區和擴展分區的信息。因為擴展分區最多只能有壹個,所以硬盤 最多可以有四個主分區或者三個主分區,壹個擴展分區。余下的分區表是表示邏輯分區的。 這裏有必要闡述壹點:邏輯區都是位於擴展分區裏面的,並且邏輯分區的個數沒有限制。

4、分區表所在扇區通常在(0磁頭,1扇區),而該分區的開始扇區通常位於(1磁頭,1扇區),中間隔了63 個隱藏扇區。

三.分區表鏈的查找

分區表鏈實際上相當於壹個單向鏈表結構。第壹個分區表,也即主分區表,可以有壹項 描述擴展分區。而這壹項就相當於指針,指向擴展分區。然後我們根據該指針來到擴展分 區起始柱面的0頭1扇區,找到第二個分區表。對於該分區表,通常情況下:第壹項描述了 擴展分區中第壹個分區的信息,第二項描述下壹個分區,而這第二項就相當於指向第二個分 區的指針,第三項,第四項壹般均為0。我們可以根據該指針來到擴展分區中第二個分區起 始柱面的0頭1扇區,找到第三個分區表。以此類推,只到最後壹個分區表。而最後壹個分 區表只有第壹項有信息,余下三項均為0.相當於其指針為空.所以只要找到了壹個分區表就可 以推導找出其後面所有分區表。不過該分區表前面的分區表就不好推導出來了。但令人高興 的是這個鏈表的頭節點,也即主分區表的位置是固定的位於(0柱面, 0磁頭, 1扇區)處, 我們可以很輕易的找到它,然後把剩下的所有分區表壹壹找到。

以筆者的硬盤為例:壹個主分區(C盤), 壹個擴展分區.擴展分區中有兩個邏輯分區(D盤,E盤)其分區表鏈示意圖如下:

圖壹 分區表鏈示意圖

(壹).讀取(0柱面,0磁頭,1扇區)處C盤的主分區表:

[80 01 01 00 0b FE 7F FD 3F 00 00 00 3F 04 7D 00 ] [00 00 41 FE 0F FE FF FF 7E 04 7D 00 1F 2C b4 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ]第壹項: (80)(01 01 00)(0b)(FE 7F FD )(3F 00 00 00 )(3F 04 7D 00) 描述的是C盤的情況。 1.(80):表示C盤為活動分區。即系統會從C盤啟動。 2.(01 01 00):表示C盤的起始扇區為(0柱面,0磁頭,1扇區)。 3.(0b):表示C盤的文件系統為FAT32。 4.(FE 7F FD): (FE) 16 = (254) 10 (7F) 16 = (0111 1111) 2 (FD) 16 = (1111 1101) 2 磁頭號:(254) 10; 扇區號:(11 1111) 2 = (63) 10. 柱面號:(01 1111 1101) 2 = (509) 10 故C盤結束扇區為(509柱面,254磁頭,63扇區)。 5.(3F 00 00 00): 反向,(00 00 00 3F) 16 = (63) 10,為C盤起始邏輯扇區號與邏輯0扇區號之差。表示C盤前面已有63個扇區,這63個扇區為系統隱藏扇區。 6. (3F 04 7D 00): 反向,(00 7D 04 3F) 16 = (8193087) 10。表明C盤有8193087個扇區。即(0柱面,1磁頭,1扇區)至(509柱面,254磁頭,63扇區) ***有8193087個扇區。 第二項: (00)(00 41 FE)(0F)(FE FF FF)(7E 04 7D 00)(1F 2C b4 00) 描述的是擴展分區的情況。 1. (00): 表示該分區不是活動分區。 2. (00 41 FE): (00) 16 = (0) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2 磁頭號:(0) 10; 扇區號:(00 0001) 2 = (1) 10. 柱面號:(01 1111 1110) 2 = (510) 10 所以擴展分區的起始扇區為(510柱面,0磁頭,1扇區)。 3. (0F): 表示該分區為擴展分區。 4. (FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2; 磁頭號:(254) 10; 扇區號:(11 1111) 2 = (63) 10. 柱面號:(11 1111 1111) 2 = (1023) 10 但這是不準確的,因為當柱面號的真實值超過1023時,表示柱面號的10位也依然是1023。 5. (7E 04 7D 00): 反向,(00 7D 04 7E) 16 = (8193150) 10. 表示擴展分區的起始扇區號為8193150,即(510 柱面,0磁頭,1扇區)。這是真實準確的, 我壹般都用這壹項來定位分區起點。 6. (1F 2C b4 00): 反向, (00 b4 2C 1F) 16 = (11807775) 10. 表示擴展分區***有11807775個扇區。通過上面得到的起點和分區的大小, 可以推導出擴展分區的結束位置:8193150 + 11807775 = 20000925號扇區,即(1244 柱面,254磁頭,63扇區)。

二.查找D盤分區表 根據上面的信息,第二個分區表,也即D盤分區表在(510柱面,0磁頭,1扇區)處。讀取該扇區,得到分區表如下:

[00 01 41 FE 0b FE FF 7b 3F 00 00 00 bF A3 5D 00 ] [00 00 C1 7C 05 FE FF FF FE A3 5D 00 21 88 56 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 第壹項: (00)(01 41 FE)(0b)(FE FF 7b)(3F 00 00 00 )(bF A3 5D 00) 描述的是D盤的情況。 1.(00):表示D盤不是活動分區。 2.(01 41 FE): (01) 16 = (1) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2. 磁頭號:(1) 10; 扇區號:(00 0001) 2 = (1) 10. 柱面號:(01 1111 1110) 2 = (510) 10; 故D盤開始扇區為(510柱面,1磁頭,1扇區)。 3.(0b):表示D盤的文件系統為FAT32。 4.(FE FF 7b): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (7b) 16 = (0111 1011) 2. 磁頭號:(254) 10; 扇區號:(11 1111) 2 = (63) 10. 柱面號:(11 0111 1011) 2 = (891) 10 故D盤結束扇區為(891柱面,254磁頭,63扇區)。 5.(3F 00 00 00): 反向,(00 00 00 3F)16 = (63)10,為D盤起始邏輯扇區號(510柱面,1磁頭,1扇區)與擴展分區起始邏輯扇區號 (510柱面,0磁頭,1扇區)之差。表示D盤前面已有63個扇區,這63個扇區為系統隱藏扇區。 6. (bF A3 5D 00): 反向,(00 5D A3 bF) 16 = (6136767) 10。表明D盤有6136767個扇區。 通過上面得到的起點和分區的大小,可以推導出D盤的結束位置:8193150 + 63 + 6136767 = 14329980號扇區。 即(891柱面,254磁頭,63扇區)。與上面的正好吻合。 第二項: (00)(00 C1 7C)(05)(FE FF FF)(FE A3 5D 00)(21 88 56 00) 描述的是E盤的情況。 1. (00): 表示E盤不是活動分區。 2. (00 C1 7C): (00) 16 = (0) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100) 2 磁頭號:(0) 10 扇區號:(00 0001) 2 = (1) 10 柱面號:(11 0111 1100) 2 = (892) 10 所以E盤的起始扇區為(892柱面,0磁頭,1扇區)。 3. (05): 表示E盤的在擴展分區裏面。 4.(FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2 磁頭號:(254) 10 扇區號:(11 1111) 2 = (63) 10 柱面號:(11 1111 1111) 2 = (1023) 10 但這是不準確的,原因同上。 5.(FE A3 5D 00): 反向,(00 5D A3 FE) 16 = (6136830) 10. 這壹項非常重要,它定位了E盤分區表所在扇區。其值為E盤分區表所在扇區號 與擴展分區起始扇區號之差。所以,E盤分區表所在扇區號為: 8193150 + 6136830 = 14329980。即(892柱面,0磁頭,1扇區)。 6.(21 88 56 00): 反向,(00 56 88 21) 16 = (5670945) 10.表示E盤***有11807775個扇區。通過上面得到的起點和分區的大小,可以推導出E 盤的結束位置:14329980 + 5670945 = 20000925號扇區,即(1244 柱面,254磁頭,63扇區)。

三.查找E盤分區表 根據上面的信息,第三個分區表,也即E盤分區表在(892柱面,0磁頭,1扇區)處。讀取該扇區,得到分區表如下:

[00 01 C1 7C 0b FE FF FF 3F 00 00 00 E2 87 56 00] [ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 該分區表第二項全為0,說明沒有下壹個分區表了。該分區表就是分區表鏈的最後壹個節點。

第壹項: (00)(01 C1 7C)(0b)(FE FF FF)(3F 00 00 00 )(E2 87 56 00) 該項與D盤分區表的第二項描述的都是E盤的情況,但它們在某些細節上又有所區別。

1.(00):表示E盤不是活動分區。 2.(01 C1 7C): (01) 16 = (1) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100)

2. 磁頭號:(1) 10 扇區號:(00 0001) 2 = (1) 10 柱面號:(11 0111 1100) 2 = (892) 10 故E盤起始扇區為(892柱面,1磁頭,1扇區)。

3.(0b):表示E盤的文件系統為FAT32。

4.(FE FF FF): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2. 磁頭號:(254) 10; 扇區號:(11 1111) 2 = (63) 10. 柱面號:(11 1111 1111) 2 = (1023) 10 但這是不準確的,原因同上。

5.(3F 00 00 00): 反向,(00 00 00 3F) 16 = (63) 10.這壹項與D盤分區表相應項有所不同.為E盤起始邏輯 扇區號(892柱面,1磁頭,1扇區)與(892柱面,0磁頭,1扇區)之差。表示E盤前面已有63個扇區, 這63個扇區為系統隱藏扇區。 操作系統無法對這些扇區進行讀寫,所以可以把自己的秘密信息寫在這裏.

6. (E2 87 56 00): 反向,(00 56 87 E2) 16 = (5670882) 10。表明E盤有5670882個扇區。而D盤分區表相應項為5670945. 5670945 - 5670882 = 63. 正好等於63個隱藏扇區.這是因為D盤分區表描述的是(892柱面,0磁頭,1扇區) 到 (1244 柱面,254磁頭,63扇區) 之間的扇區數。 而E盤分區表描述的是(892柱面, 1磁頭,1扇區) 到 (1244 柱面,254磁頭,63扇區) 之間的扇區數。

四.結束語

至此,我們已經打通了整個分區表鏈.以後在某個鏈節點數據受損時,也可以根據上下節點的信息而手工定位並修復之。

修復工具可采用可讀寫磁盤的Winhex.