虚拟机数据恢复环境:
某品牌服务器通过同品牌某型号的RAID卡,将4块STAT硬盘为一组RAID10阵列。上层部署XenServer虚拟化平台,虚拟机安装Windows Server系统,每台虚拟机有两个虚拟机磁盘(系统盘 + 数据盘),虚拟机作为Web服务器使用。
虚拟机故障&分析:
机房异常断电导致服务器中一台VPS(XenServer虚拟机)不可用,虚拟磁盘文件丢失。
故障服务器中的XenServer虚拟机的磁盘是通过LVM管理的。每台虚拟机的虚拟磁盘都是一个LV,且虚拟磁盘为精简模式。LVM的相关信息在XenServer中都有记载。查看“/etc/lvm/backup/“目录下关于LVM的相关信息,没有发现损坏的虚拟磁盘的信息,因此可以判断出LVM的信息已经被更新。只能通过分析底层看是否能找到未被更新的LVM信息,结果还真在底层发现了未被更新的LVM信息。
根据未被更新的LVM信息定位到虚拟磁盘的数据区域,但是发现该区域的数据已被破坏。虚拟磁盘被破坏导致虚拟机操作系统和数据丢失。这类情况发生通常是由于虚拟机遭遇网络攻击或虚拟机被入侵后留下的恶意程序造成的。仔细观察发现虽然该区域中很多数据被破坏,但是发现很多数据库的页碎片,因此可以尝试将数据库的页碎片拼接成一个完整可用的数据库。
虚拟机数据恢复过程:
1、分析底层,根据RAR压缩包的结构找到很多压缩包的数据开始位置。由于RAR压缩包文件的第一个扇区会记录此RAR压缩包文件的文件名,因此可以根据用户方提供的备份数据库的压缩包文件名匹配目前从压缩包第一个扇区找到的文件名,通过这种方式可以找到备份数据库压缩包的开始位置。找到备份数据库压缩包的开始位置后,仔细分析这片区域的数据,然后将此区域的数据恢复出来重命名为一个RAR格式的压缩文件。然后尝试解压此压缩包,但是解压报错。
经过数据恢复工程师的分析,确定解压报错的原因是部分数据被破坏了。尝试使用RAR的修复工具(设置为忽略错误)来解压数据。结果在解压出来的数据中只找到网站的部分代码,并没有找到数据库的备份文件。因此可以判断RAR压缩包中的数据库备份文件是损坏的。
2、根据SQLServer数据库的结构,在底层分析数据库的开始位置。SQLServer数据库的第9个页会记录本数据库的数据库名,因此可以通过用户方提供的数据库名称在底层定位数据库的开始位置。SQLServer数据库的每个页都会记录数据库页编号以及文件号,因此北亚企安数据恢复工程师根据上述SQLServer数据库特征编写程序在底层扫描符合数据库页的数据。
将扫描出来的数据库页碎片按照顺序重组成一个完整MDF文件,然后通过MDF校验程序检测这个MDF文件的完整性。
3、MDF文件检测没问题之后,数据恢复工程师搭建数据库环境,将重组的数据库附加到搭建好的数据库环境中。查询相关表数据是否正常以及最新数据是否存在。
图5
4、使用用户方提供的网站代码搭建好环境,然后将恢复好的数据库结合网站进行验证,一切正常。用户方认可数据恢复结果。