服务器断电导致虚拟机数据丢失怎么恢复?

在服务器运行过程中如果出现意外情况突然断电很容易引起服务器故障,服务器中的硬件设备损坏可以修复或者购买,但是服务器中的数据一旦发生故障丢失,对于企业来说将是不可估量的损失。那么服务器数据一旦丢失就除了痛哭之外别无他法了吗?不是的,下面我将引用一个真实案例为大家讲解意外断电导致服务器数据丢失的数据恢复方法和过程。文中若有歧义之处欢迎探讨。
.
虚拟机数据丢失情况描述
因服务器突然断电原因导致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文件如下:
?
.
验证数据
检测没问题之后再搭建数据库环境,将重组后的数据库附加到搭建好的数据库环境中。然后查询相关表数据是否正常,查询最新数据是否存在。截图如下:

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

原文地址:http://blog.51cto.com/sun510/2062531

时间: 2024-10-08 12:02:03

服务器断电导致虚拟机数据丢失怎么恢复?的相关文章

真实案例:异常断电导致虚拟机无法启动恢复成功

虚拟机数据恢复故障: 发生故障的存储设备是某品牌存储 EVA8400型号,由于机房意外断电导致该存储中的一台VMware虚拟机无法启动(虚拟机中存储了oracle数据库),管理员清空cache并尝试重新启动该虚拟机但失败了.需要对该无法启动的虚拟机进行数据恢复. 虚拟机数据恢复流程:1)合并虚拟机快照 由于VMware虚拟机的快照原理是虚拟机的快照文件一旦被创建则之后的数据更新都只在快照文件里面发生,并且该虚拟机存在有两个快照文件.所以本次虚拟机数据恢复的第一步为将两个虚拟机快照进行合并,然后才

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的网站架构). 分析故障原因 为确保客户原始数

Linux服务器断电导致挂载及xfs文件损坏的修复方法

系统文件损坏后进入紧急修复模式,无法进行维护工作 welcome to emergency mode!after logging in ,type "journalctl -xb" to view system logs,"systemctl reboot" to reboot ,"systemctl default" to try again to boot into default mode. give root password for m

vsan存储服务器非正常关机导致虚拟机故障解决方法

Vsan是一种以vSphere内核为基础进行开发.可扩展的分布式存储架构,Vsan通过在vSphere集群主机当中安装闪存和硬盘来构建vsan存储层,这些设备由vsan进行控制和管理,vsan形成一个供vSphere集群使用的统一共享存储层.vSphere提供了HA功能,保证单台主机故障后业务可以在其他的主机上运行,同一个虚拟机的同一份数据,必须保存在不同主机上,也允许有主机故障.但是如果多台主机同时故障的话,就会导致整个vsan存储崩溃,一般突然断电或者非正常关机就会导致虚拟机故障,下面就是非

服务器断电瘫痪数据丢失后恢复数据的过程

一.服务器数据恢复故障描述 机房突然断电导致整个存储瘫痪,加电后存储依然无法使用.经过用户方工程师诊断后认为是断电导致存储阵列损坏.整个存储是由12块日立硬盘(3T SAS硬盘)组成的RAID-6磁盘阵列,被分成一个卷,分配给几台Vmware的ESXI主机做共享存储.整个卷中存放了大量的Windows虚拟机,虚拟机基本都是模板创建的,因此系统盘都统一为160G.数据盘大小不确定,并且数据盘都是精简模式. 二.备份服务器数据 将故障存储的所有磁盘和备份sss数据的目标磁盘连入到一台Windows

raid-6磁盘阵列损坏导致数据丢失的恢复过程(图文教程)

一.故障描述机房突然断电导致整个存储瘫痪,加电后存储依然无法使用.经过用户方工程师诊断后认为是断电导致存储阵列损坏.整个存储是由12块日立硬盘(3T SAS硬盘)组成的RAID-6磁盘阵列,被分成一个卷,分配给几台Vmware的ESXI主机做共享存储.整个卷中存放了大量的Windows虚拟机,虚拟机基本都是模板创建的,因此系统盘都统一为160G.数据盘大小不确定,并且数据盘都是精简模式. 二.备份数据将故障存储的所有磁盘和备份sss数据的目标磁盘连入到一台Windows Server 2008的

raid出现故障导致文件丢失如何恢复

RAID磁盘阵列设备,在使用过程中,经常会遇到一些常见故障,这也使得RAID在给我们带来海量存储空间的应用之外,也带来了很多难以估计的数据风险.本文将重点介绍RAID常见故障及raid文件恢复的相关处理方式. RAID的目的就是利用磁盘空间的冗余实现数据容错,不过这是在所有的磁盘或卷没有任何问题的前提下实现的.当RAID卷中的单个磁盘出现故障后,尽管数据可能暂时不会受到威胁,但是磁盘 冗余已经没有了,此时任何不当的操作都可能毁掉已经存放的数据.因此,在充分享受RAID所带来的安全好处时,还应该想

服务器断电后自动关机批处理FOR WINDOWS

一个项目是在新建大楼内,有时会断电,而临时配的UPS只能备用25-30分钟且没有管理功能,在新UPS到来之前,需要依靠以下的脚本来防止断电丢失数据. 当然了很多UPS没有COM口连接服务器自动关机的功能,这类UPS电池用完了还是会导致服务器断电.也可以使用此方法来实现断电后自动关机. 原理简单,在系统中配置一个每隔5分钟执行的计划任务,计划任务运行批处理PING指定的IP地址,为了避免误关机建议至少对2个以上IP进行检测,因断电后此IP无法PING通(一般可以使用网关.交换机的IP),就关闭主机

服务器断电后一连串的异常处理

(因为服务器是在分店,具体的环境不了解) 通过日志发现,应该是早晨7:44重新开启了服务器,至于是什么时候断电就不清楚了. 首先是有人反应连不到数据库,远程登录后,查看监听是正常的,然后查看数据为的状态 SQL> select status from v$instance; STATUS ------------------------ STARTED 发现数据库没有OPEN,关闭数据库,然后再打开,看看有什么报错信息 SQL> shutdown immediate ORA-01507: da