方案一、检查文件是否错误 SSH登陆之后找到VMDK文件的目录,执行以下命令 要检查虚拟磁盘的完整性,可以使用以下检查磁盘错误命令:请使用-x和check选项(需要替换数据存储和磁盘名称为您自己的): vmkfstools -x check /vmfs/volumes/my_datastore/my_disk.vmdk 如果未检测到错误,VMKFSTOOLS将返回“磁盘无错误”。如果确实有问题,可以使用下面的命令修复损坏的虚拟磁盘: vmkfstools -x repair /vmfs/volumes/my_datastore/my_disk.vmdk 命令修复磁盘 在使用VMKFSTOOLS进行更改后,vSphere Client可能不会立即更新。您可以从客户端使用刷新操作。 方案二、当有FLAT文件,从FLAT恢复完整VMDK文件 迁移或复制时,必须同时拷贝.vmdk描述符文件和对应的-flat.vmdk文件,但有时候只拷贝了真实数据文件-flat.vmdk的时候需要修改 1.用SSH登录Esxi,(esxi5.5默认是不开启的,登录vsphere找到相应Esxi主机开启) 2.登录Esxi后,找到已损坏虚拟机所在目录(vmfs/volumes/后边用ls查看,或者在数据存储目录里面找到路程径,复制一长串数字代码) 3.使用ls -al * - flat.vmdk查找所有vmdk文件及大小 如: -rw------- 1 root root 214748364800 Dec 11 12 :01 BI-flat.vmdk 4.用vmkfstools命令创建新磁盘文件 如:vmkfstools -c 214748364800 -a lsilogic -d thin temp.vmdk 注:文件大小和上边查出来的一致 5.使用mv命令重命名temp.vmdk文件 如:mv temp.vmdk BI.vmdk 注:新文件名和已损坏的flat文件名要一致 6.用vi文本编辑器编辑刚重命名的VMDK文件 #vi BI.vmdk #Disk DescriptorFile version=1 encoding="UTF-8" CID = fffffffe parentCID =ffffffff isNativeSnapshot="no" createType="vmfs" #Extent description RW 419430400 VMFS"temp-flat.vmdk"//此处将tempflat.vmdk改名为BI-flat.vmdk #The Disk Data Base #DDB ddb.adapterType ="Isilogic" ddb.geometry.cylinders = "26108" ddb.geometry.heads ="255 ddb.geometry.sectors = "63" ddb.longContentlD ="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地址)