通过flat.vmdk、delta.vmdk重建虚拟机
背景
环境:VMware Sphere 6.0下Windows Server 2012 R2虚拟机
某天在进行服务器运维时,将虚拟机关机后,重启提示报错,错误信息如下图所示
从报错信息看来,应该是某些文件缺失了,思来想去想到之前曾有一次进行空间清理过程中,不小心删除了部分文件,突然感觉世界一片黑暗,还好这个问题不止我碰到,通过度娘,我终于找到了解决办法,让我不用背负骂名,在此记录下整个服务器还原过程,帮助那些和我一样的兄弟们,也告诫自己以后不要手痒乱删了。
VM虚机服务器文件介绍
常见的文件说明可以查看我另一片文章:
VMWare虚拟机快照技术深入理解
此处我先介绍 flat.vmdk、delta.vmdk两个文件的作用。
flat.vmdk介绍
这是个默认的大型虚拟磁盘数据文件,创建于你添加虚拟硬盘驱动到虚拟机时,大小相当于你添加的磁盘大小,我的理解,就是你添加的硬盘。
delta.vmdk介绍
这是当虚拟机创建快照后,产生的虚拟磁盘数据,当创建快照后,原有的flat.vmdk是不在写入数据了,变成只读状态,后续都会往delta.vmdk写入数据,初始大小为16MB,后续会以16MB的速度进行增长。由于原始的磁盘大小是由flat.vmdk的大小,所以delta.vmdk的大小是不会超过flat.vmdk的。
由于上述文件都还在,这说明数据都是存在的,只是系统缺少了部分配置文件。
解决方案
解决步骤
-
根据flat.vmdk文件先将系统还原到快照前状态。
- 新建一个同等配置的虚拟机,但是在配置时不要添加硬盘。
- 通过ssh登录主机(需要在服务器管理页面开启ssh服务)。
- 通过指令『find / -name xxx.flat.vmdk』查找原有虚机安装位置,找到flat.vmdk文件,查看文件大小。
- .进入新建虚拟机的文件根目录下, 通过指令『vmkfstools -c 文件大小 -a lsilogic xxx-flat.vmdk』创建一个虚拟磁盘(注意大小必须和原有磁盘大小相同)
- 使用mv命令将原有主机的flat.vmdk复制到当前新主机路径下,替换掉我们创建的flat.vmdk文件。
- 进入虚拟机配置界面,将该新建磁盘添加到当前虚拟机配置中。
- 完成后启动虚拟机,即可完快照前系统的还原了。
-
根据delta-vmdk文件恢复快照
- 当系统起来后,我们先给当前系统执行一次快照。
- 使用mv指令将源delta.vmdk覆盖掉当前的delta.vmdk
- 之后我们还原快照即可还原到原有快照时的状态。
总结
经过如上配置即可完成虚拟机重建,虽然恢复完成时已经是凌晨1点了,但是还是很庆幸服务器能够恢复正常,通过此次的事件,也让我对VMware的机制、原理有了一定的了解了,也希望这篇文章能够帮助到其他朋友。