VSAN数据恢复环境&故障:
VMware VSAN超融合架构,11台服务器节点。每台服务器节点上创建1个磁盘组,磁盘组包括1块PCIe固态硬盘(作为缓存盘)和8-10块SSD(作为数据盘),组成VSAN存储空间来存放虚拟机文件。启用了去重和压缩功能。
一台服务器节点上的一块PCIE缓存盘出现故障,导致VSAN逻辑架构问题。2台虚拟机磁盘组件出现问题,虚拟机无法正常使用。
VSAN数据恢复过程:
1、将VSAN的节点服务器上所有硬盘标记后拆出,经过硬件工程师的检测后没有发现硬盘存在硬件故障,可以正常读取。将所有硬盘以只读方式进行扇区级全盘镜像。镜像完成后将所有磁盘按照原样还原到原服务器中,后续的数据分析和数据恢复操作都基于镜像进行,避免对原始磁盘数据造成二次破坏。
2、由于VSAN版本更新以及开启了压缩重删,所以底层结构差异较大。这种情况下恢复数据的难点在于压缩和重删的算法。针对开启了压缩和重删的VSAN的数据恢复需要大量测试进行数据碰撞和大量代码测试其算法。
3、基于镜像文件扫描分析。根据底层记录的磁盘ID等信息,北亚企安数据恢复工程师整理记录节点、磁盘组、缓存盘、数据盘等信息和对应关系。
4、尝试在底层搜索&分析组件信息。信息被压缩导致无法分析。
5、VSAN集群开启压缩重删会导致底层数据结构发生很大变化。搭建相同版本的环境进行大量的测试进行数据碰撞来研究压缩重删的算法和存储结构。
6、由于不确定采用了何种压缩算法,所以北亚企安数据恢复工程师只能通过大量规律数据进行逆向推理,确定压缩算法后解压缩。
压缩块:
解压后:
7、通过大量数据测试,确定压缩位图位置、记录方式、位图索引块大小等。获取位图索引方式,从而解析重删位图。
8、VSAN中所有文件均以对象的方式存在,每个对象被分割为多个组件。北亚企安数据恢复工程师编写程序扫描所有组件信息。组件信息中记录了组件ID和该组件所属对象的对象ID等信息。根据组件中的runlist找到每个数据块和该块在组件的逻辑位置,北亚企安数据恢复工程师编写程序提取完整组件。
9、根据组件信息中的描述信息,将组件按照描述信息中记录的RAID级别和各个组件在对象中的逻辑位置进行组合,拼接出完整的对象(vmdk文件)。可能每个组件都会有部分数据留在缓存盘上,并没有写入到数据盘中,于是北亚企安数据恢复工程师编写程序将缓存盘上的数据刷新到对应的组件或对象中。
10、由于本案例中虚拟磁盘使用DFS分布式文件系统并且开启了重删,无法直接提取数据。新建DFS环境,将合并完成的虚拟磁盘挂在到该环境下。挂载后可直接访问数据。
11、用户方对恢复出来的数据进行检测后,确认恢复出来的数据完整有效,认可数据恢复结果。