2012年12月26日 星期三

Hyper-V 3.0 無共用即時移轉 (Hyper-V Shared Nothing Live Migration in Windows Server 2012)

靈活彈性的虛擬機器移動能力是雲端虛擬化基礎結構環境下相當重要的功能,而虛擬機器即時移轉(Live Migration)功能正是高度行動遷移能力所需具備的關鍵技術,所謂即時移轉意謂著在不中斷正在執行的虛擬機器或用戶端連線的情況下就可以將一部執行中的虛擬機器遷移到不同的機器或位置 ,但想要成功而平順的即時移轉虛擬機器並非易事,因為移轉過程中需要移轉記憶體分頁、虛擬儲存磁碟和網路連線等執行階段的狀態資料,微軟Windows Server 2012 Hyper-V 3.0大幅強化與擴充了即時移轉的功能與靈活彈性,其中令人耳目一新的能力即是無共用即時移轉 (Hyper-V Shared Nothing Live Migration)機制,顧名思義,這種即時移轉的方式,能夠在沒有任何共用儲存區的情況下,將一部正在執行的虛擬機器由一台主機搬移到另一台主機,本文將簡介和實做Hyper-V 3 所新增的這項無共用即時移轉功能。

Hyper-V 3.0的虛擬機器遷移技術

首先,回顧並檢視Windows Hyper-V虛擬機器遷移技術的發展歷程。
微軟Hyper-V的遷移或移轉技術始於Windows Server 2008 的Hyper-V 1.0的快速移轉(Quick Migration)、而Windows Server 2008 R2 Hyper-V 2.0則進一步支援叢集共用磁碟區即時移轉並引入了叢集共用磁碟區 (Cluster Storage Volumes;CSV)的機制、新版的Windows Server 2012 的Hyper-V 3.0則新增了SMB共享移轉、無共用移轉與儲存即時移轉等方式,因此目前新版的Hyper-V 3.0比較起VMware vSphere 的vMotion、 Storage vMotion、Unified vMotion已毫不遜色,下表整理目前Windows Server 2012 Hyper-V 3.0的各種虛擬機器遷移技術的差異:

Hyper-V移轉技術 版本 目的與用途
快速移轉 (Quick Migration) R1,R2,R3 Hyper-V第一代移轉技術,適合計劃性移轉,因為執行的狀態資料儲存至共用儲存區並從共用儲存區恢復,因此通常會有明顯等待的中斷時間
叢集共用磁碟區即時移轉 (Failover Cluster Live migration) R2,R3 利用叢集技術提供高度可用性能力,計劃性移轉時是將記憶體分頁狀態直接傳送至目的主機,因此較無明顯等待的中斷時間
無共用移轉 (Shared Nothing Live Migration) R3 高行動力的移轉虛擬機器至另一部Hyper-V主機,無需叢集,也無需共用存放區,最具靈活彈性
即時儲存移轉 (Storage Live Migration) R3 高移動力的移轉虛擬硬碟(相關資料)到其它存放位置
複寫 (Replica) R3 低成本的虛擬機器災難復原(DR)技術,採用非同步(asynchronous)的複製方法

無共用即時移轉的主要特性

一言以敝之,靈活、彈性與低成本為Hyper-V 3.0無共用即時移轉的最主要優點,其它值得留意的特性為:

  • Hyper-V主機間無需提供任何共用儲存區、無需叢集。
  • 利用Windows 傳統的資源共享協定--SMB進行移轉。
  • 虛擬機器移轉的環境限制低,您可以將虛擬機器在下列的環境下進行任意的遷移工作:
    • Hyper-V主機一 <---> Hyper-V主機二
    • Hyper-V主機一 <---> Hyper-V叢集一
    • Hyper-V叢集一 <---> Hyper-V叢集二
    • Hyper-V主機一舊位置 <----> Hyper-V主機一新位置 (儲存即時移轉)
  • 支援使用Powershell 進行即時移轉設定與執行,因此能夠實現排程自動化的運作。

Hyper-V 無共用即時移轉條件需求

