Hyper-V Host無預警重新開機後,部份Virtual Machine在清單中消失
這狀況其實是我遇到的第二次
第一次遇到是在客戶端,User堅稱他是正常重新開機,且有將虛擬機器先行關機的情況下發生的
(兩次發生都是在單機的Hyper-V Host,並非Cluster的環境)
當時的直覺,應該是可以透過像微軟MVP蘇老大哥所分享的一篇文章如何手動復原Hyper-V的虛擬機器設定 Part 1
試著將虛擬機器設定還原回去,在確認步驟無誤、ACLS也正確的建立了關聯
但是在清單中還是沒出現(如下圖)
黃框處是我為虛擬機器定義的名稱【TPAD2】,而紅框處則是XML關聯
我檢查了一下ACLS的權限,也確認【 B85F6D79-F9E2-4B45-B02B-FA044751EF1F】它是有權限對XML進行存取
當然,其他像是vhd…等等也是如此
因為第一次發生是在客戶端的環境,那是一個線上環境,沒有太多時間可以做測試
所以最後就是直接用新增虛擬機器的方式將VHD掛載回去,再將IP Address重設就可以恢復原樣
但是,如果那次所遺失的是DC就不能用這招吧?
於是…我只能說我很幸運,這次發生是在我的測試機XD~
(如上圖所示,TPAD2,我裡面唯一的一台DC…)
根據上次的經驗,我從Event Log可以看到一個很關鍵的Log
(請到【事件檢視器】→【應用程式及服務紀錄檔】→【Microsoft】→【Hyper-V-VMMS】→【Admin】)
其實這個訊息,我在第一次去客戶端也有看到這個訊息,時間緊迫我也沒辦法多想
這次,就來個正解吧
接著,打開有問題的XML設定檔,就會發現裡面真的是有錯誤的
接著,我們來比對一下,這個有錯誤的檔案跟正常的檔案到底差在哪裡
可以發現到,<Memory>的區段少了很多東西,像是Dynamic Memory的部份都不見了
我手動把它給加回去,就像下圖一樣,變的兩個好像都一樣了ㄟXD
接著存檔,確認一下XML是否沒有錯誤訊息
此時,清單中還是不會出現哦~
要把【Hyper-V 虛擬機器管理】重新啟動才會出現
噹噹~管理清單它出現了~
接著,趕緊來確認一下設定檔有沒有遺失,確認一下是不是可以在不需要變更網路卡設定的情況下直接可上線
這樣就完成了,但是並不是每一個都是發生在<Memory>區段的
因為,我這次發生了三台機器都是如此,三台VM所發生的區段都不一樣
這部是我的NLB主機,在<Memory>區段裡,多了一個有點詭異的<element_name type="string">Memory</element_name>
將他刪除之後就可以了
另一部是我的SCSM2012,這比較特殊,因為它是在文件的最開頭的SCSI控制器的部份消失了
這個就需要比對一下XML中的那個裝置
接著,先把正常的XML複製過來,將遺失的SCSI控制器區段全部複製過來
再來,將剛剛上圖所複製的SCSI控制器Instance ID,貼到下圖紅框處
再來,因為黃框處本來是另一部VM的GUID,請將他修改,像我是改第二串的數值,改成9999
再來一樣是重新啟動【Hyper-V 虛擬機器管理】的服務,就可以看到虛擬機器回來了,也可正常啟動