虛擬硬碟的 vmdk 描述檔不見了
虛擬機器的硬碟檔案可分成 .vmdk 的硬碟描述檔,以及真正存放資料的 -flat.vmdk 硬碟檔,當 -flat.vmdk 不見了,那就只能從備份如 vDP 來還原它,如果只是 .vmdk 描述檔不見了,但 *-flat.vmdk 還在,那還可以救得回來。
當 .vmdk 檔案不見了,VM 開機時在 Task 會出現 File .vmdk was not found 的錯誤訊息,如下圖:
看到這種錯誤訊息就令人大為緊張,趕快連線到 ESXi ,進到放置虛擬機的目錄中,用 ls -al 看看檔案發生什麼事了:
還好雖然 vmdk 描述檔不見了,但 *-flat.vmdk 實體硬碟檔還在,那就將 vmdk 描述檔重建回來:
一、先確認 xxxx-flat.vmdk 的容量大小:
#ls -al xxxx-flat.vmdk
二、抓 *.vmx 檔案來看,以確認虛擬硬碟 SCSI 控制器的規格,在這個例子中它的型號是 lsilogic:
#cat xxxx.vmx | grep virtualDev
三、利用 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 看檔案是否存在。
四、將建立好的 temp.vmdk 改名成相對應的名稱:
#mv temp.vmdk xxxx.vmdk
五、修改 xxxx.vmdk 描述檔:
#vi xxxx.vmdk
六、將原本的「”temp-flat.vmdk”」修改成對應的 *-flat.vmdk 名稱,並確認當初那顆不見了的原始虛擬硬碟格式設定是否為 thin provision,如果是則「ddb.thinProvisioned = “1’」這行保留,如果不是則整行刪除:
七、刪除 tmp-flat.vmdk:
#rm temp-flat.vmdk
十、確認一下虛擬硬碟檔是否一致,如果一致會出現 Disk chain is consistent 訊息:
#vmkfstools -e xxxx.vmdk
十一、這時就可以正常開機了
来源:oschina
链接:https://my.oschina.net/u/4316695/blog/4727232