當快照存在時,請勿編輯虛擬硬碟

本文將介紹當快照存在時,擅自編輯虛擬硬碟可能會發生的狀況以及該如何排除。

問題描述

利用假日打算把公司 VM 的系統磁碟的空間擴大以利安裝 Service Pack,筆者使用編輯虛擬硬碟精靈來擴充虛擬硬碟(如下圖)。

image

很順利的虛擬硬碟空間擴充成功,接著重新啟動 VM 卻發生下圖的錯誤訊息,意思是說父虛擬硬碟與差異磁碟的虛擬大小不相符,因此沒辦法開機成功,因為筆者原本的虛擬硬碟為 30 GB 的固定大小,透過編輯虛擬硬碟精靈擴充為 50 GB,在這之前該 VM 有使用快照功能產生差異磁碟,差異磁碟中紀錄的虛擬硬碟大小為原本的 30 GB,兩者並不相符導致無法順利啟動,這個時候筆者利用 Hyper-V 管理員把快照刪除,虛擬硬碟會開始執行合併的動作,當看到合併虛擬硬碟檔的成功完成,先別急著高興,剛剛被筆者擴充虛擬硬碟並沒辦法與快照資料檔(*.avhd)合併。因此若您想要嘗試把 VM 所使用的虛擬硬碟只到原本的 VHD 檔,依然會無法正常啟動 VM。

image

還好在網路上有找到 大熊-IT歷程 的這篇文章,剛好跟筆者的狀況是一樣的,為了避免日子久了筆者自己又忘了這次的教訓,因此先把相關解決步驟記錄下來,若您看到這篇文章可能代表您也遇到相同的問題,希望本文也對您有所幫助。接下來筆者就要告訴您該如何解決上述的問題。

實作步驟

首先您必須在 MSDN Archive 的網站上下載 VHD Tool,該工具是個公用程式只有一個*.exe的執行檔,您必須在命令列提示字元中執行該公用程式,並利用 /repair 參數來進行修復(如下圖 1),其中第二個參數為基底 VHD 檔案,第三個參數則是快照資料檔 AVHD,當您看到 Status 為 Complete 代表已經修復完畢。

image

接著重新啟動 VM,看來已經可以順利開機。

image

接著關閉 VM 讓合併作業執行完畢之後就可以再次擴充虛擬硬碟了。

image

結論

當您對 VM 進行快照時,千萬不要嘗試編輯虛擬硬碟,否則可能會發生不可預期的錯誤以及資料的遺失。

參考資料

- [心得筆記]誤把Hyper-V SNAPSHOT硬碟Resize後,檔案連結毀損救回辦法

- VHD Tool 2.0 Final

-編輯虛擬硬碟精靈

-