2010年7月15日 星期四

VMware VMotion 簡介與實作

     VMotion 技術允許虛擬機器(VM)在服務不中斷的狀況下,從一台實體機(ESX Server)移轉到另一台上,如此一來機房管理者若要對實體機進行維修時,便可以手動先將其上的所有虛擬機移轉到另外一台實體機上,幾乎不會有服務停止的情況發生,大幅減輕管理者的停機壓力。

啟用 VMotion 功能的條件

  1. 欲移轉的 VM 與 VM設定檔,必須存放在 Share Storage 上。
  2. 此動作必須透過 vCenter Server (以下簡稱VC)手動操作,VC不可停機。
  3. 來源與目的 Host 的CPU若支援的指令集相同,則不需要放在 Cluster 內就可以進行 VMotion 了。
  4. ESX 中的網路設定(Networking),一定要設定 VMkernel 的 vmotion 功能。
  5. 來源與目的 Host 的CPU指令集、網路卡名稱與設定、儲存設備與連接的周邊裝置皆需一致。

VMotion 的過程

     VMotion的技術在於動態的透過 VMkernel 網路介面,將來源 Host 中 VM 的記憶體內容、映射、網路封包、MAC位址與儲存位置...等資訊,逐步的抄寫到目的 Host 中 VM 的記憶體中,過程中就算來源端的 VM 資料不斷變化,也會不斷地同步,直到控制權轉移到目的 Host 為止,此時若使用ping -t 指令觀察整個轉移的過程,大約只會遺失一個封包而已,也因此 VMotion 又稱為動態移轉。
     VMotion 這個名詞,在使用 vCenter 操作時是看不到的,因為它被視為遷移 Migration 功能的一種,只要在 VM 上按右鍵,就可以看到 Migrate... 以滑鼠點下去後,預設第一個選項 Change host 就是 VMotion 的意思了。
     接下來會讓你選擇要動態轉移的目的 Host ,若可正確轉移,則下方的Compatiblity會如圖般出現 Validation Succeeded ,否則也會出現無法移轉的原因供你參考 。
    通常 VMotion 無法成功的原因有下列幾點
  1. Host 的 VMkernel 未設定 vmotion 選項
  2. 來源 Host 與  目的 Host 的 VMkernel 與 Virtual Machine Network 設定不一致
  3. 目的 Host 的 Share Storage 與來源 Host 的不一致

VMware EVC (Enhanced VMotion Compatibility)

    若來源與目的 Host 的 CPU 所支援的指令集不同,將導致無法使用 VMotion ,因為不同的指令集代表 CPU 所擁有的暫存器( Register )數量不大相同,如此來源 Host 中運作的 VM ,其會使用到的暫存器,不一定目的 Host 會有,將會造成CPU資料無法搬移,而無法達成線上動態移轉。
    早期 VMware 想到的法子是以最少暫存器的那顆 CPU 為準,將多出來的暫存器遮蔽起來,因此我們必須如下圖般先將所有的VM關機後,個別調整 CPUID Mask ,可想而知,這個工作隨著 VM 數量的增加或新加入的 Host 而可能有所調整,將造成服務的中斷。
    後來 VMware  發現 CPU 封裝的類型不同,其所支援的指令集就一定不同,因此改變為讓使用者挑選 CPU 封裝類型後,VMware 自動調整暫存器遮罩的方式,如此便大幅降低調整遮罩的難度了,要注意的是 Intel 的 CPU 一定不能與 AMD 的 CPU 相容,目前 VSphere 4.0 這個版本所能支援的 Intel CPU 類型如下圖所示:
官網中對於 Intel CPU 相容性的參考為 http://kb.vmware.com/kb/1991
    雖然來源與目的 Host 不需要放在 Cluster 中就可以進行 VMotion,但針對支援不一樣指令集的 Host,則必須將之放入啟動 EVC 功能的 Cluster 中,才能夠以相容模式進行 VMotion 了。    預設 Cluster 中的 Vmware EVC 是 Disabled 的,按下如圖中的 Change...,則可以從 4 種支援的 CPU 相容模式挑一個啟用 EVC。
    若挑選的 EVC 模式 其 CPU 類型高於 Host 的 CPU 類型,VMware 也會在下方的 Compatibility 視窗提示您所挑選的模式並不相容。
    就算挑選的 EVC 模式已符合所有 Host 的 CPU 類型,但此時若有已開機或暫停的 VM 存在於此Cluster 中的任一 Host 中,則 VMware 也可能會在下方的 Compatibility 視窗提示,VM 使用到了高於此 EVC 模式的 CPU 功能,此時應該讓 VM 關機後重開,以便 VM 使用 EVC 指定的 CPU 等級運作。

沒有留言: