服务器数据恢复服务器断电导致Xen Server虚拟机不可用的数据恢复案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器数据恢复服务器断电导致Xen Server虚拟机不可用的数据恢复案例相关的知识,希望对你有一定的参考价值。

服务器数据恢复环境:

某公司一台DELL服务器,作为WEB服务器使用,安装的Windows Server操作系统,配置了SQL Server数据库;

采用了Xen Server虚拟化系统;

底层是通过raid卡,用4块STAT硬盘搭建的RAID10。


服务器故障:

服务器意外断电导致虚拟机磁盘丢失,虚拟机不可用。需要恢复SQL Server数据库。


服务器数据恢复过程:

1、将故障服务器中所有硬盘以只读方式进行镜像备份,后续的数据恢复分析和数据恢复操作都基于镜像文件进行,不会对原服务器做任何操作,保证原服务器初始状态,避免对原始数据造成可能的二次破坏。

2、基于镜像文件对底层数据进行分析,发现故障服务器中丢失的虚拟机磁盘都采用了LVM的结构。进入到“/etc/lvm/backup/”目录下查询看是否有损坏的虚拟磁盘信息,如果有就意味着LVM信息尚有保存;如果没有就意味着虚拟磁盘信息已经被更新,只能通过底层数据查找没有更新的lvm信息。本案例中北亚企安数据恢复工程师从底层数据中查询到了尚未更新的lvm信息,见下图:


【服务器数据恢复】服务器断电导致Xen


3、找到lvm信息就意味着数据还在。基于lvm信息分析&查找虚拟磁盘的分区数据,但是数据恢复工程师经过分析后竟然发现虚拟磁盘被破坏了,这种现象非常少见。经过进一步查找和分析后确认该区域的数据确实被破坏了,只能找到一些数据库页碎片,可以通过数据库碎片拼接的手段来恢复数据,即根据数据库结构,将底层找到的数据库的页碎片按照原先的顺序拼接起来,然后对数据库进行修复和校检后即可恢复数据库。

4、试图通过数据库备份来恢复数据库。因为之前数据库做过一次备份,数据库备份文件和网站代码被一起压缩到一个RAR压缩包文件中。正常情况下rar压缩包的第一个扇区记录的是文件名,所以可以根据文件名反向查找压缩包的数据起始位置,把相应的压缩包底层数据提取出来并重命名。但是在实际的恢复过程中却出现了意外,提取出来的压缩包解压时报错,报错信息见下图:


【服务器数据恢复】服务器断电导致Xen


5、尝试使用rar修复工具(设置为“忽略错误”)继续解压数据,仍然解压失败。常规的数据恢复方法行不通。只能通过数据库碎片拼接来恢复数据库数据。

6、在数据库层面分析数据库开始位置,分析出数据库开始位置后根据每个数据库页的编号和文件号去底层扫描符合这个数据库页的所有数据,最后由北亚企安数据恢复工程师将所有扫描出来的数据重组为一个mdf文件。经过校验程序检测合格后提取数据。重组后的mdf文件见下图:

 

【服务器数据恢复】服务器断电导致Xen


数据验证:

经过北亚企安数据恢复工程师团队的不懈努力,最终将服务器内的数据全部提取出来并通过初步验证。搭建了数据库环境,将恢复出来的数据库数据附加上去进行查询,最新数据都查询正常。本次数据恢复完成。恢复结果见下图:


【服务器数据恢复】服务器断电导致Xen

Xen Server虚拟机数据丢失的恢复过程

虚拟机数据丢失情况描述

因服务器突然断电原因导致Xen Server服务器中一台VPS(即Xen Server虚拟机)不可用,虚拟磁盘文件丢失。硬件环境是Dell 720服务器配戴一张H710P的RAID卡,由4块希捷2T STAT硬盘组成的RAID 10,上层环境是Xen Server 6.2版本操作系统,虚拟机是Windows Server 2003系统,10G系统盘 + 5G数据盘两个虚拟机磁盘,上层是Web服务器(ASP + SQL 2005的网站架构)。
技术分享图片

分析故障原因

