92 期 - VMware vMotion 運作架構及效能最佳建議


網管人雜誌

本文刊載於 網管人雜誌第 92 期 - 2013 年 9 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

前言
Q1、vMotion 怎麼做到 VM 虛擬主機線上遷移?
Q2、vMotion 遷移機制執行效能如何?
Q3、Storage vMotion 怎麼做到VM虛擬主機線上儲存遷移?
Q4、Storage vMotion 遷移機制執行效能如何?
Q5、沒有共用儲存設備可以執行 vMotion 嗎?
Q6、不同世代的 CPU,可以執行 vMotion 嗎?
Q7、啟動 EVC Mode 有哪些先決條件?
Q8、啟動 EVC Mode 是否會影響 VM 的運作效能?
結語





前言

今日,虛擬化浪潮已經勢不可擋,許多企業及組織已經從早期持觀望態度到引進內部測試環境,確定虛擬化技術真的可行後,便紛紛將線上營運服務遷移到虛擬化環境當中,那麼其中常用到的虛擬化進階功能「VMotion」(從 vSphere 4.1 版之後正式更名為 vMotion),這個線上遷移技術是從哪時開始出現的呢?

在 2004 年時 VMware 在 ESX 虛擬化平台上,首次發表實作出來的功能 VMotion 功能,可以將 VM 虛擬主機在「運作中(Power On)」情況下,從 A Host 遷移到 B Host 且遷移期間沒有任何「停機時間(Downtime)」的產生,此技術在當時除了震驚所有與會人員之外,也讓大家開始體會到虛擬化技術,已經不僅僅是實驗測試用途而是可以在營運環境上所使用的技術。時至今日,此技術名詞也已經等同於 Live Migration Virtual Machine 的代名詞了。

圖 1、VMware VMotion 運作示意圖





Q1、vMotion 怎麼做到 VM 虛擬主機線上遷移?

Question: 聽說採用 vMotion 機制,可以將 VM 虛擬主機從 A Host 遷移到 B Host,並且在遷移過程中 VM 虛擬主機可以正常服務,不會有任何停機時間是真的嗎? 它是怎麼辦到的?

Answer: VMware vMotion 技術,由 ESX 2.5 虛擬化平台版本開始支援,它能將運作中的 VM 虛擬主機其「執行狀態(Execution State)」,從一台 ESX/ESXi Host 移動到另一台 ESX/ESXi Host,並且遷移期間不會有任何停機時間產生。VM 虛擬主機的執行狀態,包含如下三個部份:

1. 虛擬裝置狀態: 例如,CPU、硬碟控制器、SVGA 虛擬顯示卡...等,這些虛擬裝置狀態大小通常介於 8 ~ 128 MB 之間,因此可以迅速的傳送完畢。

2. 外部連接裝置: 例如,vNIC 網路卡、SCSI 設備...等,以便屆時 VM 虛擬主機遷移作業完成後發出 RARP 封包,通知實體交換器進行 MAC Table 的內容更新,以及在新的 vSwitch 中進行 Port 資訊更新。

3. VM 虛擬主機的記憶體狀態: 此部份在 vMotion 遷移作業中,佔用最多的傳輸時間(視 VM 虛擬主機記憶體大小而定),在傳輸記憶體狀態時可以分為三個傳輸階段:

階段一、Guest OS Trace Phase:
觸發 Guest OS 遷移機制初始化,在目的端 Host 當中產生一台與來源端相同的 VM 虛擬主機,除了虛擬主機的名稱相同之外,虛擬硬體裝置也都會相同。當稍後在執行線上遷移的過程當中,若 VM 虛擬主機(Guest OS)的記憶體狀態有任何「變更」時,將會進行「追蹤(Trace)」的動作後存放在 Memory Bitmap 當中,雖然追蹤記憶體狀態變更的動作會影響傳輸的吞吐量,但是對於整體的 Guest OS Memory 來說影響並不大(例如,VM 虛擬主機記憶體有 4GB,但變動量只有 100MB)。

