重建GPT分区的研究与实现

2019-02-25 13:14陈培德吴建平钱文华曹良坤王林茂
计算机技术与发展 2019年2期
关键词:扇区磁盘分区

陈培德,吴建平,钱文华,曹良坤,王林茂

(云南大学 信息学院 云南省高校数字媒体技术重点实验室,云南 昆明 650223)

0 引 言

GPT是globally unique identifier partition table的缩写,其含义是“全局唯一标识磁盘分区表”[1]。GPT的出现是为了替代旧式的MBR(master boot record),主要解决MBR分区表不支持容量大于2.2 TB的分区问题[2]。

目前,微软公司Windows 8使用了GPT磁盘分区格式,同时Windows 8不再支持MBR。计算机如果使用Windows 7就必须采用MBR分区格式,这样不同分区表误操作、误转换的结果是硬盘中原有的磁盘分区表丢失,磁盘中的数据不能正常读取。在Windows 7和Windows 8用户数量庞大的今天,这种因GPT分区表问题导致硬盘中的数据无法读取和使用的问题较为突出。

当GPT存储磁盘出现误操作或操作系统本身故障导致的分区表损坏、数据不可见、不可读的数据等问题时,有可能是GPT分区表的逻辑出错,可以通过一定的技术手段,将保存在台式机硬盘、笔记本硬盘、服务器硬盘等设备上丢失的宝贵数据进行抢救和恢复。

当GPT分区被破坏后,恢复分区常用的方法是:使用DiskGenius软件的“搜索已丢失分区(重建分区表)”功能来重新建立分区,但该方法只能重建MBR分区,不能重建GPT分区。

1 GPT磁盘简介

从整体来看,GPT磁盘主要由6大部分组成,即保护MBR、GPT头、GPT分区表、GPT分区区域(即文件系统所在区域)、GPT分区表备份和GPT头备份[3]。大致结构如图1所示[4](注:假设GPT磁盘的扇区号范围为0~n-1,其中n为GPT磁盘的总扇区数)。

图1 GPT磁盘的整体结构

(1)保护MBR。

保护MBR位于GPT磁盘的0号扇区,也是由主引导记录、磁盘签名、MBR分区表和结束标志4个部分组成[5]。在MBR分区表中,分区标志为0XEE,相对扇区为1,总扇区数为4 294 967 295,也就是分区总数的最大值,即该磁盘已经被GPT分区占用,不能再进行MBR分区[6]。

(2)GPT头。

GPT头位于GPT磁盘的1号扇区[6],该扇区是在将MBR磁盘转换成GPT磁盘后自动生成的,GPT头定义了GPT分区各参数的基本信息[7]。

(3)GPT分区表。

GPT分区表位于GPT磁盘的2~33号扇区,共占用32个扇区,每个分区表占128字节,最多可以容纳128个分区表[7],由于第1个分区表为系统保留,所以用户在GPT磁盘上最多可以再建立127个分区,每个分区表管理一个分区。

(4)分区区域。

GPT分区区域是整个GPT磁盘中最大的区域,位于GPT磁盘的中间位置,GPT分区区域的开始扇区和结束扇区由GPT头定义[7]。一般情况下,开始扇区为34号扇区,而结束扇区为GPT磁盘总扇区数减去35。该区域由多个具体的分区组成,如:微软保留分区、EFI系统分区、LDM元数据分区、LDM数据分区、OEM分区和主分区。各分区的开始扇区和结束扇区在各分区表中均有定义。

(5)分区表备份。

一般情况下,分区表备份位于GPT磁盘的倒数33号扇区~倒数2号扇区,也是占用32个扇区,是GPT分区表位于GPT磁盘的2~33号扇区的备份。

(6)GPT头备份。

GPT头备份位于GPT磁盘的倒数1号扇区,该扇区也是在将MBR磁盘转换成GPT磁盘后自动生成的,GPT头备份也是定义了GPT分区各参数的基本信息,但该扇区不是GPT头的简单备份,GPT头备份对GPT分区各参数基本信息的定义与GPT头对GPT分区各参数基本信息的定义稍有不同。

2 实验环境及制作实验素材

2.1 实验环境

(1)操作系统:Windows 7;

(2)数据恢复软件及分析工具:WinHex 15.08。

2.2 制作实验素材

(1)在Windows 7操作系统下,使用Windows 7的虚拟磁盘管理功能在D盘的根目录上建立一个名为abcd.vhd的文件,文件大小为1 GB。

(2)将abcd.vhd文件附加为虚拟磁盘1,转换成GPT磁盘;在磁盘1上依次建立4个分区,并对4个分区进行格式化操作,磁盘1中4个分区依次对应4个逻辑盘,如下所示:

·H盘,文件系统:FAT32,容量:200 MB;

·I盘,文件系统:NTFS,容量:160 MB;

·J盘,文件系统:FAT32,容量:300 MB;

·K盘,文件系统:NTFS,容量:330 MB。

