虛擬硬碟的 vmdk 描述檔不見了ide
虛擬機器的硬碟檔案可分紅 .vmdk 的硬碟描述檔,以及真正存放資料的 -flat.vmdk 硬碟檔,當 -flat.vmdk 不見了,那就只能從備份如 vDP 來還原它,若是隻是 .vmdk 描述檔不見了,但 *-flat.vmdk 還在,那還能夠救得回來。工具
當 .vmdk 檔案不見了,VM 開機時在 Task 會出現 File .vmdk was not found 的錯誤訊息,以下圖:3d
看到這種錯誤訊息就使人大為緊張,趕快連線到 ESXi ,進到放置虛擬機的目錄中,用 ls -al 看看檔案發生什麼事了:blog
還好雖然 vmdk 描述檔不見了,但 *-flat.vmdk 實體硬碟檔還在,那就將 vmdk 描述檔重建回來:it
1、先確認 xxxx-flat.vmdk 的容量大小:io
#ls -al xxxx-flat.vmdkclass
2、抓 *.vmx 檔案來看,以確認虛擬硬碟 SCSI 控制器的規格,在這個例子中它的型號是 lsilogic:
#cat xxxx.vmx | grep virtualDevgrep
3、利用 vmkfstools 工具創建 vmdk 描述檔:
#vmkfstools -c 1234567890 -a lsilogic -d thin temp.vmdk
上述 -c「123456789」要填入真實的 xxxx-flat.vmdk 的容量大小,-a「lsilogic」要填入從 *.vmx 查出來的 SCSI 控制器型號,而 -d thin 則是指先創建 thin provision 的虛擬硬碟,暫時的虛擬硬碟檔名為 temp.vmdk,創建好後再用 ls -al 看檔案是否存在。im
4、將創建好的 temp.vmdk 更名成相對應的名稱:
#mv temp.vmdk xxxx.vmdkd3
5、修改 xxxx.vmdk 描述檔:
#vi xxxx.vmdk
6、將本來的「」temp-flat.vmdk」」修改爲對應的 *-flat.vmdk 名稱,並確認當初那顆不見了的原始虛擬硬碟格式設定是否為 thin provision,若是是則「ddb.thinProvisioned = 「1’」這行保留,若是不是則整行刪除:
7、刪除 tmp-flat.vmdk:
#rm temp-flat.vmdk
10、確認一下虛擬硬碟檔是否一致,若是一致會出現 Disk chain is consistent 訊息:
#vmkfstools -e xxxx.vmdk
11、這時就能夠正常開機了