服务器虚拟化数据恢复环境:
故障虚拟机是由物理机迁移到ESXI,迁移完成后做了一个快照。
故障虚拟机上运行的是一个sql server数据库,记录了近5年的数据。
ESXI上有二十多台虚拟机,EXSI连接一台HP EVA存储,所有的虚拟机(包括故障虚拟机)都放在这台EVA存储上。
服务器虚拟化故障&分析:
由于误操作不小心将3年前的快照还原了,即把虚拟机还原到3年前的状态,最近3年的数据都被删除了。
虚拟机还原快照意味着删除数据,释放底层的存储空间。为了不让这部分空间被重新利用,需要将连接这台存储的所有虚拟机都关机。如果有重要的虚拟机不能长时间关机,可以迁移到别的EXSI上。本案例刚好有一台虚拟机运行关键业务不能关机,只能做热迁移。由于vmware热迁移需要建立多个快照来完成,而这会给后期的恢复快照工作带来额外的困难。迁移完所有虚拟机后按照北亚数据恢复流程需要对底层的EVA存储做完整镜像,但是由于用户比较着急,而镜像整个存储时间太长,只能将EVA存储以只读的方式挂载到一台北亚备份服务器上以只读的方式恢复数据。
服务器虚拟化数据恢复过程:
Vmware的文件系统叫做Vmfs,所有的虚拟机都存放在这个文件系统中。Vmfs文件系统会默认将整个磁盘划分成1M的Block,分配给文件的最小单位就是一个Block。Vmfs文件系统中会有一片区域描述这些1M Block的使用情况,每1024个Block(也就是1GB)会用一个MAP来记录。这个MAP里面记录的1M Block在物理磁盘上不一定是连续的,但这个MAP所记录的所有1M Block一定是同一个文件的。换句话说:一个文件是由N多个MAP中的1024个Block组成的,即FileSize = N * MAP * 1024(Block)。
Vmware快照就是一个文件,还原快照就是删掉一个文件。在Vmfs文件系统中删除一个文件只会删掉文件的索引项,而不会删掉文件的实际数据以及指向数据的MAP。
1、提取整个vmfs文件系统中空闲的MAP。
2、空闲的MAP中找到一个符合快照文件头结构的MAP。
3、根据快照文件的结构提取快照文件剩下的碎片。
4、提取完快照文件后将快照文件和原vmdk合并生成新的vmdk,新的vmdk中包含了所有的数据。
5、挂载新的vmdk并解释里面的数据即可恢复还原快照之前的数据。