服务器断电导致虚拟机数据丢失的恢复方法详解

 更新时间:2018年01月19日 11:41:38   作者:宋国建  
这篇文章主要介绍了服务器断电导致虚拟机数据丢失的恢复方法,较为详细的分析了服务器断电导致的数据丢失情况与相应的故障处理技巧,需要的朋友可以参考下

本文实例讲述了服务器断电导致虚拟机数据丢失的恢复方法。分享给大家供大家参考,具体如下:

在服务器运行过程中如果出现意外情况突然断电很容易引起服务器故障,服务器中的硬件设备损坏可以修复或者购买,但是服务器中的数据一旦发生故障丢失,对于企业来说将是不可估量的损失。那么服务器数据一旦丢失就除了痛哭之外别无他法了吗?不是的,下面我将引用一个真实案例为大家讲解意外断电导致服务器数据丢失的数据恢复方法和过程。文中若有歧义之处欢迎探讨。

虚拟机数据丢失情况描述

因服务器突然断电原因导致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文件如下:

 

验证数据

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

虚拟机数据恢复总结:

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

希望本文所述对大家服务器维护有所帮助。

相关文章

  • cwrsync invalid uid nobody 解决方法

    cwrsync invalid uid nobody 解决方法

    这篇文章主要介绍了使用rsync/cwrsync工具进行档案同步的时候出现invalid uid nobody错误的解决方法,需要的朋友可以参考下
    2016-03-03
  • 便宜vps多是哪些技术架构方式(VPS分割架构是怎么超售的)

    便宜vps多是哪些技术架构方式(VPS分割架构是怎么超售的)

    对于vps服务器租用,一些人们可能比较注重vps服务器价格,那么,了解和清楚哪一类vps服务器比较便宜是有必要的,这样我们就有针对的去选用购买自己需要的便宜vps服务器
    2015-09-09
  • Git使用基础篇(一些常用命令和原理)

    Git使用基础篇(一些常用命令和原理)

    Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版本控制工具可以对开发产生如此之多的影响
    2014-09-09
  • 服务器(VPS)安装WebSite Panel面板教程(图文)

    服务器(VPS)安装WebSite Panel面板教程(图文)

    这篇文章主要为大家分享下WebsitePanel的安装方法,WebsitePanel简称WSP是微软旗下,开源免费的虚拟主机系统,需要win2008 r2环境
    2013-12-12
  • Z-Order加速Hudi大规模数据集方案分析

    Z-Order加速Hudi大规模数据集方案分析

    这篇文章主要介绍了通过Z-Order技术加速的Hudi大规模数据集方案分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-03-03
  • 为服务器添加211端口映射的方法

    为服务器添加211端口映射的方法

    本文详细介绍了在服务器上配置211端口映射的步骤,包括理解端口映射的概念、确认服务器类型、检查安全组设置、配置防火墙规则、验证服务状态、测试端口连通性以及联系技术支持,此外,还强调了定期维护和优化的重要性,感兴趣的朋友一起看看吧
    2025-01-01
  • git多人协作_动力节点Java学院整理

    git多人协作_动力节点Java学院整理

    这篇文章主要介绍了git多人协作,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • MIME类型大全(response.setContentType中MIME参数类型总结)

    MIME类型大全(response.setContentType中MIME参数类型总结)

    MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式
    2017-07-07
  • VScode连接服务器不用每次都输入密码的解决方法

    VScode连接服务器不用每次都输入密码的解决方法

    这篇文章主要介绍了VScode连接服务器不用每次都输入密码的解决方法,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • WHMCS V7.4.2 图文安装教程

    WHMCS V7.4.2 图文安装教程

    这篇文章主要介绍了WHMCS V7.4.2 图文安装教程,需要的朋友可以参考下
    2019-04-04

最新评论