在生產環境中運行微軟Hyper-V的大多數組織都認為動態遷移是一個非常關鍵的功能。動態遷移失敗可能帶來毀滅性的結果,而一些配置錯誤可能導致動態遷移的失敗。了解導致Hyper-V動態遷移失敗的常見因素能夠將問題扼殺在搖籃里。
沒有足夠的資源 Hyper-V不能進行動態遷移
導致動態遷移失敗的最常見的問題之一同樣也是最容易糾正的。為了將虛擬機從一臺主機動態遷移至另一臺主機,目標主機必須具有足夠的物理資源來承載該虛擬機,比如足夠的物理內存。如果目標主機沒有足夠多空閑的物理內存(或者其他物理硬件資源),那么動態遷移將以失敗而告終。
問題的解決辦法很簡單。管理員將虛擬機遷移到其他具有足夠硬件資源的主機或者關閉目標主機上優先級較低的虛擬機,騰出空間和資源。
處理器不兼容將導致遷移失敗
微軟Hyper-V不需要集群節點使用完全相同的硬件。然而, Hyper-V集群中的每臺主機服務器必須具有類似的處理器用于動態遷移。意思是你需要確保所有的物理主機處理器出自相同系列。換句話說,你不能夠將虛擬機從一臺配置了Intel處理器的物理主機遷移至配置了AMD處理器的物理主機之上。
有時使用類似的CPU型號還不足以滿足動態遷移的條件。例如,幾周前我決定將配置6核AMD處理器的服務器替換為8核AMD處理器的新服務器。原本計劃將這些新的服務器添加到現有的Hyper-V集群中,將VM從舊服務器動態遷移到新服務器,然后將這些舊服務器下線。不幸的是,由于處理器指令集差距過大導致了動態遷移的失敗。
通過將VM配置為使用處理器兼容模式,我成功地完成了動態遷移。
處理器兼容模式存在缺陷
處理器兼容模式看起來像是解決了處理器不兼容的問題,但存在缺陷:只能夠在同一系列的處理器之間進行動態遷移。你不能夠在Intel和AMD處理器的主機之間進行動態遷移。然而,你能夠使用這一模式在同一廠商或者同一系列的不同時期的CPU之間進行動態遷移。
這一模式截斷了CPUID指令這樣就掩蓋了實際的CPU識別過程。反過來說,采用這一模式禁用了一些能夠提升處理器性能的特性。如果你在使用VM進行多媒體或者高性能計算,或者說VM在執行CPU密集型加密運算時,微軟建議不要使用處理器兼容模式。
為了啟用處理器兼容模式,你必須關閉VM然后重啟。在某些情況下,你可以將已關閉的VM遷移至目標主機上。事實上,在這種情況下處理器兼容模式就不是必須的了。
Hyper-V版本不匹配,iSCSI不兼容以及網絡連接緩慢
Windows Server版本組成,只要是每個Windows Server的副本屬于同一個發行周期即可。例如,你不能在一個故障轉移群集中混合Windows Server 2008以及Windows Server 2008 R2,因為Windows Server 2008中的Hyper-V不支持動態遷移。
ISCSI不兼容同樣可能會妨礙動態遷移的完成。在Windows Server 2012發行以前,動態遷移需要使用集群共享卷(CSV)。CSV能夠通過FC或者iSCSI進行連接。如果你選擇使用iSCSI,那么目標主機必須符合iSCSI-3規范,因為動態遷移要用到iSCSI-3規范中的持久性保留特性。
最后,只有網絡連接帶寬不低于1Gb時才能支持動態遷移。雖然從理論上說在帶寬更低的物理鏈路上也可能能夠完成動態遷移,但是微軟并不支持這樣做。
很多不同的因素都可能導致虛擬機動態遷移的失敗。學習并了解了可能會遇到的導致虛擬機動態遷移失敗的這些最為常見的問題,那么你最好能夠避免這些問題的出現。