105 期 - 快速移轉 VMware 虛擬主機,無縫遷入Azure 公有雲


網管人雜誌

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





文章目錄

1、前言
2、實作環境
3、新版 MVMC 2.0
4、MVMC 轉換須知
5、MVMC 圖形介面轉換
          Hyper-V 虛擬化平台前置作業
          VMware VM 虛擬主機前置作業
          執行 V2V 轉換作業
          轉換至 Microsoft Azure
6、PowerShell 指令介面轉換
7、結語





1、前言

微軟於 2013 年 10 月 18 日,所發行的 Windows Server 2012 R2 作業系統版本當中,所內含的 Hyper-V 虛擬化技術平台,已經演變到技術非常成熟的 Hyper-V 3.0 R2 版本。事實上,原有的 Hyper-V 3.0 虛擬化平台已經具備許多特色功能,而在 R2 版本當中更是加強許多功能,例如,線上調整 VHDX 虛擬硬碟空間、針對儲存效能進行品質管控(IOPS QoS),就連原本被詬病的 Linux VM 不僅支援度大幅提升之外,現在更支援動態記憶體(Dynamic Memory)功能。

你是不是也很想體驗看看 Hyper-V 虛擬化平台的強大功能呢? 但是目前許多企業或組織的 VM 虛擬主機,都已經運作在 VMware vSphere ESX/ESXi 虛擬化平台上,怎麼樣才能夠無縫且快速的遷移到企業或組織內,所建立的 Hyper-V 虛擬化平台當中,甚至是 Microsoft Azure 公有雲上呢?

本文將說明及實作利用 MVMC(Microsoft Virtual Machine Converter),也就是微軟官方所發佈的 V2V(Virtual to Virtual)轉換工具,將目前運作於 VMware vSphere ESX/ESXi 虛擬化平台上的 VM 虛擬主機,轉換到 Hyper-V 虛擬化平台或 Microsoft Azure 公有雲上繼續運作。

圖 1、V2V 轉換工具 MVMC 運作示意圖





2、實作環境






3、新版 MVMC 2.0

事實上,在前期雜誌時已經介紹過舊版 MVMC 1.0(於 2012 年 10 月 1 日發行),經過一段時間後微軟於 2014 年 4 月 8 日發行了新版 MVMC 2.0,此版本除了支援 VMware vSphere ESXi 虛擬化平台最新版本之外,現在也支援轉換 Linux VM(舊版僅支援 Windows VM),以下列舉 MVMC 2.0 新版特色功能:

  • 除了支援將 VMware VM 虛擬主機轉換至 Hyper-V 虛擬化平台之外,現在也支援轉換並自動上傳至 Microsoft Azure 公有雲
  • 在舊版 MVMC 1.0 時指令模式採用 CLI(命令提示字元),而新版 MVMC 2.0 則提供原生 PowerShell 功能,除了方便自行撰寫自動化工作流程之外,同時與 Microsoft System Center Orchestrator 2012 R2 整合度也更加緊密。
  • 支援轉換在 VMware 虛擬化平台上運作的 Windows 及 Linux VM 虛擬主機,支援的 Linux Distribution 有 CentOS、Debian、Oracle、Red Hat Enterprise、SuSE enterprise、Ubuntu。
  • 支援轉換在 VMware 虛擬化平台上運作的 Online / Offline VM (舊版僅支援 Offline VM)。
  • 支援轉換 VMware VM 虛擬主機的 Virtual Hardware Version 為 4 ~ 10 版。
  • 當轉換的 VMware VM 虛擬主機為 Windows Server 2012/2012 R2 時,會自動將虛擬磁碟轉換為 VHDX 格式。


建議您將 MVMC 安裝在 Hyper-V 2.0/3.0 虛擬平台主機上,如此一來除了可以加快轉換效率之外也能減少不必要的網路流量,同時不同的作業系統版本必須要配合相對應的 .NET Framework 版本才行。此外,在安裝過程中將會自動安裝 Visual C++ Redistributable for Visual Studio 2012 Update 1

  • Windows Server 2008 R2 SP1 請安裝 Microsoft .NET Framework 3.5/4.0
  • Windows Server 2012/2012 R2 請安裝Microsoft .NET Framework 4.5





