陳培德,吳建平,錢(qián)文華,曹良坤,王林茂
(云南大學(xué) 信息學(xué)院 云南省高校數(shù)字媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650223)
GPT是globally unique identifier partition table的縮寫(xiě),其含義是“全局唯一標(biāo)識(shí)磁盤(pán)分區(qū)表”[1]。GPT的出現(xiàn)是為了替代舊式的MBR(master boot record),主要解決MBR分區(qū)表不支持容量大于2.2 TB的分區(qū)問(wèn)題[2]。
目前,微軟公司W(wǎng)indows 8使用了GPT磁盤(pán)分區(qū)格式,同時(shí)Windows 8不再支持MBR。計(jì)算機(jī)如果使用Windows 7就必須采用MBR分區(qū)格式,這樣不同分區(qū)表誤操作、誤轉(zhuǎn)換的結(jié)果是硬盤(pán)中原有的磁盤(pán)分區(qū)表丟失,磁盤(pán)中的數(shù)據(jù)不能正常讀取。在Windows 7和Windows 8用戶(hù)數(shù)量龐大的今天,這種因GPT分區(qū)表問(wèn)題導(dǎo)致硬盤(pán)中的數(shù)據(jù)無(wú)法讀取和使用的問(wèn)題較為突出。
當(dāng)GPT存儲(chǔ)磁盤(pán)出現(xiàn)誤操作或操作系統(tǒng)本身故障導(dǎo)致的分區(qū)表?yè)p壞、數(shù)據(jù)不可見(jiàn)、不可讀的數(shù)據(jù)等問(wèn)題時(shí),有可能是GPT分區(qū)表的邏輯出錯(cuò),可以通過(guò)一定的技術(shù)手段,將保存在臺(tái)式機(jī)硬盤(pán)、筆記本硬盤(pán)、服務(wù)器硬盤(pán)等設(shè)備上丟失的寶貴數(shù)據(jù)進(jìn)行搶救和恢復(fù)。
當(dāng)GPT分區(qū)被破壞后,恢復(fù)分區(qū)常用的方法是:使用DiskGenius軟件的“搜索已丟失分區(qū)(重建分區(qū)表)”功能來(lái)重新建立分區(qū),但該方法只能重建MBR分區(qū),不能重建GPT分區(qū)。
從整體來(lái)看,GPT磁盤(pán)主要由6大部分組成,即保護(hù)MBR、GPT頭、GPT分區(qū)表、GPT分區(qū)區(qū)域(即文件系統(tǒng)所在區(qū)域)、GPT分區(qū)表備份和GPT頭備份[3]。大致結(jié)構(gòu)如圖1所示[4](注:假設(shè)GPT磁盤(pán)的扇區(qū)號(hào)范圍為0~n-1,其中n為GPT磁盤(pán)的總扇區(qū)數(shù))。
圖1 GPT磁盤(pán)的整體結(jié)構(gòu)
(1)保護(hù)MBR。
保護(hù)MBR位于GPT磁盤(pán)的0號(hào)扇區(qū),也是由主引導(dǎo)記錄、磁盤(pán)簽名、MBR分區(qū)表和結(jié)束標(biāo)志4個(gè)部分組成[5]。在MBR分區(qū)表中,分區(qū)標(biāo)志為0XEE,相對(duì)扇區(qū)為1,總扇區(qū)數(shù)為4 294 967 295,也就是分區(qū)總數(shù)的最大值,即該磁盤(pán)已經(jīng)被GPT分區(qū)占用,不能再進(jìn)行MBR分區(qū)[6]。
(2)GPT頭。
GPT頭位于GPT磁盤(pán)的1號(hào)扇區(qū)[6],該扇區(qū)是在將MBR磁盤(pán)轉(zhuǎn)換成GPT磁盤(pán)后自動(dòng)生成的,GPT頭定義了GPT分區(qū)各參數(shù)的基本信息[7]。
(3)GPT分區(qū)表。
GPT分區(qū)表位于GPT磁盤(pán)的2~33號(hào)扇區(qū),共占用32個(gè)扇區(qū),每個(gè)分區(qū)表占128字節(jié),最多可以容納128個(gè)分區(qū)表[7],由于第1個(gè)分區(qū)表為系統(tǒng)保留,所以用戶(hù)在GPT磁盤(pán)上最多可以再建立127個(gè)分區(qū),每個(gè)分區(qū)表管理一個(gè)分區(qū)。
(4)分區(qū)區(qū)域。
GPT分區(qū)區(qū)域是整個(gè)GPT磁盤(pán)中最大的區(qū)域,位于GPT磁盤(pán)的中間位置,GPT分區(qū)區(qū)域的開(kāi)始扇區(qū)和結(jié)束扇區(qū)由GPT頭定義[7]。一般情況下,開(kāi)始扇區(qū)為34號(hào)扇區(qū),而結(jié)束扇區(qū)為GPT磁盤(pán)總扇區(qū)數(shù)減去35。該區(qū)域由多個(gè)具體的分區(qū)組成,如:微軟保留分區(qū)、EFI系統(tǒng)分區(qū)、LDM元數(shù)據(jù)分區(qū)、LDM數(shù)據(jù)分區(qū)、OEM分區(qū)和主分區(qū)。各分區(qū)的開(kāi)始扇區(qū)和結(jié)束扇區(qū)在各分區(qū)表中均有定義。
(5)分區(qū)表備份。
一般情況下,分區(qū)表備份位于GPT磁盤(pán)的倒數(shù)33號(hào)扇區(qū)~倒數(shù)2號(hào)扇區(qū),也是占用32個(gè)扇區(qū),是GPT分區(qū)表位于GPT磁盤(pán)的2~33號(hào)扇區(qū)的備份。
(6)GPT頭備份。
GPT頭備份位于GPT磁盤(pán)的倒數(shù)1號(hào)扇區(qū),該扇區(qū)也是在將MBR磁盤(pán)轉(zhuǎn)換成GPT磁盤(pán)后自動(dòng)生成的,GPT頭備份也是定義了GPT分區(qū)各參數(shù)的基本信息,但該扇區(qū)不是GPT頭的簡(jiǎn)單備份,GPT頭備份對(duì)GPT分區(qū)各參數(shù)基本信息的定義與GPT頭對(duì)GPT分區(qū)各參數(shù)基本信息的定義稍有不同。
(1)操作系統(tǒng):Windows 7;
(2)數(shù)據(jù)恢復(fù)軟件及分析工具:WinHex 15.08。
(1)在Windows 7操作系統(tǒng)下,使用Windows 7的虛擬磁盤(pán)管理功能在D盤(pán)的根目錄上建立一個(gè)名為abcd.vhd的文件,文件大小為1 GB。
(2)將abcd.vhd文件附加為虛擬磁盤(pán)1,轉(zhuǎn)換成GPT磁盤(pán);在磁盤(pán)1上依次建立4個(gè)分區(qū),并對(duì)4個(gè)分區(qū)進(jìn)行格式化操作,磁盤(pán)1中4個(gè)分區(qū)依次對(duì)應(yīng)4個(gè)邏輯盤(pán),如下所示:
·H盤(pán),文件系統(tǒng):FAT32,容量:200 MB;
·I盤(pán),文件系統(tǒng):NTFS,容量:160 MB;
·J盤(pán),文件系統(tǒng):FAT32,容量:300 MB;
·K盤(pán),文件系統(tǒng):NTFS,容量:330 MB。
(3)分別在H盤(pán)、I盤(pán)、J盤(pán)和K盤(pán)中存儲(chǔ)一些文件夾和文件;磁盤(pán)1總體布局如圖2所示。
圖2 磁盤(pán)1的總體布局
(4)使用Windows 7的磁盤(pán)管理功能將H盤(pán)、I盤(pán)、J盤(pán)和K盤(pán)的GPT分區(qū)刪除。
(5)將GPT磁盤(pán)轉(zhuǎn)換為MBR磁盤(pán);磁盤(pán)1總體布局如圖3所示。
至此,實(shí)驗(yàn)素材已制作完成。
刪除GPT分區(qū)前,各邏輯盤(pán)在磁盤(pán)1中的分布情況如圖2所示。即在磁盤(pán)1的2號(hào)扇區(qū)建立了4個(gè)分區(qū)(對(duì)應(yīng)微軟保留分區(qū)、H盤(pán)、I盤(pán)和J盤(pán)),在3號(hào)扇區(qū)建立了1個(gè)分區(qū)(對(duì)應(yīng)盤(pán)符為K盤(pán)),各分區(qū)在硬盤(pán)中的位置如表1所示。
表1 磁盤(pán)1各邏輯盤(pán)在硬盤(pán)中的位置
從刪除GPT分區(qū)前、后對(duì)比硬盤(pán)變化可知:
(1)刪除GPT分區(qū)并轉(zhuǎn)換為MBR磁盤(pán)后,0號(hào)扇區(qū)的保護(hù)MBR分區(qū)表已經(jīng)被刪除;
(2)GPT頭仍然完好保存;
(3)第1個(gè)分區(qū)表(即對(duì)應(yīng)微軟保留分區(qū))仍然保存;
(4)各邏輯盤(pán)中的數(shù)據(jù)仍然完好無(wú)損;
(5)第1個(gè)分區(qū)表備份(即對(duì)應(yīng)微軟保留分區(qū))仍然保存;
(6)GPT頭備份仍然完好保存。
由于各邏輯盤(pán)的GPT分區(qū)表和GPT分區(qū)表備份已經(jīng)被刪除,雖然各邏輯盤(pán)中的數(shù)據(jù)完好無(wú)損,但是通過(guò)磁盤(pán)管理附加磁盤(pán)1,在資源管理器中無(wú)法查看到各邏輯盤(pán)盤(pán)符,也就無(wú)法查看各邏輯盤(pán)中的文件和文件夾。
經(jīng)過(guò)大量實(shí)驗(yàn)發(fā)現(xiàn),在GPT磁盤(pán)中建立一個(gè)分區(qū)后,只要不將對(duì)應(yīng)邏輯盤(pán)進(jìn)行格式化操作,那么系統(tǒng)只將邏輯盤(pán)的開(kāi)始扇區(qū)填充為“00”,而邏輯盤(pán)的剩余扇區(qū)即完好無(wú)損地保存著。
根據(jù)這一特點(diǎn),恢復(fù)GPT分區(qū)中各邏輯盤(pán)的基本思路與方法如下:
(1)通過(guò)開(kāi)始扇區(qū)(即DBR所在扇區(qū))的特征值,查找并記錄下各邏輯盤(pán)的DBR和DBR備份所在扇區(qū)號(hào)[8];
(2)通過(guò)DBR中的BPB參數(shù),獲得各邏輯盤(pán)的總扇區(qū)數(shù)[8];
(3)通過(guò)各邏輯盤(pán)的總扇區(qū)數(shù),計(jì)算各邏輯盤(pán)的總?cè)萘浚?/p>
(4)通過(guò)各邏輯盤(pán)總?cè)萘浚来谓⒏鬟壿嫳P(pán)(注:在建立各邏輯盤(pán)時(shí),不要格式化各邏輯盤(pán)) ;
(5)最后通過(guò)各邏輯盤(pán)的DBR備份依次恢復(fù)各邏輯盤(pán)的DBR[9]。
通過(guò)磁盤(pán)管理附加磁盤(pán)1,在資源管理器中可以查看到各邏輯盤(pán)的盤(pán)符。
根據(jù)重建GPT分區(qū)的基本思路與方法,重建GPT分區(qū)的步驟如下:
1.獲得4個(gè)邏輯盤(pán)的基本情況。
(1)在Windows 7操作系統(tǒng)下,啟動(dòng)WinHex;
(2)使用WinHex的文件功能,打開(kāi)D盤(pán)根目錄上的abcd.vhd文件,并映像為磁盤(pán);
(3)通過(guò)FAT32_DBR的特征值,查找FAT32_DBR及其備份,分別在65 664、65 670、802 944以及802 950號(hào)扇區(qū)找到;
(4)經(jīng)過(guò)確認(rèn),65 664號(hào)扇區(qū)為FAT32_DBR,而65 670號(hào)扇區(qū)為65 664號(hào)扇區(qū)的備份,即FAT32_DBR備份;802 944號(hào)扇區(qū)為FAT32_DBR,而802 950號(hào)扇區(qū)為802 944號(hào)扇區(qū)的備份,即FAT32_DBR備份;
(5)通過(guò)NTFS_DBR特征值,查找NTFS_DBR及其備份,分別在475 264、802 943、1 417 344、2 093 183號(hào)扇區(qū)找到;
(6)經(jīng)過(guò)確認(rèn),475 264號(hào)扇區(qū)為NTFS_DBR,而802 943號(hào)扇區(qū)為475 264號(hào)扇區(qū)的備份,即NTFS_DBR備份;802 943號(hào)扇區(qū)為NTFS_DBR,而2 093 183號(hào)扇區(qū)為802 943號(hào)扇區(qū)的備份,即NTFS_DBR備份;
(7)從65 664、475 264、802 944和802 943號(hào)扇區(qū)(即各DBR)所獲得的總扇區(qū)數(shù)分別為327 680、614 399、675 840和409 599;
(8)退出WinHex。
綜合步驟4、步驟6和步驟7,4個(gè)邏輯盤(pán)的DBR、DBR備份、總扇區(qū)數(shù)、容量和文件系統(tǒng)如表2所示。
表2 磁盤(pán)1各邏輯盤(pán)的基本情況
注:NTFS_DBR中存儲(chǔ)的總扇區(qū)數(shù)要比實(shí)際分區(qū)所占扇區(qū)數(shù)少1個(gè)扇區(qū)。
2.將MBR磁盤(pán)轉(zhuǎn)換為GPT磁盤(pán)。
(1)在Windows 7操作系統(tǒng)下,使用Windows 7的虛擬磁盤(pán)管理功能附加D盤(pán)根目錄上的abcd.vhd文件為磁盤(pán)1;
(2)將光標(biāo)移動(dòng)到“磁盤(pán)1 基本1 023 MB 聯(lián)機(jī)”處,右擊,從彈出的快捷菜單中選擇“轉(zhuǎn)換成GPT磁盤(pán)(V)”。
至此,磁盤(pán)1由MBR磁盤(pán)轉(zhuǎn)換為GPT磁盤(pán)。
3.重建4個(gè)邏輯盤(pán)GPT分區(qū)表。
(1)將光標(biāo)移動(dòng)到“磁盤(pán)1的992 MB 未分配”處,右擊,從彈出的快捷菜單中選擇“新建簡(jiǎn)單卷(I)…”;
(2)出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口,單擊“下一步”按鈕;
(3)出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口—指定卷大小,在“簡(jiǎn)單卷大小(MB)(S):”右側(cè)的列表框中輸入第1個(gè)邏輯盤(pán)的大小“200”,單擊“下一步”按鈕;
(4)出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口—分配驅(qū)動(dòng)器號(hào)和路徑,在“分配以下驅(qū)動(dòng)器號(hào)(A):”右側(cè)的列表框中選擇“H”,單擊“下一步”按鈕;
(5)出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口—格式化分區(qū),選擇“不要格式化這個(gè)卷(D):”選項(xiàng),單擊“下一步”按鈕;
(6)出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口,單擊“完成”按鈕;
(7)重復(fù)步驟1~6,共計(jì)3次;在步驟3出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口—指定卷大小,在“簡(jiǎn)單卷大小(MB)(S):”右側(cè)的列表框中依次輸入第2個(gè)、第3個(gè)和第4個(gè)邏輯盤(pán)的大小“160”、“300”和“330”;在出現(xiàn)“新建簡(jiǎn)單卷向?qū)А钡?個(gè)窗口—分配驅(qū)動(dòng)器號(hào)和路徑,在“分配以下驅(qū)動(dòng)器號(hào)(A):”右側(cè)的列表框中依次選擇“I”、“J”和“K”。
至此,磁盤(pán)1中的4個(gè)GPT分區(qū)已經(jīng)建立。
將光標(biāo)移動(dòng)到“磁盤(pán)1 基本1023 MB 聯(lián)機(jī)”處,右擊,從彈出的快捷菜單中選擇“分離VHD”。
4.通過(guò)各自的DBR備份恢復(fù)DBR。
由于4個(gè)邏輯盤(pán)的DBR均被破壞,所以4個(gè)邏輯盤(pán)的文件系統(tǒng)均為RAW,需要通過(guò)各自的DBR備份來(lái)恢復(fù),步驟如下:
(1)啟動(dòng)WinHex;
(2)使用WinHex的文件功能,打開(kāi)D盤(pán)根目錄上的abcd.vhd文件,并映像為磁盤(pán);
(3)將65 670號(hào)扇區(qū)復(fù)制到65 664號(hào)扇區(qū);將802 943號(hào)扇區(qū)復(fù)制到475 264號(hào)扇區(qū);將802 950號(hào)扇區(qū)復(fù)制到802 944號(hào)扇區(qū);將2 093 183號(hào)扇區(qū)復(fù)制到1 417 344號(hào)扇區(qū);然后,存盤(pán)并退出WinHex。
至此,各邏輯盤(pán)的DBR已經(jīng)通過(guò)DBR備份恢復(fù)成功。磁盤(pán)1總體布局如圖2所示。
通過(guò)磁盤(pán)管理附加磁盤(pán)1,在資源管理器中可以查看各邏輯盤(pán)的盤(pán)符,并且可以看到各邏輯盤(pán)中的所有文件和文件夾。
如果硬盤(pán)總?cè)萘啃∮?.2 TB,且分區(qū)總數(shù)小于或等于4個(gè)時(shí),可以使用在硬盤(pán)0號(hào)扇區(qū)建立對(duì)應(yīng)MBR分區(qū)表的形式來(lái)恢復(fù)各邏輯盤(pán)中的數(shù)據(jù)。
由于磁盤(pán)1正好滿(mǎn)足這一條件,所以可以通過(guò)在硬盤(pán)0號(hào)扇區(qū)建立4個(gè)MBR分區(qū)表[10]。方法如下:
1.從表2中4個(gè)邏輯盤(pán)的DBR所在扇區(qū)號(hào)和總扇區(qū)數(shù)可以計(jì)算出磁盤(pán)1中H盤(pán)、I盤(pán)、J盤(pán)和I盤(pán)在硬盤(pán)0號(hào)扇區(qū)的分區(qū)表,如表3所示。
表3 分區(qū)表
對(duì)4個(gè)分區(qū)表說(shuō)明如下:
(1)由于H盤(pán)、I盤(pán)、J盤(pán)和K盤(pán)均不引導(dǎo)系統(tǒng),各分區(qū)表中第1個(gè)字節(jié)的值為“00”[11];
(2)目前硬盤(pán)的存取方式均為L(zhǎng)BA,分區(qū)表中第2~4字節(jié)未定義,可以填充任意值,這里填充“01 01 00”[12];
(3)由于H盤(pán)和J盤(pán)的文件系統(tǒng)為FAT32,所以,分區(qū)標(biāo)志為“0C”[13];而I盤(pán)和K盤(pán)的文件系統(tǒng)為NTFS,所以,分區(qū)標(biāo)志為“07”[14];
(4)分區(qū)表中第6~8字節(jié)未定義,可以填充任意值,這里填充“FE FF FF”;
(5)分區(qū)表中第9~12字節(jié)為相對(duì)扇區(qū),即各邏輯盤(pán)DBR所在扇區(qū)號(hào);
(6)分區(qū)表中第13~16字節(jié)為總扇區(qū)數(shù),即各邏輯盤(pán)所占扇區(qū)數(shù)。
2.將這4個(gè)分區(qū)表填入到硬盤(pán)0號(hào)扇區(qū)偏移0X01BE~0X01FD處,然后存盤(pán)并退出WinHex。磁盤(pán)1總體布局如圖4所示。
圖4 恢復(fù)4個(gè)MBR分區(qū)后的磁盤(pán)1總體布局
通過(guò)磁盤(pán)管理附加磁盤(pán)1,在資源管理器中可以查看各邏輯盤(pán)的盤(pán)符,并且可以看到各邏輯盤(pán)中的所有文件和文件夾。
綜上所述,當(dāng)GPT磁盤(pán)中的分區(qū)被刪除,并將
GPT磁盤(pán)轉(zhuǎn)換為MBR磁盤(pán)后,只要查找并獲得各邏輯盤(pán)的DBR,通過(guò)DBR中的總扇區(qū)數(shù),計(jì)算出各邏輯盤(pán)的總?cè)萘?;依次重建各邏輯盤(pán),在建立各邏輯盤(pán)時(shí),只要不格式化各邏輯盤(pán),最后通過(guò)各邏輯盤(pán)的DBR備份恢復(fù)各自的DBR,便可以恢復(fù)GPT磁盤(pán)中各邏輯盤(pán)的全部數(shù)據(jù);如果GPT磁盤(pán)總?cè)萘啃∮?.2 TB,且分區(qū)總數(shù)小于4個(gè)時(shí),也可以在硬盤(pán)0號(hào)扇區(qū)通過(guò)重建MBR的形式來(lái)恢復(fù)各邏輯盤(pán)中的全部數(shù)。