(3)分别在H盘、I盘、J盘和K盘中存储一些文件夹和文件;磁盘1总体布局如图2所示。

图2 磁盘1的总体布局

(4)使用Windows 7的磁盘管理功能将H盘、I盘、J盘和K盘的GPT分区删除。

(5)将GPT磁盘转换为MBR磁盘;磁盘1总体布局如图3所示。

至此,实验素材已制作完成。

3 删除GPT分区前、后硬盘变化情况对比

删除GPT分区前,各逻辑盘在磁盘1中的分布情况如图2所示。即在磁盘1的2号扇区建立了4个分区(对应微软保留分区、H盘、I盘和J盘),在3号扇区建立了1个分区(对应盘符为K盘),各分区在硬盘中的位置如表1所示。

表1 磁盘1各逻辑盘在硬盘中的位置

从删除GPT分区前、后对比硬盘变化可知:

(1)删除GPT分区并转换为MBR磁盘后,0号扇区的保护MBR分区表已经被删除;

(2)GPT头仍然完好保存;

(3)第1个分区表(即对应微软保留分区)仍然保存;

(4)各逻辑盘中的数据仍然完好无损;

(5)第1个分区表备份(即对应微软保留分区)仍然保存;

(6)GPT头备份仍然完好保存。

由于各逻辑盘的GPT分区表和GPT分区表备份已经被删除,虽然各逻辑盘中的数据完好无损,但是通过磁盘管理附加磁盘1,在资源管理器中无法查看到各逻辑盘盘符,也就无法查看各逻辑盘中的文件和文件夹。

4 重建GPT分区的基本思路与方法

经过大量实验发现,在GPT磁盘中建立一个分区后,只要不将对应逻辑盘进行格式化操作,那么系统只将逻辑盘的开始扇区填充为“00”,而逻辑盘的剩余扇区即完好无损地保存着。

根据这一特点,恢复GPT分区中各逻辑盘的基本思路与方法如下:

(1)通过开始扇区(即DBR所在扇区)的特征值,查找并记录下各逻辑盘的DBR和DBR备份所在扇区号[8];

(2)通过DBR中的BPB参数,获得各逻辑盘的总扇区数[8];

(3)通过各逻辑盘的总扇区数,计算各逻辑盘的总容量;

(4)通过各逻辑盘总容量,依次建立各逻辑盘(注:在建立各逻辑盘时,不要格式化各逻辑盘) ;

(5)最后通过各逻辑盘的DBR备份依次恢复各逻辑盘的DBR[9]。

通过磁盘管理附加磁盘1,在资源管理器中可以查看到各逻辑盘的盘符。

5 重建GPT分区的步骤

根据重建GPT分区的基本思路与方法,重建GPT分区的步骤如下:

1.获得4个逻辑盘的基本情况。

(1)在Windows 7操作系统下,启动WinHex;

(2)使用WinHex的文件功能,打开D盘根目录上的abcd.vhd文件,并映像为磁盘;

(3)通过FAT32_DBR的特征值,查找FAT32_DBR及其备份,分别在65 664、65 670、802 944以及802 950号扇区找到;

(4)经过确认,65 664号扇区为FAT32_DBR,而65 670号扇区为65 664号扇区的备份,即FAT32_DBR备份;802 944号扇区为FAT32_DBR,而802 950号扇区为802 944号扇区的备份,即FAT32_DBR备份;

(5)通过NTFS_DBR特征值,查找NTFS_DBR及其备份,分别在475 264、802 943、1 417 344、2 093 183号扇区找到;

(6)经过确认,475 264号扇区为NTFS_DBR,而802 943号扇区为475 264号扇区的备份,即NTFS_DBR备份;802 943号扇区为NTFS_DBR,而2 093 183号扇区为802 943号扇区的备份,即NTFS_DBR备份;

(7)从65 664、475 264、802 944和802 943号扇区(即各DBR)所获得的总扇区数分别为327 680、614 399、675 840和409 599;

(8)退出WinHex。

综合步骤4、步骤6和步骤7,4个逻辑盘的DBR、DBR备份、总扇区数、容量和文件系统如表2所示。

表2 磁盘1各逻辑盘的基本情况

注:NTFS_DBR中存储的总扇区数要比实际分区所占扇区数少1个扇区。

2.将MBR磁盘转换为GPT磁盘。

(1)在Windows 7操作系统下,使用Windows 7的虚拟磁盘管理功能附加D盘根目录上的abcd.vhd文件为磁盘1;

(2)将光标移动到“磁盘1 基本1 023 MB 联机”处,右击,从弹出的快捷菜单中选择“转换成GPT磁盘(V)”。

至此,磁盘1由MBR磁盘转换为GPT磁盘。

3.重建4个逻辑盘GPT分区表。

(1)将光标移动到“磁盘1的992 MB 未分配”处,右击,从弹出的快捷菜单中选择“新建简单卷(I)…”;

(2)出现“新建简单卷向导”第1个窗口,单击“下一步”按钮;