4、MVMC 轉換須知

MVMC 轉換工具可以獨立運作(Stand-Alone),也可以與 Microsoft System Center Orchestrator 2012 R2 整合。它能夠將如下 VMware vSphere 虛擬化平台上的VM虛擬主機進行轉換作業:

  • VMware vSphere ESX/ESXi 4.1、vCenter Server 4.1
  • VMware vSphere ESXi 5.0/5.1/5.5、vCenter Server 5.0/5.1/5.5


MVMC 轉換工具會將 VMware VM 虛擬主機進行虛擬裝置轉換,包括 虛擬磁碟(Virtual Disks)、設定檔(Configuration)、虛擬記憶體(Virtual Memory)、虛擬處理器(Virtual Processor)、虛擬網路卡(Virtual Network Interface)...等到 Hyper-V 虛擬化平台中,它可以支援轉換到 Hyper-V 2.0/3.0 虛擬化平台上繼續運作:

  • Hyper-V 2.0: Windows Server 2008 R2 SP1、Hyper-V Server 2008 R2 SP1
  • Hyper-V 3.0: Windows Server 2012/2012 R2、Hyper-V Server 2012/2012 R2


MVMC 支援以下 32 或 64 位元Windows/Linux 作業系統,從 VMware vSphere 虛擬化平台轉換到 Hyper-V 虛擬化平台中運作: (若要轉換到 Microsoft Azure 公有雲中,除了 Windows Vista/7/8/8.1 客戶端作業系統,不支援轉換作業之外其餘皆支援。)

  • Windows Vista Enterprise
  • Windows 7 Enterprise、Professional、Ultimate
  • Windows 8/8.1 Enterprise、Professional
  • Windows Server 2008/2008 R2 Standard、Enterprise、Datacenter
  • Windows Server 2012/2012 R2 Standard、Datacenter
  • RHEL/CentOS 5、6
  • Ubuntu 10.01/12.04
  • SUSE Linux Enterprise Server 11(SP2 and SP3)
  • Debian 7
  • Oracle Linux 5、6


在實作將 VMware vSphere 虛擬化平台上的VM虛擬主機進行轉換以前,還有下列需求必須滿足或注意,以避免屆時進行 V2V 轉換作業時遭遇到問題:

  • 若 VMware VM 虛擬主機為 Windows Server 2012 R2 作業系統,則 VMware 虛擬化平台必須為 ESXi 5.5 版本。
  • 若 VMware VM 虛擬主機為 SUSE 11 SP2/SP3 版本,或 RHEL/CentOS/Oracle Linux 5.8 版本,則必須安裝 Linux 作業系統的整合服務 LIS(Linux Integration Services),並且須要修改核心設定檔內容。
  • VMware VM 虛擬主機(Windows/Linux),若要進行線上(Online)轉換作業,則必須要安裝 VMware Tools
  • VMware VM 虛擬主機,若為 Windows 作業系統則必須加入 Windows AD 網域環境。
  • VMware VM 虛擬主機以及 Hyper-V 虛擬化平台,防火牆設定必須開啟「遠端存取 WMI(Windows Management Instrumentation)」規則,以及「檔案及印表機共用(File and Printer Sharing)」規則,否則將會導致連接驗證作業失敗(如圖 2 所示)。
  • 執行 VMware VM 虛擬主機轉換作業的使用者帳戶,必須具備 Windows AD 網域以及本機 Administrator 權限才行。
  • V2V 轉換作業中所指定的 UNC 分享路徑,所輸入的使用者帳戶必須具備完整的寫入權限。且提供轉換運作的 Hyper-V 虛擬化平台,必須具備足夠的硬碟空間、CPU、Memory 等硬體資源。
  • 如果被轉換的 VMware VM 虛擬主機具備多台 DVD 光碟機,那麼將只會轉換第一台光碟機並且忽略其它台光碟機。若有多顆硬碟時,則 Boot Disk 將會轉換成 IDE-Based VHD,其它硬碟則轉換成 SCSI VHDs
  • 目前僅支援轉換 VMware VM 虛擬主機開機韌體為 BIOS 格式,尚未支援 EFI 格式(如圖 3 所示)。
  • VMware VM 虛擬主機若為 Linux 作業系統,請確認已經啟用 SSH (Port 22)服務並且防火牆規則也允許通過,同時必須採用 root 超級使用者帳號(目前尚未支援 su 及 sudo 驗證機制)。若要轉換至 Microsoft Azure 公有雲環境則建議在轉換作業之前,先移除 /etc/udev/rules.d/70-persistent-net.rules 檔案及 NetworkManager 套件。

