天天看点

误删vSphere虚拟机.vmdk文件的恢复

在vsphere上,一次重启虚拟服务器时出现启动不了,提示找不到vmdk虚拟磁盘文件:

误删vSphere虚拟机.vmdk文件的恢复

查看这台虚拟服务器的摘要信息,对比datastore上其他可用的虚拟机,发现损坏的服务器上确实缺少一个vmdk磁盘文件,但是可以看见一个50g的<code>xxx-flat.vmdk</code>文件;而正常的服务器只有<code>xxx.vmdk</code>,没有<code>xxx-flat.vmdk</code>,关机之后两个文件都存在,而且真实的磁盘容量从vmdk转移到了<code>xxx-flat.vmdk</code>。

虚拟主机在运行的时候,实际在使用的是<code>xxx-flat.vmdk</code>,然而<code>xxx.vmdk</code>是可以同时被删除的,才导致了问题。

这里需要说明,虚拟机的每个磁盘驱动器都包含了一对<code>.vmdk</code>文件。一个是文本文件,包含了关于虚拟硬盘的描述数据;另外一个是磁盘的实际内容。例如,一个名为<code>examplevm</code>的虚拟机连接有一个硬盘。这个磁盘由如下两个文件构成:一个小于 1kb 的<code>examplevm.vmdk</code>描述文件和一个10gb大小的<code>examplevm- flat.vmdk</code>平面(数据)文件,该文件包含虚拟机的实际数据,而这些数据又是以二进制的形式存放在物理磁盘上,<code>examplevm.vmdk</code>描述文件就是描述这种映射关系的。

另外:

a note for esx-users: do not use datastorebrowser to identify vmdks or download them for editiing. the datastorebrowser does not display vmdks correctly. it usually hides *-flat.vmdks and *-delta.vmdks.

to-do:

后续为 vmware esxi 5 的磁盘专门记录一篇文章,说明“置备空间”以及vmfstools工具的使用。

(1) 用ssh登录vsphere主机,查找xxx-flat.vmdk文件所在的位置以及目录,并记录文件的大小

注意,esxi5默认没有开启ssh,需要通过vsphere client登录服务器,【配置】【安全配置文件】【服务-属性】手动开启。

(2) 重命名xxx-flat.vmdk文件

(3) 在虚拟机目录下创建xxx.vmdk文件,大小要和xxx-flat.vmdk一样大

(4) 将原来的(tmp_)xxx-flat.vmdk覆盖掉刚创建的同样大小的xxx-flat.vmdk

重命名操作很快完成,启动虚拟机既可以恢复。

相比重新创建一个同名虚拟机,然后mv原来的xxx-flat.vmdk硬盘文件到新的虚拟机,更节省时间;此外也无需再次配置网卡地址。

xxx.vmdk本身是一个不到1k的文本文件,通过vi编辑查看可知真正存放数据的是xxx-flat.vmdk磁盘文件,所以只要这个文件还存在,就可以恢复。

继续阅读