【虚拟机数据恢复】异常断电导致虚拟机无法启动的数据恢复案例

news2024/12/24 11:32:43

虚拟机数据恢复环境:
某品牌R710服务器+MD3200存储,上层是ESXI虚拟机和虚拟机文件,虚拟机中存放有SQL Server数据库。

虚拟机故障:
机房非正常断电导致虚拟机无法启动。服务器管理员检查后发现虚拟机配置文件丢失,所幸xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。服务器管理员在尝试恢复虚拟机的过程中,将原虚拟机内的xxx-flat.vmdk删除后新建了一个虚拟机,并分配了精简模式的虚拟机磁盘和快照数据盘,但原虚拟机内的数据并没有恢复。

虚拟机数据恢复过程:
1、将挂载在VMware vSphere Client上的卷卸载后备份,后续的数据分析和数据恢复操作都基于备份数据进行,避免对原始数据造成二次破坏。
2、基于备份数据进行检测和分析。经过检测和分析发现虚拟机目录项由于异常断电被破坏,服务器管理员删除的xxx-flat.vmdk文件导致文件的数据区索引被清除,而重建虚拟机导致分配给新建虚拟机的磁盘底层数据被清零。前两种情况可以通过人工修复恢复数据,但新建虚拟机的操作直接导致磁盘底层数据清零。如果新建虚拟机的磁盘空间占用了原虚拟机的释放空间则会导致这部分数据无法恢复,具体情况需要进一步检测。
虚拟机目录项:

3、再次基于备份分析底层数据,在自由空间中排查被删除的虚拟机磁盘区域,在扫描这部分区域过程中发现大量碎片。尝试拼接和重组这些碎片,发现仍然缺失部分碎片文件,只能暂时将丢失的文件碎片位置留空。
4、利用虚拟磁盘快照程序将重组好的父盘和快照盘合并,生成一个新的虚拟磁盘。尝试解释虚拟磁盘中的文件系统,数据缺失导致在文件系统的解释过程中出现报错,提示某些文件损坏。
解释文件系统:

5、文件系统解析完后,没有找到原始的数据库文件,但是备份的两个目录的目录结构正常。尝试将备份导入到数据库中时提示报错。
备份目录结构:

导入.BAK文件报错:

6、根据SQL Server数据库的结构去自由空间中查找数据库的开始位置。根据SQL Server数据库库名通常出现的位置在底层扫描数据库页的碎片,然后重组mdf文件。
在本案例中除了cl_system3.dbf和erp42_jck.dbf中有部分碎片没有找到,其余数据库文件均校验成功。
校验完的MDF文件:

cl_system3.dbf文件中某个碎片丢失的区域:

7、详细检查备份文件发现上述丢失的两个文件也不存在,只有部分增量备份文件。erp42_jck.dbf文件中只缺失少量的页,可以根据缺失的页号在增量备份中查找,再将找到的页补到erp42_jck.dbf文件中,通过这种方式恢复一部分丢失的数据库页。补完后发现还是有部分页缺失,无法正常使用。
8、使用北亚企安自主开发的数据库解析程序将erp42_jck.dbf文件中比较重要的几十张表成功导出,并成功导入到新建的数据库中,恢复出缺失的文件。
9、将恢复出来的数据导入到重新搭载好的环境中,由用户方验证数据库的完整性。经过仔细验证,用户方确认所有恢复出来的数据完整、数据库成功挂载、上层应用运行正常,用户方认可本次数据恢复结果。本次虚拟机数据恢复工作完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】GraspNeRF: Multiview-based 6-DoF Grasp Detection

文章目录 GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF针对痛点和贡献摘要和结论引言模型框架实验不足之处 GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Us…

Vulnhub靶场DC-9

攻击机192.168.223.128 靶机192.168.223.138 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.138 开启了22 80端口 访问一下web页面 有个查询界面 测试发现存在post型的sql注入 用sqlmap跑一下,因为是post型的,这里…

C#使用RabbitMQ-1_Docker部署并在c#中实现简单模式消息代理

介绍 RabbitMQ是一个开源的消息队列系统,实现了高级消息队列协议(AMQP)。 🍀RabbitMQ起源于金融系统,现在广泛应用于各种分布式系统中。它的主要功能是在应用程序之间提供异步消息传递,实现系统间的解耦和…

RabbitMQ问题总结

:::info 使用场景 异步发送(验证码、短信、邮件。。。)MySQL 和 Redis、ES 之间的数据同步分布式事务削峰填谷… ::: 如何保证消息不丢失 上图是消息正常发送的一个过程,那在哪个环节中消息容易丢失?在哪一个环节都可能丢失 生…

Ubuntu20.4 Mono C# gtk 编程习练笔记(四)

连续实时绘图 图看上去不是很清晰,KAZAM录屏AVI尺寸80MB, 转换成gif后10MB, 按CSDN对GIF要求,把它剪裁缩小压缩成了上面的GIF,图像质量大不如原屏AVI,但应该能说明原意:随机数据随时间绘制在 gtk 的 drawin…