階段二、Precopy Phase:
在此階段中會將 VM 虛擬主機的記憶體狀態,從來源端 Host「複製(PreCopy)」到目的端 Host。此時,便是透過二台 Host 主機之間的 vMotion Network(也就是 VMkernel Port)進行傳輸,PreCopy 複制機制在第一次時,會複製 VM 虛擬主機的所有的記憶體狀態,但是在複製期間很有可能部份記憶體內容已經變更,因此會陸續再複製變更後的記憶體狀態,也就是剛才階段一所追蹤後存放的 Memory Bitmap 內容,在此階段中只會消耗 Host 主機的 Network 資源,並不會使用到 CPU 資源。

階段三、Switchover Phase:
將 VM 虛擬主機的記憶體狀態複製完畢後,此時會有非常短暫的停頓時間(使用者及應用程式都不會感覺到),執行刪除來源端 VM 虛擬主機,以及釋放出該 VM 虛擬主機所佔用的記憶體區塊。當目的端 VM 虛擬主機接手服務其記憶體區塊後,發出 RARP 封包通知實體交換器更新其 MAC Table 內容,以便使用者能繼續且無縫的存取 VM 虛擬主機所提供的服務。

圖 2、vMotion 遷移機制運作示意圖





Q2、vMotion 遷移機制執行效能如何?

Question: 雖然 vMotion 可以線上不中斷遷移 VM 虛擬主機,但是不知道運作效能如何,例如,我要維護虛擬化環境其中一台 ESXi Host,但是上面有一堆 VM 虛擬主機且記憶體使用量不低,我想了解大約需要多久的時間才能遷移一台 VM 虛擬主機?

Answer: 首先,要視您 ESXi Host 用於 vMotion 傳輸的通道(VMkernel Port)有多大,再來則是看 VM 虛擬主機的記憶體有多大而定。當然 vMotion 傳輸通道越大便能更有效減少傳輸時間,從 vSphere 5.0 版本開始,便擴大 vMotion 機制支援更多片網卡的功能,如果採用 1GbE 速度的網路卡最多可以支援至 16 片,若採用的是 10GbE 網路卡最多可支援至 4 片

圖 3、支援多片 10GbE 網路卡進行 vMotion 流量傳輸

下列的數據圖表其測試環境為,vSphere 4.1 及 vSphere 5.0 虛擬化平台,並且採用單片及雙片 10GbE 網路卡,做為 vMotion 機制的傳輸通道,而進行遷移的 VM 虛擬主機為資料庫伺服器,並配置了 4 顆 vCPU 以及 16GB 的虛擬記憶體。在測試結果當中可以看到同樣的測試環境,採用單片 10GbE 網路卡的 vSphere 4.1/5.0 虛擬化平台,新版的 vShpere 5.0 相較於舊版的 vSphere 4.0 傳輸較快,當然若採用二片 10GbE 網路卡,更可以縮短傳輸時間。

圖 4、vMotion 遷移效能測試數據





Q3、Storage vMotion 怎麼做到VM虛擬主機線上儲存遷移?

Question: 聽說採用 Storage vMotion 機制,可以將 VM 虛擬主機從 A Storage 遷移到 B Storage,並且在遷移過程中 VM 虛擬主機仍可以正常服務,不會有任何停機時間是真的嗎? 它是怎麼辦到的?

Answer: VMware Storage vMotion 技術,由 ESX/ESXi 3.5 虛擬化平台版本開始支援,它能將運作中的 VM 虛擬主機其「儲存狀態(Storage State)」,從一座儲存設備移動到另一座儲存設備,並且中間不會有任何停機時間產生。舉例來說,虛擬化平台當初建立時,因為預算考量所使用的儲存設備其硬碟為 SATA,隨著時間日久以及 VM 虛擬主機運作數量增加,因而採購了效能較好採用 SAS 硬碟的儲存設備,便可以使用 Storage vMotion 技術,將 VM 虛擬主機的儲存由 SATA 硬碟儲存設備,線上不中斷的遷移到 SAS 硬碟儲存設備。其遷移儲存狀態可以分為五個運作階段:

