使用MBR磁盘结构的Linux系统,其分区结构与Windows系统下的MBR磁盘分区结构完全一样,所以Linux系统的MBR扇区以及分区表也有被破坏的可能,不过破坏后的修复还是比较简单的。下面用一个具体实例进行讲解。

本实例在恢复过程中需要用到Ext3文件系统的知识,读者可以先学习后面章节的相关内容,再回过头来学习此案例。

一台装有Linux系统的计算机,在一次突然断电后就无法再次启动。将该计算机的硬盘取出连接到另一台计算机的Windows系统下,用WinHex打开该硬盘,发现MBR扇区的分区表丢失,如图7-11所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-11 MBR扇区的分区表丢失

MBR扇区的分区表已经被清空,我们需要分析后面的结构是否有破坏。Linux系统一般采用Ext文件系统,而Ext文件系统以超级块开头,所以我们可以往下搜索超级块。Ext文件系统超级块的签名值为十六进制数值“53 EF”,搜索的设置如图7-12所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-12 搜索超级块的签名值

很快就在65号扇区找到了签名值,如图7-13所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-13 搜索到的签名值

通过分析超级块的结构可以看出该Linux系统使用的是Ext3文件系统。Ext3文件系统的超级块占用两个扇区,在第一个扇区中记录着文件系统包含的块数和每个块的字节数,用这两个值相乘就可算出分区的总扇区数。

查看超级块的第一个扇区,找到我们需要的两个参数,如图7-14所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-14 65号扇区超级块中的两个重要参数

从图7-14中可以看到该文件系统包含的块数为“00 0E EC C2”,换算为十进制等于978 114,说明文件系统包含978 114个块;块大小描述值为“00 00 00 02”,其含义为每块的字节数是22×1024,结果等于4096字节,说明每个块为8个扇区,所以该文件系统总扇区为978114×8=7824912扇区。

因为Ext3文件系统的超级块一般位于分区内的第三个扇区,我们刚才搜索到的超级块在65号扇区,所以可以说明该分区起始于63号扇区,大小为刚才算出的7 824 912扇区。不过,这个大小是用文件系统总块数乘以块大小算出来的,分区的实际大小可能会比这个值大1~7个扇区,因为这几个扇区不能划分为一个块,所以超级块中没有记录,这个值具体是多少,在分析下一个分区的起始位置时可以进一步确定。

用刚才分析的第一个分区的开始扇区号63加上计算出来的扇区总数7 824 912,结果等于7 824 975,这应该是下一个分区的开始扇区附近了。用WinHex跳转到磁盘的7 824 975号扇区,结果都是0数据,往后翻过3个扇区,在7 824 978号扇区发现了交换分区的信息,如图7-15所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-15 Linux系统交换分区的起始扇区

这说明7 824 978号扇区是第二个分区的开始位置,这样我们就能够确定第一个分区的大小为7 824 915个扇区。

再根据交换分区内的信息可以算出交换分区的大小为530 080个扇区,这同样也不一定是分区的实际大小,实际大小可能会多几个扇区。

下面继续找后面的分区,用第二个分区的开始扇区号7 824 978加上计算出来的扇区总数530 080,结果等于8 355 058,这应该是第三个分区的开始扇区附近了。用WinHex跳转到磁盘的8 355 058号扇区,结果都是0数据,往后翻过两个扇区,在8 355 060号扇区发现了EBR,如图7-16所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-16 8 355 060号扇区的EBR

这说明8 355 060号扇区是第三个分区的开始位置,这样我们就能够确定第二个分区的大小为530 082个扇区。

8 355 060号扇区是EBR,所以这是个扩展分区,在该EBR中只有一个分区表项,分区的具体参数值可以用WinHex模板查看,如图7-17所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-17 分区表的模板

分区表项的参数中描述了分区起始扇区为63,分区总扇区数为147 942 522,这两个值的和就是其所在的扩展分区的总扇区数,即147 942 585个扇区。

通过以上分析可以确定该硬盘一共分三个区,第一个是主磁盘分区,也是系统分区,分区起始地址是63号扇区,大小为7 824 915个扇区;第二个分区是交换分区,分区起始地址是7 824 978号扇区,大小为530 082个扇区;第三个分区是扩展分区,分区起始地址是8 355 060号扇区,大小为147 942 585个扇区。现在我们可以回到MBR,根据以上信息重建分区表。

跳转到0号扇区,用WinHex模板重建分区表,第一个分区表项的填写方法如图7-18所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-18 第一个分区表项的填写方法

第二个分区表项的填写方法如图7-19所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-19 第二个分区表项的填写方法

第三个分区表项的填写方法如图7-20所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-20 第三个分区表项的填写方法

三个分区表项都填写完成后存盘退出,在重新用WinHex打开这块硬盘,三个分区都成功恢复了,如图7-21所示。

MBR磁盘分区恢复实例-数据恢复迷

图7-21 恢复出来的三个分区