雖然使用無共用即時移轉功能相當簡單,但仍需要留意其使用的條件和建議:

  • 需要(至少)使用二部已安裝Hyper-V角色的Windows Server 2012系統或免費的Microsoft Hyper-V Server 2012 作業系統。
  • 每部伺服器必需擁有自己存放虛擬機器檔案的位置,此位置可以是本機磁碟或SAN連接的磁碟或SMB 3.0共用。
  • 伺服器必需使用相同廠商的處理器(例如均是Intel CPU或AMD CPU),但可以是不同版本。
  • 伺服器必需加入相同Active Directory網域或網域間具有雙向信任關係存在(樹系內網域)。
  • 建議應採用至少1Gbps的專屬網路來傳輸即時移轉的流量。
  • Hyper-V伺服器用以傳輸即時移轉的流量的網路介面需要啟用 "Client for Microsoft Networks"和"File and Printer Sharing for Microsoft Networks"這二項功能選項(預設為啟用,不能關閉)。
  • 為了避免執行移轉時發生錯誤以及需要手動選擇虛擬交換器,建議應該將每部Hyper-V伺服器定義相同的虛擬交換器名稱。
  • 移轉的虛擬機器所連結使用的虛擬硬碟不能是實體硬碟 (must not use pass-through storage)。

請確實檢查以符合條件,根據經驗顯示,大部分的即時移轉失敗與錯誤均與上述的條件無法吻合有關。

Hyper-V 3.0無共用即時移轉運作

Hyper-V無共用移轉如何將一部執行中的虛擬機器搬移至另一台Herp-V主機卻不需要中斷其執行,這是因為當管理人員執行即時移轉時,立即移轉會利用下列運作流程與步驟來達成不中斷執行的移轉目的:

  1. Hyper-V來源主機先透過虛擬機器管理服務(Vmms.exe)與目的主機協調並建立即時移轉連線(Live Migration Connection)
  2. 執行儲存移轉,將VHD檔案在目的主機上創造鏡像(mirror) (Mirror VHD file) 。
  3. 將來源的虛擬機器狀態遷移至目的主機 (Migration VM State) 。
  4. 結束同步連線,刪除來源主機的原始VHD檔案。

livemigr1

Hyper-V 3.0無共享即時移轉實務

符合上述所列示的條件需求環境下,想要在二部Hyper-V主機進行無共用即時移轉作業,您必需執行下列的步驟:

  1. 設定限制委派(Constrained Delegation)功能
  2. 啟用二部電腦即時移轉功能
  3. 移轉執行中虛擬機器
  4. 檢查並確認虛擬機器狀態

底下分別依序說明如何設定或執行即時移轉這些步驟。

設定限制委派功能

為了避免執行移轉操作中遭遇到權限問題而導致錯誤,所以建議一開始就應該正確的設定Active Directory電腦帳戶限制委派功能,雖然這項工作並非絕對必要,但建議設定限制委派的功能原由乃是

基於安全性理由,因為當您執行Hyper-V無共用即時移轉時,系統需要驗證即時移轉流量,而Hyper-V 3.0目前提供二種驗證方法:

  1. 認證安全性支援提供者 (Credential Security Support Provider ;CredSSP):
    若您使用預設的CredSSP協定來驗證即時移轉,則無需做任何額外的設定,不過您必需要登入來源伺服器本機(透過本機主控台工作階段、遠端桌面工作階段或遠端 Windows PowerShell 工作階段)後才能夠正確的執行移轉工作,這是因為CredSSP協定並不允許將驗證的私密性資料轉送超過一台主機以外的系統,故它無法支援完整的遠端管理機制。
  2. Kerberos:
    Kerberos驗證協定是較安全的方法,它允許您使用遠端管理工具並且無需登入來源伺服器的情況下就可以執行移轉工作,但是您需要額外設定Active Directory 電腦物件的限制委派工作,以便可以將移轉工作所用到的服務授權並允許另一端的電腦執行。

由上述的說明可知,基於高安全性與遠端管理的考量,您應該採用Kerberos協定驗證方式,但您需要先設定伺服器間的限制委派機制,其做法與步驟如下:

  1. 請在網域控制站或有安裝Active Directory管理工具的電腦上開啟【Active Directory使用者和電腦】或【Active Directory 管理中心】工具,這二個工具均可協助我們設限制委派功能。
  2. 請在工具按一下『Computers』這個容區,並在右側窗格上找到需要移轉的移轉的來源電腦或目的地電腦,而底下的步驟動作需要在這二部電腦上各執行一次。
  3. 請於電腦物件的右鍵功能表選取『內容』選項。
     delegation5
  4. 於出現的內容對話方塊中,核選『信任這台電腦,但只委派指定的服務』並確認已勾選底下的『只使用Kerberos』,然後按一下下方的『新增』按鈕。
    delegation6A
  5. 於『新增服務』對話方塊中,按一下『使用者或電腦』按鈕,待畫面出現『選取使用者或電腦』視窗後,請輸入或選取遷移規劃中的其它電腦物件,然後按『確定』按鈕。
    delegation8A
  6. 接下來視窗的『可用的服務』列示盒會出現所有可授權的服務,為了能夠成功的搬移虛擬機器儲存位置和虛擬機器,您需要以多選取的方式新增了「cifs」和「Microsoft Virtual System Migration Service」這二項服務,然後按『確定』,您必需要確認上述的二項服務已被新增。
    delegation11A 
  7. 請記得在移轉的二部電腦物件內容中都執行上一步驟的委派設定。
    delegation13A

