前兩天,同事下班誤關公司總電源,致使公司物理服務器斷電重啓。第二天,發現有一臺虛擬機變成了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、到此步,就可以開啓虛擬機電源了,你會發現已損壞的虛擬機又回來了,系統回來了、數據回了、就
連設置也回來了。