Hyper-V Host無預警重新開機後,部份Virtual Machine在清單中消失

Hyper-V Host無預警重新開機後,部份Virtual Machine在清單中消失

這狀況其實是我遇到的第二次

第一次遇到是在客戶端,User堅稱他是正常重新開機,且有將虛擬機器先行關機的情況下發生的

(兩次發生都是在單機的Hyper-V Host,並非Cluster的環境)

當時的直覺,應該是可以透過像微軟MVP蘇老大哥所分享的一篇文章如何手動復原Hyper-V的虛擬機器設定 Part 1

試著將虛擬機器設定還原回去,在確認步驟無誤、ACLS也正確的建立了關聯

但是在清單中還是沒出現(如下圖)

黃框處是我為虛擬機器定義的名稱【TPAD2】,而紅框處則是XML關聯

00025

我檢查了一下ACLS的權限,也確認【 B85F6D79-F9E2-4B45-B02B-FA044751EF1F】它是有權限對XML進行存取

當然,其他像是vhd…等等也是如此

00026

因為第一次發生是在客戶端的環境,那是一個線上環境,沒有太多時間可以做測試

所以最後就是直接用新增虛擬機器的方式將VHD掛載回去,再將IP Address重設就可以恢復原樣

 

但是,如果那次所遺失的是DC就不能用這招吧?

於是…我只能說我很幸運,這次發生是在我的測試機XD~

(如上圖所示,TPAD2,我裡面唯一的一台DC…)

根據上次的經驗,我從Event Log可以看到一個很關鍵的Log

(請到【事件檢視器】→【應用程式及服務紀錄檔】→【Microsoft】→【Hyper-V-VMMS】→【Admin】)

00033

其實這個訊息,我在第一次去客戶端也有看到這個訊息,時間緊迫我也沒辦法多想

這次,就來個正解吧

接著,打開有問題的XML設定檔,就會發現裡面真的是有錯誤的

00027

接著,我們來比對一下,這個有錯誤的檔案跟正常的檔案到底差在哪裡

可以發現到,<Memory>的區段少了很多東西,像是Dynamic Memory的部份都不見了

00028

我手動把它給加回去,就像下圖一樣,變的兩個好像都一樣了ㄟXD

00034

接著存檔,確認一下XML是否沒有錯誤訊息

00029

此時,清單中還是不會出現哦~

要把【Hyper-V 虛擬機器管理】重新啟動才會出現

00035

噹噹~管理清單它出現了~

00030

接著,趕緊來確認一下設定檔有沒有遺失,確認一下是不是可以在不需要變更網路卡設定的情況下直接可上線

00037

這樣就完成了,但是並不是每一個都是發生在<Memory>區段的

因為,我這次發生了三台機器都是如此,三台VM所發生的區段都不一樣

這部是我的NLB主機,在<Memory>區段裡,多了一個有點詭異的<element_name type="string">Memory</element_name>

將他刪除之後就可以了

00038

 

另一部是我的SCSM2012,這比較特殊,因為它是在文件的最開頭的SCSI控制器的部份消失了

00039

這個就需要比對一下XML中的那個裝置

00041

接著,先把正常的XML複製過來,將遺失的SCSI控制器區段全部複製過來

再來,將剛剛上圖所複製的SCSI控制器Instance ID,貼到下圖紅框處

再來,因為黃框處本來是另一部VM的GUID,請將他修改,像我是改第二串的數值,改成9999

00042

再來一樣是重新啟動【Hyper-V 虛擬機器管理】的服務,就可以看到虛擬機器回來了,也可正常啟動