(3)出现“新建简单卷向导”第2个窗口—指定卷大小,在“简单卷大小(MB)(S):”右侧的列表框中输入第1个逻辑盘的大小“200”,单击“下一步”按钮;

(4)出现“新建简单卷向导”第3个窗口—分配驱动器号和路径,在“分配以下驱动器号(A):”右侧的列表框中选择“H”,单击“下一步”按钮;

(5)出现“新建简单卷向导”第4个窗口—格式化分区,选择“不要格式化这个卷(D):”选项,单击“下一步”按钮;

(6)出现“新建简单卷向导”第5个窗口,单击“完成”按钮;

(7)重复步骤1~6,共计3次;在步骤3出现“新建简单卷向导”第2个窗口—指定卷大小,在“简单卷大小(MB)(S):”右侧的列表框中依次输入第2个、第3个和第4个逻辑盘的大小“160”、“300”和“330”;在出现“新建简单卷向导”第3个窗口—分配驱动器号和路径,在“分配以下驱动器号(A):”右侧的列表框中依次选择“I”、“J”和“K”。

至此,磁盘1中的4个GPT分区已经建立。

将光标移动到“磁盘1 基本1023 MB 联机”处,右击,从弹出的快捷菜单中选择“分离VHD”。

4.通过各自的DBR备份恢复DBR。

由于4个逻辑盘的DBR均被破坏,所以4个逻辑盘的文件系统均为RAW,需要通过各自的DBR备份来恢复,步骤如下:

(1)启动WinHex;

(2)使用WinHex的文件功能,打开D盘根目录上的abcd.vhd文件,并映像为磁盘;

(3)将65 670号扇区复制到65 664号扇区;将802 943号扇区复制到475 264号扇区;将802 950号扇区复制到802 944号扇区;将2 093 183号扇区复制到1 417 344号扇区;然后,存盘并退出WinHex。

至此,各逻辑盘的DBR已经通过DBR备份恢复成功。磁盘1总体布局如图2所示。

通过磁盘管理附加磁盘1,在资源管理器中可以查看各逻辑盘的盘符,并且可以看到各逻辑盘中的所有文件和文件夹。

6 通过重建MBR分区来恢复各逻辑盘中的数据

如果硬盘总容量小于2.2 TB,且分区总数小于或等于4个时,可以使用在硬盘0号扇区建立对应MBR分区表的形式来恢复各逻辑盘中的数据。

由于磁盘1正好满足这一条件,所以可以通过在硬盘0号扇区建立4个MBR分区表[10]。方法如下:

1.从表2中4个逻辑盘的DBR所在扇区号和总扇区数可以计算出磁盘1中H盘、I盘、J盘和I盘在硬盘0号扇区的分区表,如表3所示。

表3 分区表

对4个分区表说明如下:

(1)由于H盘、I盘、J盘和K盘均不引导系统,各分区表中第1个字节的值为“00”[11];

(2)目前硬盘的存取方式均为LBA,分区表中第2~4字节未定义,可以填充任意值,这里填充“01 01 00”[12];

(3)由于H盘和J盘的文件系统为FAT32,所以,分区标志为“0C”[13];而I盘和K盘的文件系统为NTFS,所以,分区标志为“07”[14];

(4)分区表中第6~8字节未定义,可以填充任意值,这里填充“FE FF FF”;

(5)分区表中第9~12字节为相对扇区,即各逻辑盘DBR所在扇区号;

(6)分区表中第13~16字节为总扇区数,即各逻辑盘所占扇区数。

2.将这4个分区表填入到硬盘0号扇区偏移0X01BE~0X01FD处,然后存盘并退出WinHex。磁盘1总体布局如图4所示。

图4 恢复4个MBR分区后的磁盘1总体布局

通过磁盘管理附加磁盘1,在资源管理器中可以查看各逻辑盘的盘符,并且可以看到各逻辑盘中的所有文件和文件夹。

7 结束语

综上所述,当GPT磁盘中的分区被删除,并将

GPT磁盘转换为MBR磁盘后,只要查找并获得各逻辑盘的DBR,通过DBR中的总扇区数,计算出各逻辑盘的总容量;依次重建各逻辑盘,在建立各逻辑盘时,只要不格式化各逻辑盘,最后通过各逻辑盘的DBR备份恢复各自的DBR,便可以恢复GPT磁盘中各逻辑盘的全部数据;如果GPT磁盘总容量小于2.2 TB,且分区总数小于4个时,也可以在硬盘0号扇区通过重建MBR的形式来恢复各逻辑盘中的全部数。

猜你喜欢
扇区磁盘分区
MBR磁盘转换为GPT磁盘的研究与实现
分阶段调整增加扇区通行能力策略
贵州省地质灾害易发分区图
上海实施“分区封控”
它的好 它的坏 详解动态磁盘
重建GPT分区与NTFS_DBR的研究
解决Windows磁盘签名冲突
U盘故障排除经验谈
Windows系统下动态磁盘卷的分析与研究
大型数据库分区表研究