使用OpenCV实现一个简单的实时人脸跟踪

简介: 这个项目将通过使用OpenCV库来进行实时人脸跟踪。实时人脸跟踪是一项在实际应用中非常有用的技术,如视频通话、智能监控等。我们将使用OpenCV中的VideoCapture()函数来读取视频流,并使用之前加载的Haar特征级联分类器来进行人脸跟踪。 …

浅谈Python两大爬虫库——urllib库和requests库区别

目录 一、urllib库 1、使用方法 2、功能 3、效率 二、requests库 1、使用方法 2、功能 3、效率 三、总结与建议 在Python中,网络爬虫是一个重要的应用领域。为了实现网络爬虫,Python提供了许多库来发送HTTP请求和处理响应。其中,url…

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践)

MySql8的简单使用(1.模糊查询 2.group by 分组 having过滤 3.JSON字段的实践) 一.like模糊查询、group by 分组 having 过滤 建表语句 create table student(id int PRIMARY KEY,name char(10),age int,sex char(5)); alter table student add height…

【Linux C | 网络编程】入门知识:TCP协议、TCP客户端、TCP服务端

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

MySQL 数据库 JDBC 简化 JDBCTemplate

JDBCTemplate编程 场景:使用JdbcTemplate技术向MySQL中插入一条数据 表结构如下 create table t_person(person_id int primary key auto_increment,person_name varchar(20),age tinyint,sex enum(男,女,奥特曼),height decimal(4,1),birthday datetime ) AP…

勤学苦练“prompts“,如沐春风“CodeArts Snap“

前言 CodeArts Snap 上手一段时间了,对编程很有帮助。但是,感觉代码编写的不尽人意。 我因此也感到困惑,想要一份完整的 CodeArts Snap 手册看看。 就在我感觉仿佛"独自彷徨在这条悠长、悠长又寂寥的雨巷"时,我听了大…

Ubuntu+Apache+MySQL+PHP+phpstorm+xdebug下的debug环境搭建(纯小白笔记)

关键词 一、win10双系统装Ubuntu(Deepin) 参考文章: https://www.cnblogs.com/masbay/p/11627727.html 1.1 首先需要确定自己操作系统的引导方式 1.1.1 查看BIOS模式 “winr"快捷键进入"运行”,输入"msinfo32…

微软 AD |域控制器 | 组件 | 域服务 | 对象解析

介绍 Active Directory(AD),是微软的目录服务,提供强大的功能和管理体系,用于组织管理和安全存储网络上的资源和用户、计算机、服务对象等信息。 AD 功能: 身份验证和访问控制: 提供集中式的身…

2024 高级前端面试题之 CSS 「精选篇」

该内容主要整理关于 CSS 的相关面试题,其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 CSS模块精选篇 1. 盒模型2. BFC3. 层叠上下文4. 居中布局5. 选择器权重计算方式6. 清除浮动7. link 与 import 的区别8. CSS3的新特性9. CSS动画和过渡10. 有哪些…

Mac中java jdk、android sdk、flutter sdk目录

1、Java JDK 目录 (1)官网下载的 Java JDK Java JDK下载官网 /Library/Java/JavaVirtualMachines(2)Android Studio下载的 Java JDK /Users/用户名/Library/Java/JavaVirtualMachines2、Android SDK 目录 /Users/用户名/Libr…

以梦为码,CodeArts Snap 缩短我与算法的距离

背景 最近一直在体验华为云的 CodeArts Snap,逐渐掌握了使用方法,代码自动生成的准确程度大大提高了。 自从上次跟着 CodeArts Snap 学习用 Python 编程,逐渐喜欢上了 Python。 我还给 CodeArts Snap 起了一个花名: 最佳智能学…

SQL注入实战:二阶注入

一、二阶注入的原理 1、二阶注入也称为SOL二次注入。 2、二次注入漏洞是一种在Web应用程序中广泛存在的安全漏洞形式:相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有与一次注入攻击漏洞相同的攻击威力。 3、简单的说,二次…

GitHub国内打不开(解决办法有效)

最近国内访问github.com经常打不开,无法访问。 github网站打不开的解决方法 1.打开网站http://tool.chinaz.com/dns/ ,在A类型的查询中输入 github.com,找出最快的IP地址。 2.修改hosts文件。 在hosts文件中添加: # localhost n…

Leetcode—2807. 在链表中插入最大公约数【中等】

2023每日刷题(九十九) Leetcode—2807. 在链表中插入最大公约数 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val…

Datawhale 组队学习之大模型理论基础 Task7 分布式训练

第8章 分布式训练 8.1 为什么分布式训练越来越流行 近年来,模型规模越来越大,对硬件(算力、内存)的发展提出要求。因为内存墙的存在,单一设持续提高芯片的集成越来越困难,难以跟上模型扩大的需求。 为了…