1. 將 VM 虛擬主機的 Home Directory MetaData (如 Configuration、SWAP、Log Files),準備遷移到目的地 Datastore(例如,另一座儲存設備)。
2. 開始複製 VM 虛擬主機的虛擬硬碟檔(vDisk File),到目的地的 Datastore 當中。
3. 若採用舊版 vSphere 4.x 版本,則使用 CBT(Changed Block Tracking)技術保持二邊資料的完整性,若採用新版 vSphere 5.x 版本,則會採用 Mirror Driver 技術,透過 One-Pass Copy 機制將二端的資料區塊(Block)保持同步及完整性。
4. VM 虛擬主機非常快速的執行 Suspended / Resumed 動作,以便使用目的地的 Home Directory MetaDataDisk File
5. 順利切換儲存後,將來源端的 Home Directory MetaData 及 Disk File 刪除

圖 5、Storage vMotion 遷移機制運作示意圖





Q4、Storage vMotion 遷移機制執行效能如何?

Answer: 除了前述所討論 ESXi Host 主機 vMotion 傳輸通道大小,以及 VM 虛擬主機的虛擬硬碟空間大小之外,其實跟 ESXi Host 所採用的檔案系統版本也有很大的關系。

vSphere 4.x 時代所使用的檔案系統為 VMFS-3,且 Block Size 有 1MB、2MB、4MB、8MB 的區別,採用不同的 Block Size 後可以支援的 Datastore 空間也不同,例如,採用 1MB Block Size 的話,最多只能支援到 256GB 空間的 Datastore,若採用 4MB Block Size 的話,則能支援到 1TB 空間的 Datastore,而新版本 vSphere 5.x VMFS-5 檔案系統版本,其 Block Size 大小則統一為 1MB,可以支援最大到 64TB 空間的 Datastore (詳細資訊請參考 VMware KB 1003565)。

下列的數據圖表其測試環境為,採用 VMFS-3(2MB Block Size)以及 VMFS-5 的二個檔案系統版本,當執行 Storage vMotion 動作遷移 24GB 虛擬磁碟空間時,所需要花費的遷移時間。從測試結果中我們可以看到,VMFS-5 的遷移時間相較於 VMFS-3 大約減少了 35% 左右。所以如果在您所建置的 vSphere 5.x 環境當中,若沒有要相容於舊版 ESXi Host 及 VM 虛擬主機的話,那麼建議您在格式化新加入的 Datastore 時,請記得採用 VMFS-5 檔案系統版本,以有效縮短 Storage vMotion 遷移時間。

圖 6、Storage vMotion 遷移效能測試數據





Q5、沒有共用儲存設備可以執行 vMotion 嗎?

Question: 聽說虛擬化環境中,若沒有共用儲存設備就不能執行 vMotion 機制是真的嗎? 但是因為公司有預算限制的問題,真的無法購買昂貴的共用儲存設備,就不能執行 vMotion 了嗎?

Answer: 這個問題在 vSphere 4.x 以及 vSphere 5.0 版本時,確實一定要共用儲存設備才能執行 vMotion。但是,在最新版本 vSphere 5.1 當中,所發佈的 vMotion Enhancements 技術便能解決這樣的問題,此技術便是「同時」將 vMotionStorage vMotion 機制結合。

在二台 ESXi Host 且沒有共用儲存設備的環境當中,你可以將 VM 虛擬主機的「運算及儲存」資源,由 A Host 線上遷移到 B Host 當中,因為是結合 vMotion 及 Storage vMotion 機制,因此在遷移過程中同樣不會有中斷的情況發生。

圖 7、vMotion Enhancements 遷移機制運作示意圖

