虚拟化技术原理是将硬件虚拟化供不同的虚拟机使用,一台物理机上可以有多台虚拟机。人为误操作或者物理机故障会导致上层虚拟机不可用,甚至虚拟机里的重要数据丢失。下面给大家分享一个vmware虚拟化误操作还原快照的数据恢复案例。
虚拟化数据恢复环境:
一台由物理机迁移到EXSI上面的虚拟机,迁移完成后做了一个快照。该虚拟机上运行SQL Server数据库,记录了几年的数据。
EXSI虚拟化平台上一共有数十台虚拟机,EXSI连接了一台EVA存储,所有的虚拟机(包括故障虚拟机)都放在EVA存储上。
虚拟化故障:
由于工作人员的误操作,不小心将几年前迁移完成后做的快照给还原了。也就是说虚拟机还原到几年前做快照时候的状态了,近几年的数据都没了。
虚拟化故障分析:
还原快照等同于删除数据,底层存储空间会被释放一部分。为了不让EVA存储上这部分释放的空间被重用,需要将连接这台存储的所有虚拟机都关掉。如果有重要的虚拟机不能长时间宕机,需要将这些重要的虚拟机迁移到其他的EXSI上。刚好本案例中有一台虚拟机不能关机,只能做热迁移。vmware的热迁移需要建立多个快照来完成,这给后期的恢复工作带来很多额外的阻碍。完成虚拟机的迁移后,将EVA存储以只读的方式挂载到一台服务器上。将EVA存储中所有数据完整镜像到这台服务器上,后续的数据分析和数据恢复都基于这台服务器上的镜像数据进行。
Vmware的文件系统叫Vmfs,所有虚拟机都存放在这个文件系统中。Vmfs将整个磁盘分成1M的Block,分配给文件的{BANNED}最佳小单位为一个Block。Vmfs中会有一片区域描述这些1M Block的使用情况,而每1024个Block(也就是1GB)会用一个MAP来记录。这个MAP里面记录的1M Block在物理磁盘上不一定是连续的。
但这个MAP所记录的所有1M Block一定是同一个文件的。一个文件是由多个MAP中的1024个Block组成的,即文件大小 = MAP数量 * 1024(Block)。
Vmware的快照其实就是一个文件,还原快照也就是删掉一个文件。而在Vmfs中,删除一个文件只会删掉文件的索引项,而不会删掉文件的实际数据以及指向数据的MAP。
虚拟化数据恢复过程:
1、提取vmfs中空闲的MAP,在空闲的MAP中找到一个符合快照文件头结构的MAP。
2、根据快照文件的结构,提取快照文件剩下的碎片。
3、快照文件提取完成后,将快照文件和原vmdk合并生成新的vmdk。
4、新的vmdk中包含了所有的数据,挂载新的vmdk&使用北亚企安自主开发程序解释vmdk中的数据即可。
虚拟化恢复数据验证:
由于做过虚拟机的热迁移,所以有几个快照文件碎片被重用了,恢复的数据中{BANNED}最佳新的数据不可用。由于SQL Server数据库每天都做备份,虽然{BANNED}最佳新的数据不可用,但是备份的数据可用,用户方接受恢复结果。