服务器数据恢复—ESXi无法识别数据存储和VMFS文件系统如何恢复数据?

服务器数据恢复环境:
一台某品牌服务器,通过FreeNAS来做iSCSI,然后使用两台同品牌服务器做ESXi虚拟化系统。
FreeNAS层为UFS2文件系统,使用整个存储建一个稀疏模式的文件,挂载到ESXi虚拟化系统。ESXi虚拟化系统中有3台比较重要的虚拟机,这几台虚拟机情况如下:
1、windows server操作系统,运行门户网站,采用ASP.net+PHP混合构架,部署的SqlServer和mysql数据库 。
2、FreeBSD操作系统,运行Mysql数据库,供其他多台虚拟机使用。
3、windows server系统,存放新开发的程序代码。

服务器故障&分析:
在一次机房断电之后,ESXi系统连不上存储,管理员发现FreeNAS中的UFS2文件系统出现问题,管理员使用fsck修复文件系统。文件系统修复完成后,虽然ESXi系统可以连上存储,但ESXi系统无法识别原数据存储和VMFS文件系统,管理员对VMFS进行格式化后发现里面没有任何数据。
应用构架层次:FreeNAS(UFS2文件系统–> 一个大的稀疏模式的文件) –> ESXi(VMFS文件系统层) -> 单台虚拟机的虚拟磁盘 (windows-NTFS文件系统/FreeBSD-UFS2文件系统)。

服务器数据恢复过程:
1、镜像FreeNAS层,基于镜像文件分析整个存储,只发现一个文件名为iscsidata的大文件。根据UFS2文件系统的二进制结构定位到iscsidata文件的Inode数据,发现此文件被重建过,inode指针指向的数据量很少。所以通过FreeNAS层无法解决问题,只能尝试通过VMFS层着手解决。
UFS2文件系统结构:
块大小:16KB
Segment大小:2KB
柱面组大小:188176KB
Tips:UFS2一个数据指针占8字节,一个块可存储2048个数据指针,那么一个二级指针块可存储:2048*2048*16KB=64GB数据,一个三级指针块则可存储 64GB*2048=128TB数据。如果能找到iscsidata文件的三级指针块就能解决 FreeNAS层问题。但iscsidata文件重建过,过程和大小都和原始的一样,部分指针块应该已经被覆盖。原iscsidata文件的inode和新建的iscsidata文件的inode在同一个位置,尝试搜索后没有发现其它有用的inode。北亚企安数据恢复工程师只能现场写程序收集有用的指针块。

2、由于iscsidata文件采用稀疏模式,在放宽条件后收集到大量三级指针块和二级指针块。经过分析发现所有收集到的三级指针块都是无效的,没有找到iscsidata文件使用的三级指针块,应该是在新建iscsidata文件时被覆盖(新的iscsidata文件挂载到ESXi后有个VMFS格式化过程,而ESXi使用的是GPT分区,GPT分区会在磁盘最后写入冗余的GPT头和分区表信息数据,会使用到iscsidata文件的三级指针块)。
3、分析收集到的二级指针块,对有大量的二级指针块的指向数据进行DUMP,然后再通过磁盘中的数据定位到二级指针,通过这种方式可以获取到大量DUMP的数据。
4、分析VMFS层:因为格式化过VMFS,加上原UFS2文件系统的指针已丢失,所以VMFS元文件基本上不可用,无重要参考信息,所幸虚拟机都有快照,仍可恢复。通过单台虚拟机(windows(NTFS)和 FreeBSD(UFS2)的文件系统结构),向上定位到VMFS层,再通过VMFS层定位到DUMP出的单个64GB文件。
5、通过多次组合,这3台重要虚拟机的虚拟磁盘都完全恢复。将恢复出的网页数据和数据库数据上传到新搭建的系统中,拉起应用,经过检测数据完全无问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样通过HTTP协议实现远程控制两路开关

怎样通过HTTP协议实现远程控制两路开关呢? 本文描述了使用HTTP协议调用HTTP接口,实现控制两路开关,两路开关可控制两路照明、排风扇等电器。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂商1智能Wi…

flutter开发实战-build apk名称及指令abiFilters常用gradle设置

flutter开发实战-build apk名称及指令abiFilters常用gradle设置 最近通过打包flutter build apk lib/main.dart --release,发现apk命名规则需要在build.gradle设置。这里记录一下。 一、apk命名规则 在android/app/build.gradle中需要设置 android.applicationVa…

OpenWrt上的docker容器无法访问外网解决

容器里能ping通OpenWrt的管理地址和wan口地址,但ping外网别的ip或域名就无法访问 简单修改设置就可以: Luci>网络>防火墙>转发:接受 ->保存应用

俩招解决vs code中文编译乱码现象

如下图所示 输出会出现乱码,引起这个情况的原因是什么呢? 本页面的编码形式可能不是 utf-8 的形式。 解决方法一 可以尝试使用命令 system("chcp 65001"); system("chcp 65001"); system("chcp 65001"); 这条命令在C程序中用于解决中文乱码问…

银行押款车远程监控系统的实际需求与特点

随着金融行业的快速发展,银行押款车的安全性问题日益受到重视。传统的押款车监控方式已经无法满足现代安全管理的需求,因此,一种结合先进技术的远程监控系统应运而生。本文旨在探讨在运钞车上安装车载摄像机和集成有GPS、无线4G网络传输模块的…

四数之和 ---- 双指针