請注意!! 觸發 vMotion Enhancements 機制,必須要採用新版 vSphere Web Client 管理介面才能執行,並且在遷移設定中選擇 Change both host and datasotre 項目即可,在以往大家習慣的 vSphere Client 管理介面中,是無法執行 vMotion Enhancements 機制的(事實上, VMware 官方已經宣佈 vSphere Cleitn 5.1 是最後一版,以後再也不會有新版本的 vSphere Client)。





Q6、不同世代的 CPU,可以執行 vMotion 嗎?

Question: 因為公司預算限制的考量,我不可能一次就把所有伺服器都買足,那麼以後新買的伺服器跟舊有的伺服器,還能不能順利執行 vMotion 機制進行線上遷移?

Answer: 當企業或組織建置虛擬化平台時,很有可能因為預算限制或其它因素,而使虛擬化平台所使用的實體伺服器規格不一,因此可能會發生因為「CPU 指令集」不同造成無法執行 vMotion 的情況。舉例來說,A 公司初期建置伺服器虛擬化平台時,因為預算問題因此採購了二台 Dell R710 伺服器,其 CPU 規格為 Intel Xeon E5645,隔年又採購了二台 Dell R72 0伺服器,其 CPU 規格為 Intel Xeon E5-2620。

此時 A 公司的管理人員卻發現,運作在 Dell R710 上的 VM 虛擬主機,雖然可以執行 vMotion 機制遷移到 Dell R720 伺服器上,但是欲將 Dell R720 伺服器上 VM 虛擬主機,使用 vMotion 機制遷移到 Dell R710 伺服器時,卻發生因為 CPU 指令集的關係而無法 vMotion 的錯誤訊息(詳請參考 VMware KB 1029785)。

圖 8、因為 CPU 指令集的關系而無法 vMotion 的錯誤訊息

此時,便可以開啟 VMware EVC(Enhanced vMotion Compatibility)功能,透過內建的 Building Block Architecture 技術,以及 CPU 廠商所提供的遷移機制,例如,Intel FlexMigration 及 AMD-V Extended,來解決因為不同 CPU 世代(CPU Generations)擁有不同 CPU 指令集,造成無法順利 vMotion 遷移 VM 虛擬主機的困擾(詳請參考 VMware KB 1003212)。

啟用 EVC Mode 功能時,將會因為所使用的 vCenter Server 版本不同,所支援的 CPU 世代也將有所不同,例如,採用最新版本的 vCenter Server 5.1,便可以支援從 Intel Merom 到最新的 Intel Ivy Bridge 世代的 CPU。

圖 9、不同 vCenter Server 版本所支援 Intel 及 AMD 的 CPU 世代





Q7、啟動 EVC Mode 有哪些先決條件?

Question: 為何當我嘗試在環境中啟用 EVC Mode 時無法成功? 是不是有哪些環境上的限制要先克服才行? 我可不可以把 Intel CPU 伺服器上的 VM 虛擬主機,遷移到 AMD CPU 伺服器當中?

Answer: 要啟動 VMware EVC Mode,你必須要在 Cluster 層級才能啟用此功能,並且所有的 ESXi Host 都必須加入此 Cluster 當中,才能有效套用 EVC Mode 功能,除此之外還有下列先決條件:

  • 在 VMware 所建立的 Cluster 內,所有的 ESXi Host 其 CPU 必須是同一家供應商,例如,都是 Intel 或都是 AMD,並且都必須在 VMware Compatibility Guide 支援清單當中才行。
  • 所有的 ESXi Host 其 CPU 至少必須支援第一代虛擬化技術,例如,Intel VT-x 或 AMD AMD-V ,以及 Intel XD(eXecute Disable)、AMD NX(No eXecute),並且在 BIOS 當中必須啟用才行。若 CPU 有支援第二代虛擬化技術如 Inte EPT 或 AMD RVI,則 VMware ESXi Hypervisor 會自動使用其功能,來卸載虛擬化工作負載加強運作效率。
  • 所有的 ESXi Host 都必須設定及啟用 vMotion 機制。
  • 所有的 ESXi Host 都必須接受同一台 vCenter Server 管理。


圖 10、啟用 VMware EVC Mode,並採用 Intel Sandy Bridge 世代為 Baseline