圖 2、VMware VM 虛擬主機未開啟 WMI 防火牆規則,導致連接失敗

圖 3、MVMC 目前尚未支援 VMware VM 虛擬主機開機韌體為 EFI 格式





5、MVMC 圖形介面轉換

Hyper-V 虛擬化平台前置作業

在開始進行 V2V 轉換之前,請先將 Hyper-V 主機 Windows Management Instrumentation(WMI)以及檔案及印表機共用的防火牆規則開啟(如圖 4 所示),以避免稍後執行轉換作業進行連接時發生失敗導致無法轉換的情況。

圖 4、開啟 WMI、檔案及印表機共用防火牆規則

接著,在 Hyper-V 主機中設定分享資料夾,以便稍後將轉換後的 VMware VM 虛擬主機存放到此分享資料夾當中,此實作環境中我們設定的 UNC 分享路徑為「\\2012r2.weithenn.org\VMs」,實體主機上的資料夾路徑為「C:\Shares\VMs」(如圖5所示)。

圖 5、分享資料夾路徑

VMware VM 虛擬主機前置作業

首先,實作 V2V 轉換的 VMware VM 虛擬主機,作業系統為 Windows Server 2008 R2 並在上面啟動 IIS 網頁服務(如圖 6 所示),以便稍後轉換到 Hyper-V 虛擬化平台之後,我們可以驗證 IIS 網頁服務是否能繼續運作。

圖 6、VMware VM 虛擬主機啟動 IIS 網頁服務

當然 V2V 轉換來源端 VMware VM 虛擬主機,也必須要確認已經啟動 WMI(Windows Management Instrumentation)服務(TCP Port 135),以及檔案及印表機共用服務(TCP Ports 139/445、UDP Ports 137/138),除了確認系統服務有啟動之外也必須記得允許能夠通過防火牆(如圖 7 所示),以避免稍後轉換工具進行連接時發生失敗導致無法轉換的情況。

圖 7、VMware VM 虛擬主機,也請開啟相關防火牆規則以避免轉換失敗

執行 V2V 轉換作業

將來源端 VMware VM 虛擬主機,以及目的端 Hyper-V 虛擬化平台前置作業設定完畢後,接著便可以放心執行 V2V 的轉換作業了,在開始轉換以前若 VMware VM 虛擬主機為線上運作(Online VM)狀態,則必須確認已經安裝了 VMware Tools(Running),在轉換過程中 MVMC 會自動進行 VMware Tools 的反安裝程序。若 VMware VM 虛擬主機為關機狀態(Offline VM),則建議你先手動為 VM 虛擬主機執行 VMware Tools 的反安裝作業。

圖 8、確認運作中的 VM 虛擬主機已經安裝 VMware Tools

相關環境及前置作業完成後,便可以在 Hyper-V 主機上執行 MVMC 圖形介面轉換工具,當您執行 MVMC 工具時,因為支援轉換至 Hyper-V 虛擬化平台以及 Microsoft Azure 公有雲,所以會詢問您此次的轉換作業要採用哪一種方式,我們先選擇「Migrate to Hyper-V」項目。

圖 9、選擇 Migrate to Hyper-V 項目

在 Hyper-V Host 頁面中,請輸入 Hyper-V 虛擬化平台的主機名稱或 IP 位址,以及具備存取權限的網域使用者帳戶。

