虚拟化数据恢复—XenServer虚拟机中SQL Server数据库数据恢复案例
服务器虚拟化数据恢复环境:
某品牌720服务器中有一组通过同品牌、型号为H710P的RAID卡+4块STAT硬盘组建的RAID10磁盘阵列。上层部署XenServer虚拟化平台。1台Windows Server操作系统虚拟机,该虚拟机有2块虚拟磁盘(系统盘+数据盘),当作网站服务器使用。
服务器虚拟化故障:
XenServer虚拟机不可用,虚拟磁盘中数据丢失。
服务器虚拟化数据恢复过程:
1、将故障服务器中磁盘标记后取出,硬件工程师检测后没有发现有硬盘存在硬件故障。将所有磁盘以只读方式进行扇区级完整镜像,镜像完成后将所有磁盘按照原样还原到原服务器中。后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析所有硬盘底层数据,发现XenServer虚拟机的磁盘是以LVM来管理的,即每台虚拟机的虚拟磁盘都是一个LV,LVM的相关信息在XenServer中都有记载。
查看“/etc/lvm/backup/ “目录下LVM的相关信息。没有发现损坏的虚拟磁盘信息,基本上可以判断LVM信息已经被更新。继续查找,还是在底层发现了未被更新的LVM信息。
3、根据未被更新的LVM信息找到虚拟磁盘的数据区域,发现该区域的数据已被破坏。这种情况极有可能是虚拟机遭遇攻击后留下恶意程序所造成的。虽然该区域很多数据被破坏,但是在该区域找到大量数据库页碎片。可以尝试将数据库的页碎片拼接成一个可用的数据库。
4、数据库之前做过一次备份。这个数据库备份文件和网站代码一起被压缩到一个RAR的压缩包中,因此只需要恢复这个压缩包即可恢复这个备份的数据库和网站的源代码。经过尝试后发现压缩包中的数据已经损坏,解压报错。
修复后也只能解压出部分网站源代码,并没有解压出数据库的备份文件,RAR压缩包中的数据库备份文件是损坏的。无法通过这种方法恢复数据。
5、根据SQL Server数据库的结构在底层分析数据库的开始位置。
SQL Server数据库中第9个页会记录本数据库的数据库名。在用户方获取到数据库的名称之后,在底层找到数据库的开始位置。SQL Server数据库每个页都会记录数据库页编号以及文件号,根据这些特征北亚企安数据恢复工程师编写程序在底层扫描符合数据库页的数据。
6、将扫描出来的碎片按顺序重组成一个完整MDF文件,再使用MDF校验程序检测MDF文件的完整性。
7、检测没问题之后搭建数据库环境。将重组后的数据库附加到搭建好的数据库环境中。查询相关表数据是否正常,查询最新数据是否存在。
8、从网站开发商拿到了网站代码搭建好网站环境,将恢复出来的数据库配置好进行验证。经过用户方验证后,确认恢复出来的数据库没问题。