前两天,同事下班误关公司总电源,致使公司物理服务器断电重启。第二天,发现有一台虚拟机变成了unknown,进入虚拟机所在目录,发现配置文件全部丢失,只剩下两个*-flat.vmdk文件。虚拟机也未做快照,数据也未备份。当时的心理是奔溃的。
网上查找的方法是:新建虚拟机,使用已存在的虚拟磁盘。但是在使用已存在的虚拟磁盘时,发现无法识别仅存的两个VMDK文件(因仅存的两个VMDK文件被系统识别为File文件,而不是虚拟机磁盘文件)。
后来在VMWare官网找到一个方法,经测试已成功恢复虚拟机系统和数据。方法如下:
1、用SSH软件的方式登录EXSI (esxi5.5默认没有开启,需要登录服务器开启SSH服务);
2、登录到EXSI以后,进入已损坏虚拟机所在的目录;
3、使用ls -al *-flat.vmdk 查看所有VMDK文件及大小:
如:-rw------- 1 root root 214748364800 Dec 29 01:53 file-flat.vmdk
4、使用vmkfstools 命令来创建新磁盘文件:
如:vmkfstools -c 214748364800 -a lsilogic -d thin temp.vmdk
注意:此处的文件大小为上一步骤查出的已损坏的虚拟机的虚拟磁盘的大小。
5、使用mv命令重命名temp.vmdk文件:
如:mv temp.vmdk file.vmdk
注意:新的文件名应为已损坏的虚拟机的虚拟磁盘的flat文件一致。
6、用vi文本编辑器编辑刚重命名的VMDK文件:
#vi file.vmdk
# Disk DescriptorFile
version=1 encoding="UTF-8" CID=fffffffe parentCID=ffffffff isNativeSnapshot="no" createType="vmfs" # Extent description RW 419430400 VMFS "temp-flat.vmdk" #此处将temp-flat.vmdk改名为file-flat.vmdk # The Disk Data Base #DDB ddb.adapterType = "lsilogic" ddb.geometry.cylinders = "26108" ddb.geometry.heads = "255" ddb.geometry.sectors = "63" ddb.longContentID = "22dfff8e0162de5342e906b6fffffffe"ddb.thinProvisioned = "1" #将此行删除
ddb.uuid = "60 00 C2 93 53 6e 6f 36-a7 8d 90 97 90 0f 09 67"
ddb.virtualHWVersion = "10"7、新建一个与已损坏虚拟配置一样虚拟机(CPU核数、内存大小都一样,使用已存在的虚拟磁盘)。
8、到此步,就可以开启虚拟机电源了,你会发现已损坏的虚拟机又回来了,系统回来了、数据回了、就
连设置也回来了。
注意:请修改一下IP地址(如有必要)!