为确保客户原始数据的安全必须先将客户的数据盘连接到恢复环境服务器上准备对数据进行镜像备份,这一步中需要准备超过客户硬盘总容量的存储空间将数据以底层扇区的方式进行镜像备份。
在案例中分析底层数据发现Xen Server服务器中虚拟机的磁盘均以以LVM的结构存放,即每个虚拟机的虚拟磁盘都是一个LV,并且虚拟磁盘的模式是精简模式的。LVM的相关信息在Xen Server中都有记载,查看“/etc/lvm/backup/frombtye.com “下LVM的相关信息发现并没有存在损坏的虚拟磁盘信息,因此可以断定LVM的信息已经被更新了。接着分析底层看能否找到未被更新的LVM信息,果不其然在底层发现了还未更新的LVM信息。
如下图:
技术分享图片

根据未被更新的LVM信息找到了虚拟磁盘的数据区域,发现该区域的数据已被破坏。分析后发现造成虚拟机不可用的最终原因是因为虚拟机的虚拟磁盘被破坏,从而导致虚拟机中的操作系统和数据丢失。而导致这种情况的发生很有可能是虚拟机遭遇网络×××或hack***后留下恶意程序造成的。仔细核对这片区域后发现,虽然该区域有很多数据被破坏了,但还是发现了很多数据库的页碎片。因此可以尝试将许多数据库的页碎片拼成一个可用的数据库。

1、实施方案一

根据RAR压缩包的结构可以找到很多压缩包的数据开始位置,而RAR压缩包文件的第一个扇区中会记录此RAR的文件名。因此根据从客户那里得知备份数据库的压缩包文件名和目前找到的压缩包位置的文件名相匹配,即可找到备份数据库压缩包的开始位置。找到压缩包的位置后仔细分析这片区域的数据,然后将此区域的数据恢复出来重命名为一个RAR格式的压缩文件。然后尝试解压此压缩包,发现解压报错。
报错如下图所示:
技术分享图片

仔细分析恢复出来的压缩包发现中有部分数据被破坏了,因此解压的时候报错。尝试使用RAR的修复工具看能否忽略错误,解压部分数据。结果修复完成之后解压的数据库只有网站的部分代码,并没有数据库的备份文件。因此可以判断数据的备份文件在RAR压缩包中是损坏的。
如下是解压出来的部分网站代码。
技术分享图片

2、实施方案二

由于方案一并没有将数据库恢复出来,因此采用方案二来恢复数据。根据SQL Server数据库的结构去底层分析数据库的开始位置,在数据库的结构中,第9个页会记录本数据库的数据库名。因此在客户那里获取数据库的名称之后,再分析底层找到此数据库的开始位置。因为在数据库的每个页中都会记录数据库页编号以及文件号,所以可以根据这些特征编写程序去底层扫描符合数据库页的数据。
然后将扫描出来的碎片按顺序重组成一个完整MDF文件,再通过MDF校验程序检测整个MDF文件是否完整。
重建的MDF文件如下:
技术分享图片

验证数据

检测没问题之后再搭建数据库环境,将重组后的数据库附加到搭建好的数据库环境中。然后查询相关表数据是否正常,查询最新数据是否存在。
截图如下:
技术分享图片

虚拟机数据恢复总结

由于数据库需要结合网站代码才能更好的验证数据库的完整性。客户从开发商里拿到了网站代码搭建好了环境,然后将恢复好的数据库发给用户。经用户验证后,数据库没问题,通过拼数据库碎片的方式成功将数据库恢复完成,整个数据恢复成功。

以上是关于服务器数据恢复服务器断电导致Xen Server虚拟机不可用的数据恢复案例的主要内容,如果未能解决你的问题,请参考以下文章

Xen Server虚拟机不可用的数据恢复方法

Xen server虚拟化磁盘文件丢失恢复案例实施过程

Xen server虚拟化中虚拟机磁盘文件丢失的处理办法

公司Xen server虚拟化中虚拟机磁盘文件丢失的处理办法

断电之后ESXI里的vcenter server 中安装的一台虚拟机不可访问,无法开启电源,该怎么办?

Xen-Server使用方式