虚拟化数据恢复—重写文件系统导致Hyper-V虚拟机无法使用的数据恢复

虚拟化数据恢复环境:
一台服务器上部署的Hyper-V虚拟化平台,虚拟机的硬盘文件和配置文件放在一台某品牌MD3200存储中。该存储中有一组由4块硬盘组建的raid5磁盘阵列,还有一块大容量硬盘存放虚拟机数据文件的备份。

虚拟化故障:
MD3200存储中虚拟机数据文件丢失,导致Hyper-V服务瘫痪,虚拟机无法使用。

虚拟化故障分析:
1、检测MD3200存储是否存在物理故障,经过检测没有发现存储存在任何物理故障,硬盘均正常工作。
2、检查操作系统,未发现出错进程,排除因操作系统问题导致的数据丢失。
3、分析丢失数据硬盘的文件系统,文件系统打开正常,不符合病毒破坏的表现。使用多款杀毒软件检测无病毒。分析丢失数据硬盘的文件系统,发现文件系统的元文件创建时间(也就是文件系统的创建时间)与数据丢失的时间刚好一样。这种表现通常意味着文件系统被人为重写,即分区被格式化了。
4、检查系统日志,发现数据丢失时间之前以及数据丢失当天的系统日志已被清空,审核日志和服务日志却未清空。这种情况应该是人为操作,格式化分区的操作只记录在系统日志中,这与人为破坏的表现相符。
5、尝试恢复系统日志。分析硬盘底层数据,发现硬盘底层中需要恢复的系统日志已被新的日志记录覆盖,无法恢复。
6、分析操作系统中的所有分区。发现只有存储中两个分区的文件系统被重新写入文件系统。格式化两个分区需要两个独立的过程,这种针对性的操作基本上是人为的。

重现格式化操作:
1、通过在分区上“右键”,选择“格式化”按钮,可以格式化选中的分区。
2、在开始菜单“运行”中输入“cmd”命令进入到命令行模式,然后使用FORMAT命令,可以格式化指定分区。
3、创建一个bat文件,在文件中写入格式化的命令,然后运行bat文件可以格式化指定分区。
4、因为有两个独立的文件系统的数据丢失,故上述的流程可能被执行了多次。应该因人为操作导致。

虚拟化数据恢复方案:
根据前期的故障分析,北亚企安数据恢复工程师团队敲定数据恢复方案:
1、备份数据,对丢失数据的硬盘做全盘备份。
2、分析硬盘底层数据,重组RAID阵列。
3、分析重组的阵列,看能否找到原始文件索引项及对应的数据区。
4、核对查找到的文件索引项是否符合用户丢失的数据,并核对相应的数据区有无破坏。
5、将扫描到的文件索引项碎片拼接成一个完整的目录结构。
6、根据拼接好的目录结构去底层恢复对应的数据,并检查数据的正确性。
7、核对数据没问题后恢复所有数据。

虚拟化数据恢复方案实施:
1、将Dell M3200存储中所有的硬盘编号后取出,由硬件工程师检测硬盘是否存在物理故障。经过检测没有发现有硬盘存在物理故障。以只读方式将每块硬盘做扇区级全盘镜像。镜像完成后将所有磁盘按照编号还原到原存储中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
备份硬盘数据:

2、基于镜像文件分析所有硬盘上的底层数据。通过分析获取重组RAID5阵列的raid相关信息,如:条带大小,条带走向等。根据获取到的raid信息重组RAID。
重组RAID:

打开硬盘阵列:

3、分析硬盘底层数据,发现硬盘底层中还残留着许多原始文件系统的目录项及文件索引。经过核对发现这些文件索引指向的数据都是用户丢失的文件内容。北亚企安数据恢复工程师编写一个提取文件索引项的小程序,扫描整个硬盘中所有存在的文件索引项,提取所有文件的文件索引项。
4、分析所有扫描到的文件索引项,发现这些索引项都是不连续的,大多以16K或8K对齐的。正常情况下的文件索引项是连续的,大小为固定的1K,每个文件索引项对应一个文件或目录。而扫描出来的这些不连续且不完整的文件索引项无法正常索引到文件的内容。因此需要对扫描出来的文件索引项做加工处理。
在扫描出来的文件索引项中搜索” .VHD”,能找到一个” .VHD”的文件记录,然后将这段文件索引项提取出来。查看这段提取出来的文件索引项中是否有指向下一段文件索引项的记录或者是H20属性,如果有则根据文件索引项中的特征去匹配下一段文件索引项,如果没有则跳过这段文件索引项。
根据上述方法基本能查到大多数的文件索引项片段。而缺失的文件索引项片段则有可能被破坏了。可以考虑从备份盘中去查找缺失的文件索引项片段,因此可以搜索到大部分的文件索引项。
文件索引项截图:

5、根据上述方法尽可能找到所有的文件索引项,然后根据文件索引项的编号将其拼接成整个目录项结构。由于有部分文件索引项被破坏,只能找到大部分文件索引项,但这些文件索引项已经足以拼接成整个目录结构了。
扫描到的文件索引项碎片:

6、将拼接好的目录结构替换现有文件系统中的目录结构,使用工具修改部分校验值,再使用专业工具解释这个目录结构即可看到原有丢失的数据了。
解释出来的目录结构:

7、为了确定数据是否正确,将其中一个最新的VHD文件恢复出来,然后将其拷贝到一台支持附加VHD的服务器上,尝试附加此VHD,结果附加成功。检查VHD中最新的数据是否完整,检查完整后将所有数据恢复到一块硬盘中。
恢复出来的所有虚拟机数据文件:

8、在一台测试服务器上搭建Hyper-V的环境,将恢复出来的虚拟机文件连接到这台服务器。通过导入虚拟机的方式,将恢复出来的数据都迁移到新的Hyper-V环境中。然后让用户方验证所有虚拟机是否完整。
导入虚拟机:

9、在用户方验证所有虚拟机没问题后,将所有数据拷贝至用户方准备好的服务器中。通过导入的方式将虚拟机导入到用户方的Hyper-V环境中,但是在导入的过程中出现错误。

经过查找资料和分析,确定出错原因是导入的方法不正确,需要以下面的方式导入虚拟机。

重新导入后没有报错。

尝试启动所有虚拟机,所有虚拟机启动都没问题。

10、用户方对所有虚拟机中的数据进行检测后,确认恢复出来的数据完整有效,认可数据恢复结果。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值