圖 10、輸入 Hyper-V 主機及管理者帳號密碼

Disk 頁面中,請選擇 Hyper-V 主機所設定的 UNC 分享路徑,以及您希望將虛擬硬碟檔案轉換成「固定大小(Fixed size)」或「動態大小(Dynamically expanding)」,並且採用的硬碟格式為舊有的 VHD 或新的 VHDX 格式。

圖 11、選擇 UNC 分享路徑及虛擬硬碟格式

Source 頁面中,請輸入 VMware vSphere 虛擬化平台資訊,如果是單機環境便直接輸入 ESX/ESXi 主機資訊,若是由 vCenter Server 統一控管的話請輸入連接到 vCenter 的資訊。此次實作環境為單機運作的 VMware vSphere ESXi 5.5 環境,因此直接輸入 ESXi 主機位址「esxi55.weithenn.org」,以及管理者帳號 root 及密碼(如圖 12 所示)。

圖 12、輸入 ESXi 主機及管理者帳號密碼

Virtual Machines 頁面中,成功連接並通過驗證程序後你會看到 VMware 虛擬化平台上,所有的 VM 虛擬主機清單,請選擇此次實作 V2V 轉換的 VM 虛擬主機「WS2008R2」(如圖13所示)。

圖 13、選擇 V2V 轉換的 VM 虛擬主機

Virtual Machine Connection 頁面中,請輸入具備 Windows AD 網域及本機  Administrator 權限的使用者帳戶,同時你可以設定當 V2V 轉換作業完畢之後是否要將來源端 VM 虛擬主機,直接關機(以方便新的 VM 虛擬主機接手),或者進行開機(以便驗證新的VM虛擬主機服務沒問題後再接手)等設定(如圖14所示)。

  • Final state of source virtual machine: V2V 轉換作業完畢後,來源端 VMware vSphere  的 VM 虛擬主機是否開機(On 為開機、Off 為關機)。
  • Final state of destination virtual machine: V2V 轉換作業完畢後,目的端 Hyper-V 的 VM 虛擬主機是否開機(On 為開機、Off 為關機)。

圖 14、設定 V2V 轉換作業完畢後,來源或目的端 VM 虛擬主機是否開機

在 Workspace 頁面中,請選擇在 MVMC 轉換工具主機當中的暫存資料夾,此暫存資料夾為屆時將 VMware VM 虛擬主機的虛擬硬碟檔 .vmdk,轉換成 Hyper-V VM 虛擬主機虛擬硬碟檔 .vhd/.vhdx 過程中的暫存路徑,建議此暫存資料夾的空間應該要等於或大於 .vmdk 檔「二倍」,舉例來說,若 .vmdk 檔為 40 GB 那麼暫存資料夾至少應具備 80 GB 空間比較保險。

圖 15、指定虛擬硬碟檔轉換暫存資料夾

相關資訊確認無誤之後,只要按下 Finish 鈕便會立即進行 VMware VM 虛擬主機的轉換作業。當開始執行 V2V 轉換作業後,您可以同時開啟 vSphere Client 以及 MVMC 轉換工具,以便觀察整個 V2V 轉換過程:

     1. Create snapshot: 為該台 VMware VM 虛擬主機,執行建立「快照(Snapshot)」的動作(輸入 vCenter Server 或 ESXi 管理者資訊的原因)。
     2. Uninstall tools: 移除該台 VMware VM 虛擬主機中的 VMware Tools (輸入該 VM 管理者資訊的原因)。
     3. Convert disk(s): 將 VMware VM 虛擬主機執行「關機(Shutdown)」的動作後,執行「匯出(Export OVF template)」動作,並且進行虛擬磁碟轉換的動作(.vmdk -> .vhd/.vhdx),同時寫入到剛才指定的暫存資料夾 C:\MVMC-Temp 當中(此時 MVMC 主機網路流量將會爆增)。
     4. Restore snapshot: 完成虛擬磁碟轉換任務後,針對 VMware VM 虛擬主機執行「還原 > 移除」快照的動作,以便還原至 V2V 轉換前的運作狀態。
     5. Analyze disk(s): 檢查虛擬磁碟及相關檔案經過轉換程序後,格式是否符合 Hyper-V 虛擬化平台。
     6. Copy disk(s): 將轉換後的 .vhd /.vhdx 虛擬硬碟,複製到先前指定的 UNC 分享路徑中。
     7. Provision Hyper-V guest: 建立 Hyper-V VM 虛擬主機相關設定檔,並且依照此次實作的設定將 VMware VM 虛擬主機「關機」(來源端),而 Hyper-V VM 虛擬主機「開機」(目的端)。

