UNIX系统以稳定著称,其结构很难被破坏,除非是一些人为的误操作。Sparc架构的Solaris系统稳定性也非常好,其磁盘标签扇区损坏的概率很小,但是如果磁盘标签一旦被破坏,修复的难度也比较大。因为磁盘标签中的参数太多,并且Solaris系统的校验也很严格,如果某些参数计算的不正确,就会导致系统无法引导,或者切片无法挂载。

但并不是说Sparc Solaris的磁盘标签就不能修复。如果磁盘标签遭到破坏,可以从文件系统的超级块中直接或间接获得大部分磁盘标签中的参数,利用这些参数修复磁盘标签还是有可能的。不过我们是以恢复数据为目的,所以可以采用一些变通的方法得到数据。因为即使磁盘标签修复好了,但是通不过系统的校验,切片就无法挂载,依然无法访问数据。

下面就通过一个实例讲解Sparc架构的Solaris磁盘标签被破坏后数据的恢复方法。

一台Sparc Solaris的工作站,用户一次将硬盘拆出来连接到一台Windows系统的PC上,结果硬盘被Windows系统初始化为MBR磁盘,也就是硬盘的第一个扇区被写入了MBR结构,如图5-4所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-4 磁盘标签被初始化为MBR

用户再次把这块硬盘接回Sparc Solaris工作站,系统就无法启动了,磁盘中的切片也都无法识别。

下面开始恢复这块Sparc Solaris系统磁盘中的数据,在恢复过程中需要用到UFS文件系统的知识。读者可以先学习后面章节的相关内容,再回过头来学习此案例。

用WinHex打开这块硬盘,第一个扇区已经变成MBR,没有任何信息可以参考,往下搜索超级块,Sparc架构Solaris超级块的签名值为“00 01 19 54”,搜索的设置如图5-5所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-5 搜索超级块的签名值

很快就在16号扇区找到了签名值,如图5-6所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-6 搜索到的签名值

通过超级块的结构可以看出该Solaris使用的是UFS1文件系统。UFS1文件系统的超级块占用4个扇区,在第一个扇区中记录着文件系统包含的段数和每个段的字节数。用这两个值相乘就可算出切片的大小。

签名值位于超级块的第3个扇区。返回到超级块的第一个扇区,需要的两个参数就在这个扇区,如图5-7所示。

Sparc Solaris分区恢复实例-数据恢复迷

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

从图5-7中可以看到该文件系统包含的段数为“00 63 AB F0”,换算为十进制等于6 532 080,说明文件系统占用6 532 080个段;每段字节数为“00 00 04 00”,换算为十进制等于1024,说明每个段为两个扇区,所以该文件系统总扇区为6 532 080×2=13 064 160扇区。

因为UFS1文件系统的超级块一般位于切片的16号扇区,所以可以说明该磁盘的第一个切片起始于0号扇区,大小为刚才算出的13 064 160扇区。

再跳转到磁盘的13 064 160号扇区,这里应该是磁盘的第二个切片的开始,但是从13 064 160扇区往后的16号扇区并没有超级块,这可能是个不能挂载的Swap切片,不用管它,继续往后搜索超级块的签名值。

结果在14 663 536号扇区又搜索到一个超级块,如图5-8所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-8 14 663 536号扇区超级块中的两个重要参数

从图5-8中可以看到该文件系统包含的段数为“00 9C 43 20”,换算为十进制等于10 240 800,说明文件系统占用10 240 800个段;每段字节数为“00 00 04 00”,换算为十进制等于1024,说明每个段为两个扇区,所以该文件系统总扇区为10 240 800×2=20 481 600扇区。

因为UFS1文件系统的超级块一般位于切片的16号扇区,所以可以说明该切片起始于14 663 520号扇区,大小为刚才算出的20 481 600扇区。

用上一个切片的开始扇区号14 663 520加上其扇区总数20 481 600,结果等于35 145 120,这就是下一个切片的开始扇区了。用WinHex跳转到磁盘的35 145 120号扇区,这里应该是磁盘的下一个切片的开始,往后再跳转16个扇区,果然是超级块,如图5-9所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-9 35 145 120号扇区超级块中的两个重要参数

从图5-9中可以看到该文件系统包含的段数为“00 A4 13 48”,换算为十进制等于10 752 840,说明文件系统占用10 752 840个段;每段字节数为“00 00 04 00”,换算为十进制等于1024,说明每个段为两个扇区,所以该文件系统总扇区为10 752 840×2=21 505 680扇区。

这样就可以判断该切片起始于35 145 120号扇区,大小为刚才算出的21 505 680扇区。

再用该切片的开始扇区号35 145 120加上其扇区总数21 505 680,结果等于56 650 800,这已经接近磁盘的尾部了,说明后面不再有切片。

经过以上分析可知磁盘一共分了四个切片,其中一个是Swap切片,可以不用理会,其他三个切片有用户的数据,那么如何能够访问这三个切片的数据呢?这里有两种办法,一是修复磁盘第一个扇区的磁盘标签,修复成功后系统就能够挂载各个切片,虽比较麻烦,但可以尝试;二是借助第三方工具直接读取刚才分析的三个切片,相对容易,我们具体讲解这个方法。

通过刚才的分析已经知道该系统使用UFS1文件系统,所以需要找一个能够支持UFS1文件系统的工具,这里选择R-studio这个软件。

打开R-studio,对目标磁盘做三个区域,区域的具体做法本书前面的章节已经通过案例详细讲解过,这里不再重复了。做完区域后就可以直接看到显示为“Direct Volume”的三个切片了,如图5-10所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-10 显示为“Direct Volume”的三个切片

从图5-10中可以看到,R-studio已经识别出每个切片为UFS1文件系统,现在只需要双击每一个“Direct Volume”就能看到数据了,如图5-11所示。

Sparc Solaris分区恢复实例-数据恢复迷

图5-11 “Direct Volume”中显示的数据

到这里,就把一个Sparc架构的Solaris磁盘中的数据全部恢复了。