上述的委派工作是透過【Active Directory使用者和電腦】工具,若您使用另一個【Active Directory 管理中心】管理工具,則需要新增下列四項服務。

  1. Microsoft Virtual System Migration Service/NetBIOS電腦名稱
  2. Microsoft Virtual System Migration Service/FQDN電腦名稱
  3. cifs/NetBIOS電腦名稱
  4. cifs/FQDN電腦名稱

上述的做法只有委派二個服務給其它的安全性主體(security principal),亦即限制了唯有這二個服務才能被另一個安全主體(電腦)委派管理,而非整部電腦所有服務均允許委派,因此稱為之限制委派。

啟用並設定即時移轉功能

接下來的步驟需要您利用【Hyper-V管理員】工具來啟用並設定即時移轉功能,步驟如下:

  1. 請由【Hyper-V管理員】工具左側窗格內選取適當的伺服器,並於右鍵功能表中選取『Hyper-V設定』選項。
    config_lm1
  2. 接下來的 『ComputerName 的Hyper-V 設定』對話方塊上,請按一下左側的『即時移轉』以進入即時移轉設定頁,在此您需要設定如下的選項:
    啟用連入與連出即時移轉 請勾選本項以啟用即時移轉功能。
    驗證通訊協定 選取即時移轉的驗證方式:
    1. 認證安全性支援提供者(CredSSP)
    2. Kerberos

    根據前面的說明,在已經設定正確的限制委派下,建議在此選項請核選較安全又可支援遠端管理的第二項 "Kerberos"。

    並行即時移轉
    (Simultaneous Live Migrations)
    由於Hyper-V 3.0可以支援同時移轉多部虛擬機器,所以在此您可以根據您的網路頻寬和儲存硬體的狀況來輸入適當的同時移轉數,預設值為 2。
    連入即時移轉 選擇使用任何可用的網路來進行即時移轉(預設),或是輸入專屬網路介面或網路小組的IP位址來進行即時移轉,建議儘可能使用專屬的網路來進行移轉作業以降低對執行中虛擬機器的流量影響。

    lm1
  3. 完成此頁設定後,請按『確定』結束設定對話視窗。

本步驟的設定也將會自動開放Windows防火牆例外規則 --TCP 連接埠6600 (Hyper-V MIG-TCP-In)。

本步驟的設定也可以經由PowerShell來完成:

Windows PowerShell 命令:
  • PS C:\> Enable-VMMigration
  • PS C:\> Set-VMMigrationNetwork 192.168.2.111
  • PS C:\> Set-VMHost –VirtualMachineMigrationAuthenticationType Kerberos

移轉執行中虛擬機器

一旦前述的設定均已正確完成,本步驟將開始執行中的虛擬機器由一台Hyper-V伺服器搬移到另一部Hyper-V伺服器,步驟如下:

  1. 以網域管理員登入任何一部伺服器,請利用【Hyper-V管理員】工具新增移轉的所有Hyper-V電腦。
  2. 先按一下計劃中移轉的來源電腦,並於右側所出現的虛擬機器中以滑鼠右鍵按一下想要移轉的執行中虛擬機器,然後再於右鍵功能表上選取『移動』這個選項以啟動移動的精靈程式。
    movevm0
  3. 移動精靈程式出現後的第一個『在您開始前』設定頁上,按『下一步』繼續。
  4. 『選擇移動類型』設定頁上有二個選項,您可以在此頁面選擇移動整部虛擬機器(包括虛擬磁碟、設定與快照)到其它伺服器或是只是將虛擬機器的各種存放項目搬移至本伺服器的其它位置或本機已連線的共用裝置(仍由本伺服器管理),在此請選取第一項『移動虛擬機器』 。
    movevm2
  5. 『指定目的電腦』設定頁上,輸入或選取計劃移轉的目標電腦。
    movevm3
  6. 『選擇移動選項』設定頁上有三個選項可供選取:
    • 將虛擬機器的資料移動到單一位置:這個選項是最常見的移動選項,因為它將虛擬機器所涉到的所以相關資料,包括虛擬磁碟檔案、目前的設定、快照檔和分頁處理全部拷貝到下一次頁所定的位置。
      move_vm41
    • 透過選取項目的移動位置以移動虛擬機器的資料:這是較彈性卻較複雜的選項,因為可讓您將虛擬機器的不同資料移動到不同的指定位置。
      VM_MOVELOC
    • 只移動虛擬機器:這個選項是讓您在不移動虛擬磁碟的情況下移動虛擬機器到另一部Hyper-V主機,所以選取此項的虛擬機器先決條件是需將虛擬磁碟儲存在共用存放區下。
    本文範例在此設定頁中選取了第一項以便將所有虛擬機器相關檔案一併移動到相同的位置。 
  7. 最後的『摘要』設定頁,檢視前述的精靈設定是否正確,確認無誤後請按『完成』按鈕後即可立即移動虛擬機器到另一部Hyper-V伺服器。
    movevm6

    runmigration

