VMware EVC 模式的運作原理:完整概述

如果您熟悉 vMotion 特點,您可能還記得,建議的做法是在所有 ESXi 伺服器上使用相同的處理器,以便進行虛擬機器的即時遷移。如果您希望在叢集中使用不同處理器型號的伺服器,最好部署同一代的處理器。此外,嚴格的需求是處理器必須由同一家供應商製造,例如 Intel 或 AMD。否則,在使用 vMotion 時很可能會出現錯誤。

VMware 在設計 vSphere 軟體時,已考量到生產環境中可能發生的各種情況,包括透過新增配備不同處理器的伺服器來擴展叢集。這是一種常見的情境——假設您擁有一個由 3 年前購入的 5 台 ESXi 節點組成的叢集,現在需要再新增兩台節點,以運行更多虛擬機器來滿足業務需求。 您三年前購買的處理器目前已停產,市場上也已不再販售;您只能購買最新系列的處理器。無需擔心——您可以使用 高可用性叢集 在 vSphere 中,可新增配備不同處理器的節點,並利用 vMotion 在配備不同處理器的主機之間執行虛擬機器即時遷移。這得益於 VMware vSphere 中可為叢集啟用的"增強型 vMotion 特點"(EVC)。

NAKIVO for VMware vSphere 備份

NAKIVO for VMware vSphere 備份

為 VMware vSphere 虛擬機器提供全面資料保護及快速還原選項。支援本地、異地及雲端的備份目標。具備防勒索軟體功能。

VMware EVC 模式的工作原理

每一代新處理器除了包含前一代處理器已有的指令集外,還會新增指令集。這些新特點通常能提升執行中應用程式的效能或安全性。例如,SkyLake 世代的處理器就新增了一組指令集(SGX) 與 Haswell 世代的處理器相比。讓我們來看看這兩代處理器的指令集,並深入探討其細節。

Haswell (2013) instruction sets:

x86-64、MMX、AES-NI、CLMUL、FMA3、SSE、SSE2、SSE3、SSSE3、SSE4、SSE4.1、SSE4.2、AVX、AVX2、TXT、VT-x、VT-d。 TSX 由於存在一個錯誤,Haswell 處理器(Haswell-EX 除外)已透過微程式停用相關指令。

SkyLake (2017) instruction sets:

x86-64、MMX、AES-NI、CLMUL、FMA3、SSE、SSE2、SSE3、SSSE3、SSE4、SSE4.1、SSE4.2、AVX、AVX2、TXT、 TSX, SGX, VT-x, VT-d。

這意味著,若您在 EVC 設定中選擇 Haswell 相容性層級,則配備 Skylake 處理器的伺服器上必須停用(更精確地說,是遮罩)SGX 指令集,從而使所有處理器皆使用相同的指令集。如此一來,您將獲得一個適合透過 vMotion 進行虛擬機器遷移的同質化環境。 這種統一的 vMotion 相容性,是透過對所有運行於非同質化處理器 ESXi 主機上的虛擬機器,強制實施相同的 CPUID 指令基準來實現的。CPUID 可視為 CPU 的 API。

一方面,啟用 Haswell EVC 模式時,SGX 指令集的優勢將不復存在;但另一方面,若您將配備較新處理器的主機加入叢集,現有叢集的效能並不會因此降低。 若將配備舊版處理器的 ESXi 主機加入現有叢集,您可能會在特定情況下察覺效能下降。

註: SGX(軟體防護擴充功能)讓您能夠組織受保護的程式碼與資料區塊(亦稱為"安全區"),以確保運作中的應用程式能獲得高層級的資料保護,抵禦駭客攻擊。開發人員若在應用程式中使用 SGX 指令,即使攻擊者的應用程式擁有更高的權限,也能保護應用程式免受未經授權的存取或修改。

註: TSX(交易同步擴展)可確保將大部分執行中的任務移交至硬體層級(CPU 本身),以在處理器核心之間分配資源。若處理器不支援 TSX 指令,此分配作業將由作業系統和應用程式在軟體層級執行。若您的 Haswell 處理器透過微程式停用了 TSX 指令集,您可能需要將 EVC 模式設定為較舊的(Ivy Bridge)層級。

一般而言,必須關閉並重新啟動正在運行的虛擬機器,才能套用變更後的 EVC 模式設定。若您使用 vCenter 4.1 或更新版本,運行於配備最舊型處理器的 ESXi 主機上的虛擬機器可能無法關機(您可以讓它們保持運行狀態)。 在此情況下,EVC 模式必須與該最舊處理器的世代相符。若虛擬機器運行於配備具備較新 CPU 特點的處理器的 ESXi 主機上,則必須先關機,才能在整個環境中啟用 EVC 模式 叢集. 當 ESXi 主機從叢集中移除時,它將在 EVC 模式停用的狀態下繼續運作。

