vCenter Server 要先執行相容性檢查,之後才會允許移轉執行中或已暫停的虛擬機器,從而確保虛擬機器與目標主機相容。
vMotion 會在基礎 ESXi 系統之間傳輸虛擬機器的執行狀態。即時移轉需要目標主機的處理器在移轉後向虛擬機器提供的指令,與來源主機的處理器在移轉前提供的指令相同。來源處理器與目標處理器之間的時脈速度、快取大小以及核心數目可能不同。但是,處理器必須屬於同一廠商類別 (AMD 或 Intel) 才能實現 vMotion 相容。
已暫停的虛擬機器的移轉,還需要虛擬機器能夠使用對等的指令在目標主機上恢復執行。
起始運用 vMotion 進行移轉或已暫停虛擬機器的移轉時,移轉虛擬機器精靈會檢查目的地主機的相容性。如果相容性問題阻止移轉,則精靈會顯示錯誤訊息。
在開啟虛擬機器電源時,已確定對作業系統以及虛擬機器中執行的應用程式可用的 CPU 指令集。此 CPU 功能集依據以下項目:
- 主機 CPU 系列和型號
- BIOS 中可能停用 CPU 功能的設定
- 主機上執行的 ESXi 版本
- 虛擬機器的相容性設定
- 虛擬機器的客體作業系統
若要改善具有不同 CPU 功能集的主機之間的 CPU 相容性,可將主機置於增強型 vMotion 相容性 (EVC) 叢集中來隱藏虛擬機器中的一些主機 CPU 功能。如需有關 EVC 的詳細資訊,請參閱關於增強型 vMotion 相容性。
您可將自訂 CPU 相容性遮罩套用於虛擬機器,從而對虛擬機器隱藏主機 CPU 功能,但不建議採用這種做法。VMware 正與 CPU 和硬體廠商共同合作,致力於在最大範圍的處理器之間維持 vMotion 相容性。如需其他資訊,請在 VMware 知識庫中搜尋《vMotion 和 CPU 相容性常見問題集》。
vSphere vMotion和 CPU 相容性案例
不使用 EVC 時,不管虛擬機器本身能否存取這些功能,只要 vCenter Server 的 CPU 相容性檢查探索到主機的使用者層級功能之間存在任何不相符情況都會阻止移轉。僅當虛擬機器存取目標主機未提供的功能時,主機的核心層級功能之間存在不符情況才會阻止移轉。
vCenter Server 的 CPU 相容性檢查可比較來源主機上可用的 CPU 功能、虛擬機器可存取的功能子集以及目標主機上可用的功能。
使用者層級功能是非權限指令,由虛擬機器應用程式使用。這些指令包含 SSE3、SSSE3、SSE4.1、SSE4.2 和 AES。因為這些是略過虛擬層的使用者層級指令,如果有不符,在運用 vMotion 進行移轉後可能導致應用程式不穩定。
核心層級功能為權限指令,由虛擬機器作業系統使用。這些指令包含 AMD No eXecute (NX) 和 Intel eXecute Disable (XD) 安全性功能。
嘗試透過 vMotion 移轉虛擬機器時,會出現以下其中一種狀況:
- 目的地主機功能集與虛擬機器的 CPU 功能集相符。滿足 CPU 相容性需求,運用 vMotion 進行的移轉會繼續執行。
- 虛擬機器的 CPU 功能集包含目的地主機不支援的功能。不滿足 CPU 相容性需求,運用 vMotion 進行的移轉無法繼續執行。
備註: EVC 透過為叢集中正在執行的所有虛擬機器提供「基準」功能集來克服此類相容性問題。此基準功能集會向虛擬機器隱藏叢集主機 CPU 之間的差異。
- 目的地主機支援虛擬機器的功能集,以及虛擬機器功能集中沒有的其他使用者層級功能 (例如 SSE4.1)。不滿足 CPU 相容性需求,運用 vMotion 進行的移轉無法繼續執行。
備註: 對於 EVC 叢集中主機之間的移轉,會略過此類不相容情況。
- 目的地主機支援虛擬機器的功能集,以及虛擬機器功能集中沒有的其他核心層級功能 (例如 NX 或 XD)。滿足 CPU 相容性需求,運用 vMotion 進行的移轉會繼續執行。當虛擬機器保持電源開啟狀態時,就會保留其 CPU 功能集,從而可以自由移轉回原始主機。但是,如果虛擬機器重新開機,則會從新主機中獲取新的功能集。如果嘗試將虛擬機器重新移轉回原始主機,則此程序可能會造成 vMotion 不相容。
CPU 系列和功能集與 vSphere vMotion 的相容性
處理器分為多個系列。指定系列的處理器通常具有相似的功能集。
處理器廠商會定義處理器系列。可以透過比較處理器的型號、步進層級和已延伸功能來區分同一系列中的不同處理器版本。處理器廠商有時會在同一處理器系列中引入顯著的架構變更,例如 SSSE3 和 SSE4.1 指示以及 NX/XD CPU 安全性功能。
依預設,vCenter Server將應用程式可使用功能的不符視為不相容,這是為了確保虛擬機器在運用 vMotion 進行移轉後的穩定性。
伺服器硬體的 CPU 規格通常表示 CPU 是否包含影響 vMotion 相容性的功能。
如需識別 Intel 處理器及其功能的詳細資訊,請參閱 《應用程式說明 485: Intel® 處理器識別和 CPUID 指示》(可從 Intel 獲得)。如需識別 AMD 處理器及其功能的詳細資訊,請參閱 CPUID Specification (可從 AMD 獲得)。
CPU 相容性遮罩和 vSphere vMotion
透過 CPU 相容性遮罩,可以自訂虛擬機器可見的 CPU 功能。
vCenter Server會將可供虛擬機器使用的 CPU 功能與目的地主機的 CPU 功能進行比較,判定是否允許運用 vMotion 進行移轉。
若要確保運用 vMotion 進行移轉後虛擬機器的穩定性,VMware 會為 CPU 相容性遮罩設定預設值。
CPU 相容性或客體作業系統功能 (例如 NX/XD) 之間存在選項時,VMware 將提供設定個別虛擬機器的核取方塊選項。您可透過虛擬機器 CPU 的 [進階設定] 選項存取組態選項。為了更有效地控制 CPU 功能的可見度,您可以在位元層級編輯虛擬機器的 CPU 相容性遮罩。
並非在所有情況下,CPU 相容性遮罩都能阻止虛擬機器存取已遮罩的 CPU 功能。在某些情況下,即使對客體作業系統隱藏了已遮罩的功能,應用程式也可以偵測和使用這些功能。此外,在任何主機上,如果應用程式使用不支援的 CPU 功能偵測方法,而非使用 CPUID 指令,則這些應用程式可以存取已遮罩的功能。如果應用程式使用不支援的 CPU 偵測方法,則執行這些應用程式的虛擬機器可能會在移轉之後遇到穩定性問題。
增強型 vMotion 相容性
可以使用增強型 vMotion 相容性 (EVC) 功能來協助確保叢集中主機的 vMotion 相容性。即使主機上的實際 CPU 不同,EVC 也會確保叢集中的所有主機均向虛擬機器提供相同的 CPU 功能集。使用 EVC 可防止因 CPU 不相容而導致運用 vMotion 進行的移轉失敗。
在 [叢集設定] 對話方塊中設定 EVC。設定 EVC 時,請將叢集中的所有主機處理器設定為提供基準處理器的功能集。這種基準功能集稱為 EVC 模式。EVC 利用 AMD-V Extended Migration 技術 (適用於 AMD 主機) 和 Intel FlexMigration 技術 (適用於 Intel 主機) 來遮罩處理器功能,使該主機可提供舊版處理器的功能集。EVC 模式必須等同於叢集中具有最小功能集之主機的功能集,或為主機功能集的子集。
EVC 僅遮罩影響 vMotion 相容性的處理器功能。啟用 EVC 不會防止虛擬機器利用更快的處理器速度、更多的 CPU 核心或較新主機上可能可用的硬體虛擬化支援。
EVC 並非在所有情況下都能防止虛擬機器存取隱藏的 CPU 功能。若未遵循 CPU 廠商建議的功能偵測方式,應用程式可能會在 EVC 環境中發生未預期的行為。未遵循 CPU 廠商建議且行為異常的應用程式無法支援 VMware EVC。如需有關建立行為良好之應用程式的詳細資訊,請在 VMware 知識庫中搜尋文章 Detecting and Using New Features in CPUs (偵測和使用 CPU 中的新功能)。
從 vSphere 7.0 Update 1 開始,您可以利用虛擬共用圖形加速 (vSGA) 的 EVC 功能。vSGA 允許多個虛擬機器共用安裝在 ESXi 主機上的 GPU,並利用 3D 圖形加速功能。
主機的增強型 vMotion 相容性需求
若要改善具有不同 CPU 功能集的主機之間的 CPU 相容性,可將主機置於增強型 vMotion 相容性 (EVC) 叢集中來隱藏虛擬機器中的一些主機 CPU 功能。EVC 叢集中的主機和新增到現有 EVC 叢集中的主機必須符合 EVC 需求。
關閉叢集中執行於主機上且功能集大於您要啟用的 EVC 模式的所有虛擬機器的電源。您也可以將這些虛擬機器移轉出叢集。
叢集中的所有主機都必須符合下列需求:
需求 |
說明 |
---|---|
支援的 ESXi版本 |
ESXi6.7 或更新版本。 |
vCenter Server |
主機必須連線到 vCenter Server系統。 |
CPU |
單一廠商,AMD 或 Intel。 |
已啟用進階 CPU 功能 |
如果以下 CPU 功能可用,則在 BIOS 中啟用這些功能:
備註:
依預設,硬體廠商有時會停用 BIOS 中的特定 CPU 功能。因為 EVC 相容性檢查偵測到缺少某些需要針對特定 CPU 提供的功能,因此啟用 EVC 時可能會出現問題。如果無法在具有相容處理器的系統上啟用 EVC,請確保在 BIOS 中啟用所有功能。 |
要啟用的 EVC 模式所支援的 CPU |
若要檢查 EVC 是否支援特定處理器或伺服器型號,請參閱《VMware 相容性指南》,網址為:http://www.vmware.com/resources/compatibility/search.php。 |
針對 vMotion 進行設定 |
如何在現有叢集上啟用 vSphere EVC
瞭解如何在現有叢集上啟用 vSphere 增強型 vMotion 相容性 (EVC),以確保叢集中主機之間的 vMotion CPU 相容性。其他叢集功能 (如 vSphere DRS 和 vSphere HA) 與 EVC 完全相容。
必要條件
程序
如何變更叢集的 vSphere EVC 模式
瞭解如何設定vSphere EVC,以確保叢集中主機之間的虛擬機器移轉不會因為 CPU 功能不相容而失敗。
有多種 EVC 方法可用於確保 CPU 相容性:
如果叢集中的所有主機均與較新的 EVC CPU 或圖形 (vSGA) 模式相容,則可以變更現有 EVC 叢集的 EVC CPU 或圖形 (vSGA) 模式。
可以為沒有啟用 EVC 的叢集啟用 EVC。
可以提高 EVC 模式來公開更多 CPU 功能。
可以降低 EVC 模式來隱藏 CPU 功能並提高相容性。
必要條件
確認叢集中所有主機都配有要啟用之 EVC 模式所支援的 CPU。如需支援 CPU 的清單,請參閱知識庫文章知識庫 1003212。
確認叢集中所有主機都已連線並已在 vCenter Server 上登錄。叢集不能包含已中斷連線的主機。
虛擬機器必須處於以下電源狀態,具體取決於您是提高還是降低 EVC 模式。
EVC 模式
虛擬機器電源動作
將 EVC 模式提高到具有更多功能的 CPU 基準。
執行中的虛擬機器可以保持電源開啟狀態。虛擬機器只有在關閉電源後再重新開啟電源時,才能使用新的 EVC 模式功能。必須完整執行重新啟動電源作業。重新啟動客體作業系統或暫停虛擬機器後再恢復是不夠的。
提示:透過將 vmx.reboot.powerCycle 虛擬機器參數設定為 TRUE,可將虛擬機器設定為在客體作業系統重新開機時重新開啟電源。重新開啟虛擬機器電源後,將移除此組態參數。若要編輯虛擬機器組態設定,可以使用 VMware Host Client。請參閱vSphere 單一主機管理 - VMware Host Client指南中的〈在 VMware Host Client 中編輯組態檔參數〉主題。如需如何使用 VMware PowerCLI 為一組虛擬機器設定此參數的相關資訊,請參閱 VMware vSphere 部落格文章。
將 EVC 模式降低至具有更少功能的 CPU 基準。
如果虛擬機器已開啟電源,且執行的 EVC 模式高於您計劃啟用的模式,請關閉虛擬機器電源。
備註:為 EVC 叢集中的虛擬機器建立快照時,請注意以下使用案例:
- 如果在 EVC 降級之前為正在執行的虛擬機器建立快照,則在 EVC 降級後嘗試還原到該快照將失敗,並且虛擬機器將處於暫停狀態。
- 如果在 EVC 升級之前為虛擬機器建立快照,則可以在 EVC 升級之前或之後還原到該快照。
若要確認虛擬機器的 EVC 模式,請參閱如何判定虛擬機器的 EVC 模式。
程序
如何判定虛擬機器的 EVC 模式
虛擬機器的 EVC 模式決定了主機必須具有的 CPU 和圖形功能,以便虛擬機器移轉至該主機並開啟電源。虛擬機器的 EVC 模式與您針對虛擬機器執行所在叢集設定的 EVC 模式無關。
當虛擬機器開啟電源時,會決定虛擬機器的 EVC 模式。開啟電源時,虛擬機器也會決定其執行所在叢集的 EVC 模式。如果提高正在執行的虛擬機器或整個 EVC 叢集的 EVC 模式,則虛擬機器只有在關閉電源後再重新開啟電源時,才會變更其 EVC 模式。這意味著,虛擬機器只有在關閉電源後再重新開啟電源時,才會使用由新 EVC 模式公開的任何 CPU 功能。
例如,建立 EVC 叢集以包含使用 Intel 處理器的主機,並且將 EVC 模式設定為 Intel “Merom” Generation (Xeon Core 2)。當您開啟此叢集中虛擬機器的電源時,它會在 Intel Merom Generation (Xeon Core 2) EVC 模式下執行。如果將該叢集的 EVC 模式提高到 Intel “Penryn” Generation (Xeon 45 nm Core 2),虛擬機器仍會保持較低的 “Merom” Generation (Xeon Core 2) EVC 模式。若要使用更高 EVC 模式的功能集,例如 SSE4.1,虛擬機器必須關閉電源後再重新開啟電源。
程序
vMotion 移轉和具有不採用 3DNow! 的 AMD 處理器的 ESXi 主機
如果 vSphere 叢集中的主機具有不同代別的 AMD 處理器,有些處理器採用 3DNow! 指令集,有些不採用指令集,則您無法在主機之間成功移轉虛擬機器。您必須使用 EVC 模式或 CPU 相容性遮罩來隱藏指令。
新一代 AMD 處理器不包含 3DNow! 處理器指令。vCenter ServerAMD Opteron Gen. 3 (不支援 3DNow!)EVC 模式將遮罩來自虛擬機器的 3DNow! 指令。您可以將此 EVC 模式套用於僅包含 AMD Opteron Generation 3 主機的 EVC 叢集。套用此模式可使這些叢集能保持與不具有 3DNow! 指令的 AMD Opteron 主機間的 vMotion相容性。包含 AMD Opteron Generation 1 或 AMD Opteron Generation 2 主機的叢集,無法與不具有 3DNow! 指令的主機 vMotion 相容。
必要條件
請確保叢集僅包含使用 AMD Opteron Generation 3 或更新處理器的主機。
程序
- ♦ 為 EVC 叢集啟用AMD Opteron Gen. 3 (不支援 3DNow!)EVC 模式。
根據建立叢集還是在現有叢集上啟用 EVC 模式,以及現有叢集是否包含已開啟電源的虛擬機器,啟用 EVC 模式的步驟可能會有所不同。
選項 說明 建立叢集 在 [新增叢集] 精靈中,為 AMD 主機啟用 EVC 並選取 AMD Opteron Gen. 3 (不支援 3DNow!) EVC 模式。 編輯不含已開啟電源之虛擬機器的叢集 在 [叢集設定] 對話方塊中,編輯 VMware EVC 設定並選取AMD Opteron Gen. 3 (不支援 3DNow!) EVC 模式。 編輯包含已開啟電源的虛擬機器的叢集 當叢集中存在已開啟電源的虛擬機器時,則無法啟用AMD Opteron Gen. 3 (不支援 3DNow!)EVC 模式。 - 關閉叢集中正在執行的所有虛擬機器的電源,或者使用 vMotion 將其移轉出叢集。
使用 vMotion 將虛擬機器從叢集中移轉出,可允許您將關閉虛擬機器電源延緩到一個更加方便的時間。
- 在 [叢集設定] 對話方塊中,編輯 VMware EVC 設定並選取AMD Opteron Gen. 3 (不支援 3DNow!) EVC 模式。
- 如果已將虛擬機器從叢集中移轉出,請關閉這些虛擬機器的電源並將它們移轉回叢集中。
- 開啟虛擬機器電源。
- 關閉叢集中正在執行的所有虛擬機器的電源,或者使用 vMotion 將其移轉出叢集。
結果
您現在可以將配備 AMD 處理器 (不含 3DNow! 指令) 的主機新增到叢集中,還可以保留叢集中新主機與現有主機之間的 vMotion 相容性。
如何檢視 EVC 叢集的特性功能詳細資料
由 EVC 叢集公開的功能集對應於特定處理器類型的功能集。處理器功能集由一組功能旗標進行說明,您可以使用 CPUID 指令檢查這組旗標。
您可以檢視目前由 EVC 叢集中的主機公開的 CPUID 功能旗標。
程序
結果
該 VMware EVC 面板會顯示 EVC 為此叢集中的主機強制執行的 CPUID 功能旗標。如需 CPUID 功能旗標的相關資訊,請參閱 Intel 和 AMD 網站。