圖 16、VMware VM 虛擬主機 V2V 轉換流程

此次實作所轉換的 VMware VM 虛擬主機,為 Windows Server 2008 R2 SP1 作業系統,運作在最新版本 Hyper-V 3.0 R2 虛擬化平台上,所以 VM 虛擬主機需要「升級」整合服務版本,若是運作在舊版 Hyper-V 2.0 虛擬化平台則不需要安裝或升級整合服務版本。

當 VM 虛擬主機開機完成後,您會看到在摘要頁籤中活動訊號欄位其狀態為「良好(無應用程式資料)」,表示 Hyper-V 虛擬化平台已經可以偵測 VM 虛擬主機運作狀態,但是在網路功能頁籤中您會看到網路介面卡狀態為「已降級(需要整合服務升級)」的提示訊息,表示必須要「升級」整合服務以達到最佳化運作狀態。此外,若您登入作業系統開啟裝置管理員後,您可以看到有「無法辨識的裝置」,且網路介面卡名稱為「Microsoft 虛擬機器匯流排網路介面卡」。

請在 VM 虛擬主機所開啟的 Console 視窗中,依序點選「動作 > 插入整合服務安裝光碟」準備升級整合服務版本,當 Hyper-V 整合服務升級完畢後會提示您重新啟動主機以套用生效,請按下「是」鍵確認即可,重新啟動主機登入作業系統後,開啟裝置管理員您可以看到已經沒有任何無法辨識的裝置,且網路介面卡名稱變更為「Microsoft Hyper-V 網路介面卡」,回到  Hyper-V 管理員視窗中您會看到,在摘要頁籤中活動訊號欄位其狀態變更為「良好(應用程式健康情況良好)」,整合服務欄位由先前的空白變成「同步完成」。

圖 17、VM 虛擬主機升級整合服務

此外,您必須要重新設定及套用網路資訊,因為 VM 虛擬主機網路卡的 MAC 已經改變,在 VMware 虛擬化平台中 MAC Address 為 00-0C-29-xx-xx-xx,而 Hyper-V 虛擬化平台中 MAC Address 為 00-15-5D-xx-xx-xx。當然,在重新設定 VM 虛擬主機的網路功能後,便能順利連接到 IIS 網路服務頁面。

圖 18、重新設定及套用網路資訊

轉換至 Microsoft Azure

原則上,與轉換至 Hyper-V 虛擬化平台的動作大同小異,但是需要加入「憑證(Certificate)」的部份,以便處理與 Microsoft Azure 的溝通驗證機制。簡單來說,整個 V2V 轉換流程是將 VMware VM 虛擬主機,其虛擬硬碟轉換成 VHD 虛擬磁碟格式後,上傳至 Microsoft Azure Blog Storage 儲存體,接著就可以掛載 VHD 虛擬磁碟並建立 Azure 虛擬主機。

請在 Hyper-V 主機下載 Windows Software Development Kit for Windows 8.1,並且 僅 安裝「Windows Software Development Kit」項目即可。接著,便可以利用 makecert.exe 指令「makecert.exe –r –pe –n CN= "Azure MVMC Certificate" –ss AzureMVMC-CA –sr LocalMachine –eku 1.3.6.1.5.5.7.3.2 –len 2048 –e 12/31/2016 –sky Exchange AzureMVMC.cer –sv AzureMVMC.pvk」,在 Private Key Password 視窗中按下 Node 鈕後,產生 AzureMVMC.cerAzureMVMC.pvk 憑證檔案。