執行移轉作業需要耗時多久,是否發生機器停擺時間、甚至遭遇到移轉失敗均是管理人員需要留意的問題,不過這些問題均與您的設定、虛擬磁碟大小、多少快照、是否使用專屬移轉的網路、網路可用頻寬和其它主機的硬體能力等緒多因素有關,以自己的測試環境執行數次的經驗,每次移轉至最後段階,結束同步並開始由目的電腦接手移轉過來的虛擬機器執行工作時,大多會停頓短暫數秒,約會遺失三個ping查詢封包,而一部剛安裝完成且沒有快照的Windows Server 2012虛擬機器在我的Gigabit乙太網路下大約會花費四分鐘多的時間完成移轉,同時利用網路監控工具進行可用性監控時,約略會有3-4%的停機時間(均發生在最後完成階段),另一方面,二部移轉的Hyper-V主機的運行倒不受任何影響,不過這純粹是自己的環境下的實證結果,並不具代表性,數據僅供參考。
testvmmove

Windows PowerShell 命令:Move-VM
  • 簡單語法:Move-VM "虛擬機器名稱" 目的電腦 –IncludeStorage –DestinationStoragePath 遷移的目的目錄
  • 範例:底下的的例子將一部"SQL Server"名稱的虛擬機器所有檔案移轉到 SRV2伺服器的 d:\VHD\SQL目錄下。
    • PS C:\> Move-VM "SQL Server" SRV2 –IncludeStorage –DestinationStoragePath D:\VHD\SQL

儲存即時移轉 (Storage Live Migration)

有時候,基於儲存空間或存放裝置效能的考量,您想要將虛擬磁碟搬至另一個本機或網路位置,並不涉及到第二部Hyper-V主機,例如原來虛擬磁碟存放的位置空間C磁碟已經不足,所以IT人員在Hyper-V新購並安裝一個硬碟(D磁碟),這時候您就可以利用儲存即時移轉的功能將正在執行中的虛擬磁碟相關檔案由C磁碟區搬移至空間較大且較快的D磁碟區,做法只要在移動精靈程式一開始的『選擇移動類型』設定頁中選取第二個選項『移動虛擬機器的存放裝置』,然後再依精靈程式指示完成作業即可,下圖顯示了這個設定與完成過程。
storagelmA.

常見的即時移轉錯誤與問題診斷

Hyper-V的無共用即時移轉工作確實相當簡單而方便,所需求的條件雖然不多,但執行之前仍需確認檢查,否則仍可能在執行時遭遇錯誤而無法順利完成移轉工作,常見的錯誤大多來自前述的需求條件無法吻合所致:

一. 處理器不相容問題

Hyper-V即時移轉需要相同廠商的處理器,而同一廠商不同的處理器雖允許執行移轉,但需要先啟用處理器相容性設定,否則會出現相容性的錯誤,所以若規劃移轉的來源與目的電腦上之CPU為同廠商不同類型時,請預先在虛擬機器關機狀況下執行下列動作。

  1. 請確認虛擬機器是關機狀況。
  2. 於虛擬機器的右鍵功能表上選取『設定』選項。
  3. 在虛擬機器的設定視窗的左側窗格按一下『處理器↘相容性』。
  4. 於『相容性設定頁』中,勾選『移轉至使用不同處理器版本的實體電腦』。
    cpu_compabibilityA
  5. 最後,按『確定』完成設定。
    再度強調,不同廠商的CPU由於硬體虛擬化的功能不同,故無法相互移轉其上的虛擬機器。

