• SeSparse数据恢复方案分步演示


    关于虚拟机快照文件被删除的恢复方式跳跃性较强,且没有名词解释,导致产生歧义。为了验证方案可行性,工程师特别对此类案例进行了案例还原,来分步演示虚拟化平台SeSparse数据恢复方法,具体数据恢复演示过程如下。

    1、搭建环境 在虚拟化平台创建虚拟机(父盘VMDK大于2T),为了后期导出进行观察,创建模式为精简。
    2、在新建的虚拟机内写入文件,便于观察快照索引与父盘数据之间的联系。
    3、创建快照文件,再写入部分数据,以备验证修改后快照内数据存储方式与索引之间的联系。
    4、虚拟机部分操作完毕,关机准备对原VMDK文件和快照文件进行分析。(因为数据存储内有虚拟机,无法卸载数据存储,进行了强制断电)
    5、使用恢复软件打开硬盘,准备导出VMDK文件和快照文件。结果发现原VMDK导出后变为0KB,快照文件则顺利导出,实验步骤中断。
    6、根据现象进行猜想,可能是数据量太小,没有及时写入VMDK。使用快照文件进行了恢复,原意是要对VMDK文件进行写入,扩大数据量。结果发现恢复后新增一个VMDK文件,且新写入的数据都存储于此文件中。(结论:根据快照进行恢复后,新增数据并未写入原VMDK文件,而是以快照断点为起始,做了一个新的快照文件,之前的快照文件被删除)
    7、进行了删除快照操作(通过虚拟化平台正常删除而不是直接删除快照文件),发现快照和原VMDK进行了合并,数据区内容被写入VMDK盘内。
    8、重复1~4发现,在关机状态下创建快照,只是简单生成了1M大小文件。在开机后,快照文件变为23M,说明创建快照文件索引应该是在虚拟机开启状态下才会进行。
    9、使用恢复软件提取VMDK文件发现仍然无法提取成功(提示Unable to open file),改用北亚虚拟化软件by_vmfs提取程序提出VMDK文件。
    10、开始分析:
    (1)根据头部信息,分别提取 high_idx 和 low_idx 、全局位图区、全局索引区、数据区
    (2)快照文件预分配除数据区之外的所有区域
    (3)低地址区域索引最大只能索引相当于原VMDK文件大小的数据区。
    11、根据文档中给出的索引规则和实际情况,证明了快照文件恢复无法依赖父盘数据,最多能遍历父盘数据块和索引得知哪些块发生了变化。原因如下:
    高位区跳转低位区必须依赖父盘块号;
    低位区指针跳回高位区亦不可行(单向指针);
    根据高位区域指针跳转父盘块号不可行,父盘块号标明了高位区域的指针位置(单向指针)


    12、如图,根据文档中的数据推导算法,第一步必须知道父盘块号,才能找到它在快照文件中的块对应位置。快照文件被删除后,唯一能直接找到的只有快照头。
    根据父盘块号和高位区域的索引,可以得到低位区域的所有编号(也就是低位索引的相对位置)。根据特征,可以通过扫描的方式找到全局位图区、低位索引区、全局索引区。由于1G块数较少,可以遍历拼接(多种内部相对位置关系)。但是数据区无法找到,无法确定父盘中的某一块在更新后写入了什么文件,无法根据文件特征进行数据块排序。根据实验结果来看,写入的数据在文件内是连续的(单进程写入),不过对拼接基本无作用。

    虚拟化数据恢复结论:快照文件删除后,依据现有算法无法恢复快照文件内的数据区部分(文档内也只有恢复索引的方案,不过索引恢复可以直接根据其特征进行搜索排序,与地址转换无关)。小于2T快照恢复方案在处理数据区这部分也是一笔带过的,是块号、文件内偏移还是其他方式不得而知。下步方案只能参考VMFSSparse快照恢复程序中关于二级索引跳转数据区时,如何判断哪些数据块是属于本文件/数据区1G块排序方式了。

  • 相关阅读:
    关于IE高级设置里取消“禁用脚本调试”勾选无效的解决方式
    使用NetworkStream收取数据不全问题讨论,列举目前方式,求最佳解决方式
    EntityFramework学习笔记2ORM及EntityFramework简介
    Asp.Net MVC4.0 官方教程 入门指南之一 入门介绍
    EntityFramework学习笔记4实体数据模型及增、删、改操作
    EntityFramework学习笔记3VS2010安装EF5.0
    如果页面引用了外部JS代码,会被IE缓存的解决方法
    EntityFramework学习笔记1写在学习之前
    【专题】概率dp求期望
    金华网赛G(最大费用最大流)&hdu4406
  • 原文地址:https://www.cnblogs.com/frombyte/p/13730561.html
Copyright © 2020-2023  润新知