VMware vSphere 版本 / EVC 的 CPU 相容性

所需的 EVC 模式取決於處理器型號及版本 vCenter Server. 最新版本的 vCenter Server 所提供的 EVC 模式支援最新一代的處理器。若您的伺服器搭載最新一代的處理器,建議您使用最新版本的 vCenter。在下表中,您可以查看哪些 Intel 處理器世代與 vCenter 版本的組合受到支援,以便為您的環境確定 EVC 叢集基準。

EVC modes supported in different vCenter Server releases

最合適的 EVC 模式取決於叢集內 ESXi 伺服器中舊款處理器的型號。雖然技術上可以選擇比舊款處理器世代更舊(等級更低)的 EVC 模式,但通常沒有理由進行此類設定。 較舊版本的 ESXi 和 vSphere 雖支援新處理器,但 EVC 的最高基準仍維持在該 vSphere 版本發布時已投入運作、且當時被視為最新款的舊款處理器層級。

當您變更 EVC 模式的層級時,應將正在運行的虛擬機器關機並重新開機,才能將設定套用至這些虛擬機器;僅重新啟動虛擬機器並不足夠。

VMware 相容性指南

您可以在 VMware 網站上查看您的處理器是否相容,以及您的 vCenter 伺服器可支援的最高 EVC 模式。若要檢查相容性,請開啟 VMware 相容性指南, 選擇 CPU series 在下拉式選單中(即您要尋找什麼),在 產品發布版本在清單中選擇您的 ESXi 版本,位於 CPU 系列 清單包含 Ctrl 按鈕,並選取安裝在 ESXi 主機上的處理器(點擊滑鼠左鍵)。選取完畢後,請點擊 CPU/EVC Matrix 按鈕以查看適用於您 ESXi 伺服器的可用 EVC 模式表。在下圖截圖所示的範例中,已選取 ESXi 6.5(由 vCenter 6.5 管理)、Intel Xeon E3-1500-v5、Xeon E5-4600-v3 以及 Xeon Platinum 8100 處理器。所有選取的處理器所支援的最高 EVC 模式為 英特爾 Haswell 世代.

Checking the best suitable EVC mode in the VMware Compatibility Guide

需求

關於 vMotion 要讓系統在啟用 EVC 模式後正常運作,必須滿足以下需求:

  • 所有 ESXi 主機的處理器必須僅限 Intel 或僅限 AMD。
  • 必須在 ESXi 主機的 UEFI/BIOS 中啟用處理器虛擬化特點,例如 Intel VT-x 或 AMD-V。
  • ESXi 主機必須由同一台 vCenter Server 進行管理。
  • 必須將 ESXi 主機設定為使用 vMotion。

如何啟用並設定 EVC

在熟悉相關理論後,讓我們實際複習 EVC 模式的設定。您可能需要關閉位於 ESXi 主機上的虛擬機器,且該主機的 EVC 層級必須已降級。請確保 UEFI/BIOS 中未停用任何處理器特點,以避免可能出現的問題。

在瀏覽器的網址列中輸入 vCenter Server 的 IP 位址,開啟 VMware vSphere Web Client。前往 vCenter > Hosts and clusters 並選取每個 ESXi 主機以確認 CPU(中央處理器)的配置。在本範例中,我們以兩台已加入叢集並由 vCenter Server 5.5 管理、且執行 ESXi 5.5 的主機為例。如下方螢幕截圖所示,第一台 ESXi 主機的處理器型號為 Intel Xeon E3110 而安裝在第二台 ESXi 主機上的處理器是 Intel Xeon X3430.

Checking the processor models on ESXi hosts before enabling the EVC mode