在 Cluster 中啟用 EVC Mode 功能之後,便會為所有的 ESXi Host 建立 Baseline 以便採用相同的 CPU 指令集,但 EVC Mode 功能並非「禁用(Disable)」CPU 特色功能,而僅僅只是透過「隱藏(Hide)」機制,讓其上運作的 VM 虛擬主機無法使用 CPU 指令集當中的進階功能而以。

舉例來說,Cluster 中 ESXi Host 採用的 CPU 為 Intel Xeon Core i7 CPUs(Nehalem),並且 Baseline 選擇採用 Intel Nehalem Generation 項目,因此便具備了 Intel Merom、Penryn、Nehalem 三種世代的 CPU 指令集,所以 VM 虛擬主機都具備 Merom 世代指令集功能,例如,SSE4.1, SSE4.2, RDTSCP,但是當新採購的伺服器其 CPU 為 Westmere(32nm)加入到 Cluster 之後,因為 Baseline 的關系所以其新功能 AES/AESNI、PCLMULQDQ 便會自動隱藏。

圖 11、不同世代的 CPU 支援不同的指令集功能





Q8、啟動 EVC Mode 是否會影響 VM 的運作效能?

Question: 那麼我在 Cluster 中啟用 EVC Mode 功能之後,Baseline 將以 Cluster 中最舊的 CPU 指令集為基準,也就是把新世代的 CPU 指令集功能隱藏,雖然得以讓 VM 虛擬主機在不同 Host 之間 vMotion 遷移,但是會不會影響到 VM 虛擬主機的運作效能呢?

Answer: VMware 官方針對不同的企業應用,例如,資料庫(Database)、Java 應用程式(Java Application)、資料加密(Encryption)、多媒體(Multimedia)等部份,在同一個 Cluster 內不同 CPU 世代的 Host 進行效能測試。


資料庫(Database)部份,採用 Oracle SwingBench 進行工作負載測試,而 Java 應用程式(Java Application)部份則採用 Java Benchmark SPECjbb2005 進行工作負載測試,從測試結果中可以看到採用哪個世代的 CPU,其工作負載的測試結果幾乎相差無幾。

圖 12、不同世代的 CPU 進行資料庫及應用程式工作負載的測試結果

資料加密(Encryption)部份,使用 OpenSSL 1.0.0 加密機制來測試不同 AES(Advanced Encryption Standard),並且採用不同的 Key Size 分別是 128 / 192 / 256 bits,且 Block Size 皆採用 8192 bytes 的情況下進行測試,在測試結果中可以看到,Westmere CPU 因為具有 AESNI 功能,所以相較於其它舊款 CPU 速度快了三倍

圖 13、不同世代的 CPU 進行資料加密工作負載的測試結果

多媒體(Multimedia)部份,會使用到的 CPU 指令集功能有 SSE 1,2,3,4,其中第 4 版又有 4.1、4.2 次要版本,SSE 4.1 為在 CPU 核心當中專注處理 Multimedia 部份,而 SSE 4.2 為導入新的 String 及 Text 功能以加速 String 處理程序。以 H.264 中 Two Pass Fast Encoding Mode(又稱為 X264)進行工作負載測試,因為從 Penryn 的 CPU 世代便支援 SSE 4.1 功能,所以從測試結果中可以看到,除了 Merom 以外其它世代的 CPU 測試結果非常接近。

圖 14、不同世代的 CPU 進行多媒體工作負載的測試結果





結語

透過本篇的說明相信讀者已經了解到,當您為內部的虛擬化環境建置 vMotion 線上遷移機制時,如果 VM 虛擬主機遷移緩慢傳輸效能不如預期,那麼你可以檢視 vMotion 網路配置是否得宜,或者需要增加 vMotion 網路頻寬來因應。此外,若是公司因為預算問題而無法一次購足所有伺服器的話,那麼你可以透過開啟 EVC Mode,來解決新舊伺服器之間無法 vMotion 的困擾。