题目链接 题目: 分析: 我们已经知道三数之和如何求取, 并去重了 三数之和 那么四数之和同理, 需要固定两个数a和b 然后用"双指针算法" , 只要两指针之和等于target-a-b即可同样对于四个数都要进行去重 代码: class Solution {public List<List<Integer>…

LM2576D2TR4-5G 3.0安15伏降压开关稳压器 PDF中文资料_参数_引脚图

LM2576D2TR4-5G 规格信息&#xff1a; 制造商:ON Semiconductor 产品种类:开关稳压器 RoHS:是 装置风格:SMD/SMT 封装 / 箱体:TO-263-5 输出电压:5 V 输出电流:3 A 输出端数量:1 Output 最大输入电压:45 V 拓扑结构:Buck 最小输入电压:7 V 开关频率:52 kHz 最小工作…

新书推荐机器学习大数据平台的构建、任务实现与数据治理

在大数据与机器学习日新月异的今天&#xff0c;构建稳定、安全、可扩展的数据平台已成为企业和研究机构的迫切需求。这本书应运而生&#xff0c;提供了详尽且实用的指南&#xff0c;帮助读者在云计算环境中构建、优化和治理大数据平台。 作者以清晰明了的写作风格&#xff0c;…

最小费用流相位解包裹

% test_cunwrap.m % % Matlab script to test Costantinis unwrapping % Author: Bruno Luong <brunoluong@yahoo.com> % History: % Orginal: 27-Aug-2009clear all; close all; clc; I1=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.public_files\博士阶段\小…

与Apollo共创生态:我和Apollo七周年大会的心路历程

一、写在前面 前几天观看了Apollo七周年大会&#xff0c;给我带来了超多的惊喜&#xff0c;博主想将这份惊喜分享给大家&#xff01; 二、Apollo开放平台 Apollo开放平台秉承其核心理念——开放能力、共享资源、加速创新、持续共赢&#xff0c;致力于推动自动驾驶技术的革新…

MySQL recursive 递归

MySQL 从最内的select开始执行&#xff0c;但是同一个select clause可以在查询的结果上继续查询。 SELECT menu_id,parent_id,(SELECT m1.parent_id FROM sys_menu AS m1 WHERE m1.menu_idm.parent_id) FROM sys_menu AS m WHERE m.menu_id 89 方案1.通过recursive递归 使用…

R基本的数据管理

一&#xff0c;创建变量 创建一个数据框 > myData<-data.frame(x1c(1,2,3,4,5,6),x2c(6,5,67,8,9,0)) > myDatax1 x2 1 1 6 2 2 5 3 3 67 4 4 8 5 5 9 6 6 0增加一列为两者的和 > myData$sum<-myData$x1myData$x2 > myDatax1 x2 sum 1 1 6 …

创建electron,解决包清理的问题,解决镜像源卡住下载时间长

我的电脑用户名是Anyphasy,我的node.js安装在D:\developp\nodejss18.18.0 使用npm config get prefix查看node.js安装路径 npm config get prefix 创建electron 创建package.json文件,它里面记载了你的electron版本,项目描述,以及启动命令等信息 npm init -y 先查看你自己的…

OpenCV直方图计算

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV实现直方图均衡 下一篇 :OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 cv::split 将图像划分…

羊大师分析,羊奶相伴五一畅享自然时光

羊大师分析&#xff0c;羊奶相伴五一畅享自然时光 羊奶相伴&#xff0c;五一畅享自然时光&#xff0c;这是一句富有诗意和生活气息的语句。羊奶&#xff0c;作为一种营养丰富、易于消化的饮品&#xff0c;不仅为人们提供了优质的蛋白质、矿物质和维生素&#xff0c;还因其独特…

Android之Fragment简介和使用实例(1)

动态添加Fragment 上面我们已经通过XML方式成功将fragment嵌入到Activity中(这种嵌入方式我们称为静态添加)&#xff0c;但这种添加方式依然不够灵活.于是Android提供了另一种更加灵活的添加方式&#xff0c;也是我们日常开发中用的最多的一种添加方式----动态添加。 动态添加…

ASM字节码操作库---入门环境搭建

文章目录 概述环境配置demo尝鲜源码地址 概述 ASM是一个操作字节码的类库&#xff0c;提到字节码&#xff0c;很多人想到的首先是JAVA字节码。其实Kotlin,Groovy等语言也会生成字节码&#xff0c;并且和Java的字节码一样&#xff0c;都能被虚拟机识别执行&#xff0c;这就意味…

MATLAB无法识别汉字的问题解决方案

试了100种方法&#xff0c;都是不行。 期待的结果 应该是这样式的&#xff1a; feature(‘locale’) ans 包含以下字段的 struct: ctype: zh_CN.UTF-8collate: zh_CN.UTF-8time: zh_CN.UTF-8numeric: en_US_POSIX.UTF-8monetary: zh_CN.UTF-8messages: zh_CN.UTF-8encoding…

行为学学习记忆实验和抗焦虑实验两款硬件

安徽耀坤XWX-BM八臂迷宫实验&#xff08;Eight-arm Maze Test&#xff0c;RMT&#xff09;由八个完全相同的臂组成&#xff0c;这些臂从一个中央平台放射出来&#xff0c;所以又被称为放射迷宫。其基本方式是&#xff1a;训练动物受食物的驱使对迷宫的各臂进行探究&#xff0c;…

golang反射

go反射 反射基本介绍应用场景基本使用结构体注意练习最佳实践遍历结构体的方法&#xff0c;调用接头体的方法&#xff0c;获取结构体的标签 反射 基本介绍 反射可以在运行时动态获取变量的各种信息&#xff0c;比如变量的类型(type)、类别(kind)如果是结构体变量&#xff0c;…
最新文章