二. 驗證設定問題

即時移轉另一個常見的錯誤為驗證問題,這包括了使用預設的認證安全性支援提供者(CredSSP)驗證方式卻以遠端管理方式執行移轉動作,或選用kerberos驗證方法卻又未設定好委派均會產生錯誤(如下圖)。
error1

三. Hyper-V的主機虛擬網路交換器的名稱不同

這種情況並不會導致無法執行移轉,只不過會出現一個額外選取對方虛擬網路交換器的步驟。

另一方面,若發生其它的移轉過程上的較難以判斷的異常或錯誤,IT人員可利用下列二種方式來加以診斷以協助問題排除:

  1. 請檢查事件檢視器(Event Viewer)底下的位置以查看存在的錯誤和警告訊息:
    《應用程式及服務記錄檔-->Microsoft-->Windows-->Hyper-V-VMMS—>Admin》
    eventviewer1
  2. 執行下列命令已確認移轉時伺服器所使用的網路及順序:
    gwmi -n root\virtualization\v2 Msvm_VirtualSystemMigrationService | select MigrationServiceListenerIPAddressList

即時移轉的效能調整建議

無共用即時移轉利用SMB協定將虛擬硬碟、快照、設定與執行階段的狀態拷貝到另一台Hyper-V主機,此搬移過程可能需要歷時數分鐘到數時分鐘,不同的移轉環境其移轉的效能可能有顯著的差別,這通常和您的硬體配備、網路設置和虛擬硬碟和快照的大小有密切關係,假若您遭遇移轉工作太過緩慢,或者您希望更快速有效率的完成移轉作業,則硬體及網路的部署常會是關鍵,建議的效率調整可行方法如下:

  1. 使用10Gbps網路以提升頻寬,自然加快移轉速度。
  2. 使用網路小組(Netowrk Teaming)
    將多個網路連線、網卡或連線埠整合成單一邏輯連線的技術,目的在於提升網路流通量(throughput)、負載平衡(load balance)與容錯(fault tolerance)能力。
  3. SMB Direct
    SMB Direct(SMB over RDMA ;Remote Direct Memory Access)為 Windows Server 2012 針對 SMB 3.0所支援的可擴充、快速、高效能的儲存連接技術,一旦採用支援 RDMA 標準的網路介面卡(iWARP、InfiniBand、RoCE)時,將可啟用伺服器與儲存設備之間採用直接以記憶體到記憶體(Memory to Memory)的資料傳輸方式,因而可以大幅降低處理器的使用率以及傳輸的延遲時間。
  4. SMB Multichannel
    SMB MultiChannel 機制可將多個網路介面的頻寬進行整合以提高傳輸效能,並且利用存取 SMB 共用資料夾的多個網路路徑來提供網路容錯能力。
  5. 啟用Jumbo封包
    可讓虛擬網路介面的封包達9014位元組,可減少網路堆疊與網路驅動程式的呼叫數,增加網路處理量

上述效能調整的建議方式並無放緒四海皆準的做法,需要您花時間並多方測試,才能夠找到在有限成本下可提升即時移轉速度的最佳方案。

結語

即時移轉將執行中的虛擬機器搬移至另一台主機或位置,這提供了高度移動力的虛擬化環境,不過不同的Hypervisor支援的即時移轉方式經常有著顯著的差別,即使是同一個Hypervisor亦可能支援多種不同類型的即時移轉方法以因應不同的環境條件需求,而這些不同的即時移轉方式通常具有不同的特性和使用限制條件,例如停擺時間、對應用程式執行的衝擊、可否同時遷移多部虛擬機器以及移轉速度等,所以您必需了解並仔細評估、比較這些特性上的差異以便選擇適合組織資訊環境的即時移轉方式。
毫無疑問的,Hyper-V 3.0的無需共用儲存的即時移轉機制提供了一個低成本,高效率,靈活便捷的虛擬機器遷移方案,大幅降低了過往搬移虛擬機器所需耗費的成本與複雜度,但它僅是提供日後計劃性的虛擬機器高度行動移轉能力,無法因應非計劃性的失效還原,若您需要提供災難復原計劃以因應無法預期的停機狀況,則複寫機制(Replica)或許才能滿足需求,若您需要提供永不中斷服務的高度可用性(Availability)能力,妥善規劃硬體、網路及儲存架構,然後建置共用儲存區的Hyper-V叢集才可能達成高度可用性的目標需求。

 

相關文章