虚拟机数据恢复环境&故障:
由一台物理服务器迁移到ESXI上的虚拟机,虚拟机迁移完成后做了一个快照,该ESXI上面一共运行了数十台虚拟机。某天工作人员不小心将快照进行了还原,虚拟机内的数据还原到了数年前刚迁移过来时的状态,迁移过来后的这几年更新的数据全部被删除。
虚拟机还原快照与删除数据在本质上是一样的,虚拟机删除快照后会将底层存储空间相应的空间释放,然后重用这部分释放出来的空间存储新的数据。所以,如果一台虚拟机不小心还原了快照,应该尽快将还原快照的虚拟机所在存储上的所有虚拟机关机或迁移到其他ESXI上。
要恢复虚拟机数据,我们需要先了解vmfs的底层结构,vmfs是wmware自有文件系统,在这个文件系统下所有的硬盘被默认划分为若干个区域,这些区域最小单位被称为“block”,每个block的大小为1MB,每1024个block组成一个MAP,这些信息都记录在文件系统的某一个特定区域内。每个map中的block在物理硬盘上的存储顺序是不连续的,但每个map中的所有block一定是属于一个文件的,即FileSize=N×MAP×1024(Block)。
虚拟机数据恢复过程:
vmfs中如果某文件被删除,在底层数据中只是删除了该文件的索引项,实际数据内容和指向数据map并没有被删除。
1、使用北亚企安自研的数据提取工具将整个文件系统里面的所有空闲map提取出来。
2、在提取出来的map中找到符合快照文件头结构的map。
3、根据文件结构提取剩下的文件碎片。
4、将所有数据提取完成后,结合原有的vmdk合成一个新的vmdk。
5、挂载新合成的vmdk文件,解释该vmdk文件里面的数据即可。