然後,再輸入指令「pvk2pfx.exe –pvk AzureMVMC.pvk –spc AzureMVMC.cer –pfx AzureMVMC.pfx」,產生要匯入 Hyper-V 主機個人區的 AzureMVMC.pfx 憑證檔案。

圖 19、產生匯入 Hyper-V 主機以及上傳至 Microsoft Azure 的憑證檔案

請依序點選「開始 > 執行 > mmc > 檔案 > 新增/移除嵌入式管理單元 > 憑證 > 新增 > 我的使用者帳戶」,然後切換到「憑證-目前的使用者 > 個人 > 憑證 > 所有工作 > 匯入」,將剛才產生的 AzureMVMC.pfx 憑證檔案匯入。接著,切換到「憑證-目前的使用者 > 受信任的根憑證授權單位 > 憑證 > 所有工作 > 匯入」,將剛才產生的 AzureMVMC.cer 憑證檔案匯入。

圖 20、匯入 AzureMVMC.pfx 憑證至個人區,匯入 AzureMVMC.cer 憑證至受信任的根憑證授權單位

接著,便可以登入 Azure Portal 管理介面,依序點選「設定 > 管理憑證 > 上傳」,將剛才產生的 AzureMVMC.cer 憑證進行上傳,以供後續驗證時使用。

圖 21、上傳 AzureMVMC.cer 憑證至 Microsoft Azure

最後,便可以執行 V2V 轉換作業,此次請選擇「Migrate to Windows Azure」項目。在 Azure Connection 頁面中,請填入您的 Azure 訂用帳戶 ID(Subscription ID),以及剛才產生的 AzureMVMC.cer 憑證指紋(Certificate Thumbprint)即可。若剛才憑證部份未處理好(例如 未匯入受信任的根憑證授權單位),那麼在此操作步驟便會發生驗證失敗的問題(詳細資訊請參考 Microsoft KB 2977336)。

圖 22、Hyper-V 主機憑證部份未處理好,造成與 Azure 驗證溝通失敗

在 Azure Configuration 頁面中,會顯示您目前在 Azure 帳戶中所建立的 Storage Account,以及所佈署的資料中心,以便稍後將轉換後的 .vhd 虛擬磁碟檔案上傳至該儲存體帳戶,後續的互動設定過程便與剛才轉換到 Hyper-V 虛擬化平台相同。

圖 23、選擇轉換後的 .vhd 虛擬磁碟檔案上傳至該儲存體帳戶

完成後,在 Azure Portal 管理介面中,便可以依序點選「新增 > 計算 > 虛擬機器 > 從組件庫」,在選擇映像頁面中點選「我的磁碟」項目,就會看到剛上所轉換上傳的 .vhd 虛擬磁碟,便可以利用它來建立 Azure 虛擬主機。

圖 24、利用轉換後所上傳的 .vhd 虛擬磁碟建立 Azure 虛擬主機





6、PowerShell 指令介面轉換

您也可以透過 PowerShell 來達成 V2V 或虛擬磁碟格式轉換作業,請先執行 Import-Module 指令匯入「MvmcCmdlet.psd1」模組,之後便可以利用指令「ConvertTo-MvmcVirtualHardDisk –SourceLiteralPath "C:\MVMC-Temp\WS2012R2\WS2012R2.vmdk"」,將虛擬磁碟格式進行轉換作業(.vmdk -> .vhd/.vhdx),後續便可以掛載至 Hyper-V 虛擬化平台中的 VM 虛擬主機進行運作(相關指令內容請參考 MVMC_cmdlets 文件)。

圖 25、利用 PowerShell 轉換虛擬磁碟格式 (.vmdk -> .vhd/.vhdx)





7、結語

經過本文的說明及實作後,相信讀者可以利用微軟所發佈的 V2V 轉換工具,透過 MVMC 圖形化介面轉換工具,輕鬆將 VMware vSphere 虛擬化平台上原本運作的 VM 虛擬主機,快速且無縫的轉換到 Hyper-V 2.0/3.0 虛擬化平台上,或者是 Microsoft Azure 公有雲環境繼續運作。