当前位置: 首页 > article >正文

虚拟化数据恢复—ESXi虚拟机数据恢复案例

虚拟化数据恢复环境:
SAN环境下通过iSCSI实现FreeNAS,FreeNAS采用的UFS2文件系统。物理存储架构在一台服务器上,另外两台服务器上安装ESXi虚拟化系统。整个存储建立一个稀疏模式的文件,并挂载到ESXi虚拟化系统上。ESXi系统上有5台虚拟机。
其中有三台虚拟机比较重要:第一台安装windows server操作系统的虚拟机作为网站服务器使用,部署了ASP.net+SqlServer和PHP+mysql两套架构;第二台虚拟机安装FreeBSD系统,部署Mysql数据库,供其它几台虚拟机使用;第三台虚拟机安装windows server操作系统,存放程序代码。

虚拟化故障:
一次异常断电后,ESXi虚拟化系统连不上存储。管理员发现FreeNAS上的UFS2文件系统出现问题,于是使用fsck命令修复文件系统。 虽然在修复完成后ESXi系统可以连上存储,但是ESXi系统无法识别到原来的数据存储和VMFS文件系统,管理员格式化VMFS后发现里面空无一物。

虚拟化数据恢复过程:
应用构架:FreeNAS(UFS2文件系统–> 一个大的稀疏模式的文件)–> ESXi (VMFS文件系统层) -> 单台虚拟机的虚拟磁盘 (windows server-NTFS文件系统/FreeBSD-UFS2文件系统)。
1、镜像FreeNAS。基于镜像文件分析整个存储,发现一个名称为iscsidata的大文件。根据UFS2文件系统的二进制结构定位到iscsidata文件的Inode数据,发现此文件被重建过,inode指针指向的数据量很少。FreeNAS层问题无法解决,无法进入到下一步的VMFS层分析。
UFS2文件系统结构:
块大小:16KB
Segment大小:2KB
柱面组大小:188176KB
UFS2文件系统一个数据指针占8字节,一个块可以存储2048个数据指针,一个二级指针块可存储2048×2048×16KB=64GB数据,一个三级指针块则可存储64GB*2048=128TB数据。如果能找到iscsidata文件的三级指针块就能解决FreeNAS层问题,但是iscsidata文件被重建过,应该有部分指针块已被覆盖。原始 iscsidata文件的inode和新建iscsidata文件的inode在一个位置,尝试搜索没有发现有用的inode。北亚企安数据恢复工程师编写程序收集有用的指针块。


2、由于iscsidata文件使用的稀疏模式,放宽收集条件后收集到了大量三级指针块和二级指针块。分析发现所有收集到的三级指针块都是无效的,没有发现iscsidata文件使用的三级指针块,估计在新建iscsidata文件时被覆盖。
3、分析收集到的二级指针块,对有大量二级指针块的指向数据进行DUMP,得到大量DUMP的数据。
4、因为重新格式化过VMFS文件系统,原始UFS2文件系统的指针已经丢失,VMFS元文件基本上不可用,无重要的参考信息。通过单台虚拟机(windows(NTFS)和FreeBSD(UFS2)系统的文件系统结构)向上定位到VMFS层,再通过VMFS层定位到DUMP出的单个64GB文件。通过多次组合,最终这三台重要虚拟机的虚拟磁盘数据已完全恢复。将恢复出的网页数据和数据库数据上传到一新建的系统中,拉起应用,数据完全无问题。


 


http://www.kler.cn/a/390106.html

相关文章:

  • 蓝桥杯c++算法学习【1】之枚举与模拟(卡片、回文日期、赢球票、既约分数:::非常典型的比刷例题!!!)
  • 阿里云Linux安装Docker服务报错问题
  • SpringBoot(十一)SpringBoot上传文件
  • 2024年11月11日Github流行趋势
  • 2023年12月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析
  • 使用CSS和JavaScript实现动画效果
  • 河南测绘资质办理注意事项
  • GIT的基本使用与进阶
  • Rust里面针对Option和Result的and_then和map有什么区别
  • Kafka 分区的目的?
  • 【PGCCC】Postgresql 编写自定义 C 函数
  • Spring Boot - 扩展点 EnvironmentPostProcessor源码分析及真实案例
  • Python实现PageRank算法
  • 好算法的特性
  • Ubuntu 的 ROS2 操作系统turtlebot3环境搭建
  • 初识Python:
  • 图像处理椒盐噪声
  • 【论文复现】自动化细胞核分割与特征分析
  • linux物理内存管理:node,zone,page
  • GitHub新手入门 - 从创建仓库到协作管理