服务器数据恢复—KVM虚拟机被误删除如何恢复虚拟磁盘文件?

本文主要是介绍服务器数据恢复—KVM虚拟机被误删除如何恢复虚拟磁盘文件?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

服务器数据恢复环境&故障:
1台服务器,Linux操作系统+EXT4文件系统,部署了数台KVM虚拟机,每台虚拟机包含一个qcow2格式的磁盘文件,和一个raw格式的磁盘文件。
工作人员操作失误删除了3台服务器上的KVM虚拟机,需要恢复raw格式的磁盘文件。

服务器数据恢复过程:
1、将故障服务器中所有磁盘编号后取出,硬件工程师检测后没有发现有硬盘存在硬件故障。将所有磁盘以只读方式进行全盘镜像。镜像完成后将所有磁盘按照编号还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
2、基于镜像文件分析服务器中的EXT4文件系统,定位被删除的虚拟机磁盘文件节点位置。
3、获取磁盘文件残留的索引信息并校验残留索引信息是否正确,然后修复破坏不严重的索引。
获取的索引信息:

4、完成索引的修复后解析服务器中残留的各级索引,从虚拟机所在的卷中提取虚拟磁盘文件。
5、根据虚拟磁盘文件的提取情况,获取卷中未被索引到的自由空间。校验提取出的磁盘文件的正确性与完整性。
6、从自由空间中获取有效信息,尝试修补虚拟磁盘文件(如节点,目录项,数据库页等信息)。
提取出的自由空间:

7、由于部分索引丢失,提取出的虚拟磁盘文件并不完整。
针对存放数据库的服务器中数据库文件有丢失的情况,可以尝试从自由空间中获取数据库页去修补数据库文件。由于部分页所在区域被覆盖占用,只能尽量多的去补页。
针对存放程序代码的服务器中节点和目录项丢失的情况,若节点或目录项有残留,可以尝试去补齐节点和目录项。由于部分文件的节点和目录项同时丢失,根据节点和目录项之间相关联的特性,这种情况下无法补齐节点和目录项。再者程序代码文件不具备一定的规律性,若其数据区丢失,则无法补齐。
恢复出的部分目录结构:

8、尝试对虚拟磁盘文件及其中的数据库文件进行尽可能的修补之后,由用户方对恢复出来的数据进行验证。经过验证,服务器中绝大部分数据都恢复出来了,重要数据都在,用户方认可本次数据恢复结果。

这篇关于服务器数据恢复—KVM虚拟机被误删除如何恢复虚拟磁盘文件?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070943

相关文章

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Spring Boot3虚拟线程的使用步骤详解

《SpringBoot3虚拟线程的使用步骤详解》虚拟线程是Java19中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能,:本文主要介绍SpringBoot3虚拟线程的使用步骤,... 目录问题根源分析解决方案验证验证实验实验1:未启用keep-alive实验2:启用keep-alive扩展建