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

简介:

1. 错误描述

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

2. 原因分析

查看这台虚拟服务器的摘要信息,对比datastore上其他可用的虚拟机,发现损坏的服务器上确实缺少一个vmdk磁盘文件,但是可以看见一个50G的xxx-flat.vmdk文件;而正常的服务器只有xxx.vmdk,没有xxx-flat.vmdk,关机之后两个文件都存在,而且真实的磁盘容量从vmdk转移到了xxx-flat.vmdk
虚拟主机在运行的时候,实际在使用的是xxx-flat.vmdk,然而xxx.vmdk是可以同时被删除的,才导致了问题。
这里需要说明,虚拟机的每个磁盘驱动器都包含了一对.vmdk文件。一个是文本文件,包含了关于虚拟硬盘的描述数据;另外一个是磁盘的实际内容。例如,一个名为examplevm的虚拟机连接有一个硬盘。这个磁盘由如下两个文件构成:一个小于 1KB 的examplevm.vmdk描述文件和一个10GB大小的examplevm- flat.vmdk平面(数据)文件,该文件包含虚拟机的实际数据,而这些数据又是以二进制的形式存放在物理磁盘上,examplevm.vmdk描述文件就是描述这种映射关系的。
另外:

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工具的使用。

3. 解决办法

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

~ # find / -name "新建虚拟机-flat.vmdk"
/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机/新建虚拟机-flat.vmdk
~ # ls -l /vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机/新建虚拟机-flat.vmdk
-rw-------    1 root     root     53687091200 Apr 16 09:13 /vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机/新建虚拟机-flat.vmdk

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

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

~ # cd  /vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机/
/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机_1 # mv 新建虚拟机-flat.vmdk tmp_新建虚拟机-flat.vmdk
/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机 # ls -la
drwxr-xr-x    1 root     root          1680 Apr 21 05:47 .
drwxr-xr-t    1 root     root          2660 Apr 18 03:16 ..
-rw-r--r--    1 root     root        102076 Apr 18 10:05 vmware.log
-rw-------    1 root     root      96468992 Apr 18 05:43 vmx-新建虚拟机-578288005-1.vswp
-rw-------    1 root     root     2147483648 Apr 18 05:43 新建虚拟机-2277f985.vswp
-rw-------    1 root     root     53687091200 Apr 21 05:47 新建虚拟机-flat.vmdk
-rw-------    1 root     root          8684 Apr 21 05:47 新建虚拟机.nvram
-rw-------    1 root     root           503 Apr 18 05:44 新建虚拟机.vmdk
-rw-r--r--    1 root     root             0 Apr 16 09:13 新建虚拟机.vmsd
-rwxr-xr--    1 root     root          3690 Apr 18 05:43 新建虚拟机.vmx
-rw-------    1 root     root             0 Apr 18 05:43 新建虚拟机.vmx.lck
-rwxr-xr--    1 root     root          3690 Apr 18 05:43 新建虚拟机.vmx~

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

/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机 # vmkfstools -c 53687091200 -a lsilogic 新建虚拟机.vmdk
Create: 100% done.
/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机 # ls -la *vmdk
-rw-------    1 root     root     53687091200 Apr 21 05:49 新建虚拟机-flat.vmdk
-rw-------    1 root     root           503 Apr 18 05:44 新建虚拟机.vmdk

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

/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虚拟机 # mv tmp_新建虚拟机-flat.vmdk 新建虚拟机-flat.vmdk

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

5. 总结

  • 相比重新创建一个同名虚拟机,然后mv原来的xxx-flat.vmdk硬盘文件到新的虚拟机,更节省时间;此外也无需再次配置网卡地址。
  • xxx.vmdk本身是一个不到1k的文本文件,通过vi编辑查看可知真正存放数据的是xxx-flat.vmdk磁盘文件,所以只要这个文件还存在,就可以恢复。
目录
相关文章
|
3月前
|
SQL 存储 数据挖掘
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
虚拟机数据恢复环境: 某品牌R710服务器+MD3200存储,上层是ESXI虚拟机和虚拟机文件,虚拟机中存放有SQL Server数据库。 虚拟机故障: 机房非正常断电导致虚拟机无法启动。服务器管理员检查后发现虚拟机配置文件丢失,所幸xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。服务器管理员在尝试恢复虚拟机的过程中,将原虚拟机内的xxx-flat.vmdk删除后新建了一个虚拟机,并分配了精简模式的虚拟机磁盘和快照数据盘,但原虚拟机内的数据并没有恢复。
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
|
23天前
【嵌入式】虚拟机未能将管道连接到虚拟机: 系统找不到指定的文件
【嵌入式】虚拟机未能将管道连接到虚拟机: 系统找不到指定的文件
|
2月前
|
存储 Linux KVM
|
3月前
|
Linux
将Linux虚拟机导出为OVF文件
将Linux虚拟机导出为OVF文件
38 1
|
8月前
|
虚拟化
怎么备份VMware虚拟磁盘文件或移植到其他虚拟机
怎么备份VMware虚拟磁盘文件或移植到其他虚拟机
70 0
|
3月前
|
存储 运维 虚拟化
【服务器数据恢复】Hyper-V虚拟机文件丢失的数据恢复案例
Windows Server操作系统服务器,部署Hyper-V虚拟化环境,虚拟机的硬盘文件和配置文件存放在某品牌MD3200存储中,MD3200存储中有一组由4块硬盘组成的raid5阵列,存放虚拟机的数据文件;另外还有一块硬盘存放虚拟机数据文件的备份。
【服务器数据恢复】Hyper-V虚拟机文件丢失的数据恢复案例
|
9月前
|
Ubuntu 虚拟化 Windows
将虚拟机dmesg日志内容通过串口输出到windows下文件中
将虚拟机dmesg日志内容通过串口输出到windows下文件中
155 0
|
4月前
|
数据挖掘 数据库 虚拟化
服务器数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
服务器数据恢复环境: 某品牌720服务器搭配该品牌某型号RAID卡,使用4块STAT硬盘组建了一组RAID10阵列。服务器上部署XenServer虚拟化平台,系统盘 +数据盘两个虚拟机磁盘。虚拟机上安装的是Windows Server操作系统,作为Web服务器使用,网站使用的是SQLServer数据库。 服务器故障: 服务器意外断电导致XenServer中一台VPS(XenServer虚拟机)不可用,虚拟磁盘文件丢失。
服务器数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
|
6月前
|
虚拟化
VMware vSphere Client中虚拟机“Disc Found”解决方法
VMware vSphere Client中虚拟机“Disc Found”解决方法
|
7月前
|
存储 网络安全 虚拟化
Proxmox VE导入ESXI格式OVA、VMDK虚拟机文件
按照正常步骤建好虚拟机,之后删除掉该虚拟机的虚拟硬盘。本例中虚拟机VM ID为103,通过qm importdisk 进行导入挂载。具体导入位置,根据虚拟机存储情况进行确定,本示例为local-lvm。使用SCP工具,将OPNsense_22.7.4_ufs-disk1.vmdk上传到系统的root目录下。需要使用的文件为:OPNsense_22.7.4_ufs-disk1.vmdk。导入成功后,就能看到该硬盘,在该硬盘上点编辑,添加即可。