如果 ESXi 主機已加入叢集,請選擇您的叢集(temp-cluster (在我們的範例中),請按一下 Manage 標籤頁,然後開啟 Settings 選單頁籤,選擇 Configuration > VMware EVC 然後點擊 Edit 按鈕。

How to enable the EVC mode in vCenter

現在,在 vCenter 中選取 EVC 模式之前,請在您的網頁瀏覽器中開啟一個新分頁,並開啟 VMware 相容性指南 如本篇部落格文章上方的示意所示。在目前的範例中,我們應該選擇 ESXi 5.5, Intel Xeon 31xx 系列 以及 Intel Xeon 34xx 系列. 點擊 CPU/EVC 對照表 按鈕,您可以在螢幕截圖中看到 英特爾 Penryn 世代 應在 EVC 模式設定中選取。

Checking the compatibility matrix with VMware Compatibility Guide before enabling the EVC mode

返回瀏覽器中開啟 vSphere Web Client 的分頁,並開啟該叢集的 EVC 模式設定。點擊 Enable EVC for Intel Hosts. 在 VMware EVC 模式的下拉式選單中,我們應選擇 英特爾 Penryn 世代. 在視窗底部,您應該會看到 Validation succeeded相容性 區段。現在您可以點擊 好的 以儲存 EVC 模式設定。

Enabling the EVC mode and passing the compatibility validation

之後,在 VMware EVC 區段中,該資訊 已啟用 VMware EVC 會顯示。請點擊 Current CPUID Details 擴充該章節,加入關於寄存器和遮罩值的詳細說明。

VMware EVC mode is enabled for the entire cluster in vCenter

在建立新叢集時,亦可啟用 EVC 模式;VMware 將此做法列為建議的實務操作。在建立新叢集時啟用 EVC 模式,可避免您遇到與關閉及遷移叢集中已啟動的虛擬機器相關的問題(如您所知,通常必須先關閉虛擬機器並重新啟動,才能套用新的 EVC 設定)。

CPUID 遮罩

除了適用於整個叢集中所有虛擬機器和 ESXi 主機的全域 EVC 模式外,vCenter Server 還允許您為自訂虛擬機器手動設定 CPUID 標誌。vCenter 會將虛擬機器設定的 CPUID 參數與目標 ESXi 主機上可用的 CPUID 參數進行比對。若這些參數相同,則允許透過 vMotion 進行虛擬機器遷移。 CPUID 遮罩特點比 EVC 模式特點更早出現。

若要為虛擬機器設定 CPUID 遮罩,請執行以下操作:

選取所需的虛擬機器,右鍵點擊該虛擬機器並選擇 Edit Settings. 在開啟的 編輯設定 視窗,開啟 Virtual Hardware > CPU, 選擇 CPUID mask,然後點擊 Advanced.

Editing the CPUID flags for a particular VM

CPU 識別碼 在視窗中,選取所需的寄存器字串,並點擊該值以在位元層級編輯遮罩。按下 Legend 按此按鈕查看用於設定遮罩的每個字元所代表的含義。

Editing the CPU Identification Mask in the VM settings

Caution! 在熟悉 VMware 知識庫或 VMware 技術支援說明之前,請勿編輯相容性遮罩。手動編輯 CPU 相容性遮罩可能會導致虛擬機器配置不被支援。例如,Windows 虛擬機器可能會出現藍屏死機 (BSOD) 的情況。

在 PowerCLI 中檢查 EVC 模式的設定

您可以在 VMware PowerCLI 中使用以下指令,檢查整個叢集以及自訂虛擬機器 (VM) 的 EVC 模式設定:

Get-VM | Select Name,HardwareVersion,

@{Name='VM_EVC_Mode';Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},

@{Name='Cluster_Name';Expression={$_.VMHost.Parent}},

@{Name='Cluster_EVC_Mode';Expression={$_.VMHost.Parent.EVCMode}} | ft

Checking the EVC mode configuration by using PowerCLI

您也可以執行以下指令,查看叢集中所有主機所支援的最高 EVC 等級:

Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode

Checking the maximum level of the EVC mode

每台虛擬機的 EVC 模式

上述的 EVC 模式屬於叢集層級的選項。VMware vSphere 6.7 提供了設定"每台虛擬機器"EVC 模式的功能,這對於跨不同叢集或 vCenter Server 遷移虛擬機器相當實用,並能提供更細緻的控制。 每台虛擬機器的 EVC 模式是設定為虛擬機器設定的屬性,為必須透過 vMotion 進行遷移的虛擬機器管理增添了更多彈性。虛擬機器的硬體相容性必須為版本 14 或更高。每台虛擬機器的 EVC 模式設定會以包含以下內容的行,儲存於虛擬機器的 VMX 設定檔中: featMask.vm.cpuid 字串。當已設定"每台虛擬機器 EVC 模式"的虛擬機器進行遷移時,儲存於 VMX 檔案中的 EVC 設定會隨虛擬機器一併遷移。可在虛擬機器關機時變更"每台虛擬機器 EVC 模式"的設定(請關閉並重新啟動虛擬機器以套用變更後的"每台虛擬機器 EVC 模式"設定)。

若您為位於已配置全域 EVC 模式之叢集中的虛擬機器啟用"每台虛擬機器"EVC 模式,該模式的等級必須等於或低於整個叢集所設定的 EVC 模式。因此,您可以同時配置全域與"每台虛擬機器"EVC 模式。 複製虛擬機器後,其個別虛擬機器的 EVC 設定會隨虛擬機器一併複製。

若要設定個別虛擬機器的 EVC 模式,請開啟 VMware vSphere HTML5 客戶端,前往 主機與叢集,然後選取所需的虛擬機器。開啟 Configure 選單頁籤,選擇 More > VMware EVC 並點擊 Edit.

Configuring the per VM EVC mode in the VM settings

如何在不造成系統停機的情況下,於叢集中啟用 EVC 模式

在某些情況下,您可以在不造成虛擬機器停機的情況下,於整個叢集中啟用 EVC 模式(通常,必須先關閉並重新啟動虛擬機器,才能套用叢集 EVC 模式的設定)。若符合以下需求,即可實現此操作:

  • 正在運行的虛擬機器位於配備最舊處理器的 ESXi 主機上
  • 儀表板中的 EVC 模式已設定為使用與最舊處理器世代相符的 CPU 指令集

為 vCenter 虛擬機器啟用 EVC 模式

您可能會遇到以下在 VMware vSphere 環境中常見的情況:

vCenter Server is running as a VM on an ESXi host that must be added to a cluster for which the EVC mode is enabled.

問題在於,在啟用 EVC 之後,若 ESXi 主機上仍有虛擬機器正在運行(包括執行 vCenter 的虛擬機器),則必須先關閉所有虛擬機器,才能將該主機加入叢集。然而,執行 vCenter 的虛擬機器是管理叢集所必需的,而我們又無法關閉該 vCenter 虛擬機器,因為它目前正在使用中。當 vCenter 虛擬機器運行於配備較新處理器的 ESXi 主機上時,此問題尤為嚴重。

註: 建議使用標準 vSwitch (非分散式 vSwitch)用於將執行 vCenter 的虛擬機器連接到此處的網路。

A possible solution. 請參考以下可協助您解決 VMware vSphere 5.5 問題的演算法:

  1. 如果叢集中尚未有 ESXi 伺服器,請將另一台 ESXi 伺服器(該伺服器上未執行 vCenter 虛擬機器)移入叢集。正在移入叢集的 ESXi 伺服器上的虛擬機器必須已關機。
  2. 關閉正在執行 vCenter Server 的虛擬機器。使用 VMware Host Client 連線至 vCenter 虛擬機器所在的 ESXi 主機,以取消註冊該虛擬機器;或使用 SSH 客戶端連線以複製檔案。在 VMware Host Client 中,右鍵點擊 vCenter 虛擬機器並按下 取消註冊. 請手動將 vCenter 虛擬機的所有檔案複製到已連接到 ESXi 伺服器的資料存放區中,該伺服器您已在步驟 1 中移至叢集。若為 NFS 或 iSCSI 共用儲存空間 由於兩台 ESXi 主機皆使用此檔案,因此無需將虛擬機器檔案複製到其他位置。

註: 在將執行 vCenter Server 的虛擬機器從一個 ESXi 主機移至另一個之前,您可能需要手動設定該虛擬機器虛擬網路介面的 MAC 位址。

  1. 在已移至叢集的 ESXi 主機上註冊 vCenter 虛擬機器(使用 VMware Host Client 連線至 ESXi 主機,開啟資料存放區,找到 vCenter 虛擬機器的檔案,選取 VMX 檔案,右鍵點擊該檔案並按下 註冊虛擬機器). 在叢集中的此 ESXi 主機上執行 vCenter 虛擬機器。使用 VMware vSphere Client 登入 vCenter,以確認您能透過 vCenter 管理 vSphere 環境。您可能需要暫時停用"准入控制"。
  2. 將 vCenter 虛擬機器原先運作的來源 ESXi 主機移至叢集。若必要,請在移動主機前關閉該 ESXi 主機上的其他虛擬機器。

結論

增強型 vMotion 功能 (EVC) 是 VMware vSphere 的特點,可確保叢集具備可擴展性,並允許您將配備不同世代處理器的節點加入叢集,以便透過 vMotion 在 ESXi 主機之間執行虛擬機器即時遷移。 EVC 模式會隱藏新一代處理器的特點,以建立一個統一的基準,使其符合叢集中 ESXi 主機所使用最舊一代處理器的特點。因此,您將擁有一個同質化環境,其中所有處理器皆使用相同的指令集,且正在運行的虛擬機器可透過 vMotion 進行遷移。 眾多使用叢集的 VMware 客戶皆採用 EVC 模式。建議您在建立叢集的階段即啟用 EVC 模式,以避免日後在新增 ESXi 主機及遷移運行中的虛擬機器(包括運行 vCenter Server 的虛擬機器)時可能產生的問題。

無論您是否使用叢集,都請務必記得備份 VMware 虛擬機器。 NAKIVO Backup & Replication 這是一款快速、可靠且經濟實惠的資料保護解決方案,即使您的 VMware 虛擬機器正在跨叢集中的 ESXi 主機進行遷移,也能為其提供保護。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read