KVM虚拟机误删除数据恢复案例分享

举报
技术火炬手 发表于 2019/04/08 15:10:53 2019/04/08
【摘要】 KVM虚拟机时Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理。

KVM虚拟机时Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理。

一、虚拟机故障环境描述

客户的物理机器操作系统为Linux系统,文件系统为EXT4文件系统。其上的KVM虚拟机被删除,每台虚拟机包含一个qcow2格式的磁盘文件,和一个大小约为1.2T的raw格式的磁盘文件,主要需恢复raw格式的磁盘文件。用户需要的是三台虚拟化服务器,里面存放的是数据库,程序代码等数据。

二、虚拟机数据恢复过程

1、分析EXT4文件系统,定位被删除虚拟机磁盘文件的节点位置;

2、获取磁盘文件残留的索引信息;

3、校验残留索引信息的正确性,修复破坏不严重的索引;

图为获取的索引等信息:

1w.png

图 1

4、修复完成后,解析残留的各级索引,从虚拟机所在的卷中提取虚拟磁盘文件;

5、根据虚拟磁盘文件的提取情况,获取卷中未被索引到的自由空间;

6、校验提取出的磁盘文件的正确性与完整性;

7、从自由空间中获取有效信息,尝试对虚拟磁盘文件进行修补(如节点,目录项,数据库页等信息)。

图为提取出的自由空间:

2w.png

图 2

三、数据恢复结果

1、由于索引丢失,提取出的虚拟磁盘文件并不完整,针对数据库服务器,数据库文件有丢失的情况,可以从自由空间中获取数据库页去对数据库文件进行修补,但由于部分页所在区域被覆盖占用,只能尽量多的去补页;

2、对于存放程序代码的服务器中的节点和目录项丢失的情况,若节点或目录项有残留,可以尝试去补齐节点和目录项。但发现部分文件的节点和目录项同时丢失,根据节点和目录项之间相关联的特性,这种情况下无法补齐。另根据程序代码文件的特性,不具备一定的规律性,若其数据区丢失,无法补齐。

图为恢复出的部分目录结构:

3w.png

图 3

4w.png

图 4

四、数据验证

在尽可能的尝试对虚拟磁盘文件及其中的数据库文件修补之后,由客户对数据进行验证。数据有小部分丢失,整体还可以接受,数据恢复有效。

------------------------------

本文转自宋国建博客51CTO博客

如需转载,请联系作者授权

原文链接:https://blog.51cto.com/sun510/2374005

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。