101 期 - Hyper-V 3.0 無痛升級 R2 幫現役虛擬主機換新家


網管人雜誌

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





文章目錄

1、前言
2、實作環境
3、版本升級及遷移機制
          就地升級(In-Place Upgrade)
          跨版本即時遷移(Cross version Live Migration)
          匯出 / 匯入(Export and Import)
          複製容錯移轉叢集角色(Copy Cluster Role Wizard)
4、遷移機制適用情境
5、實作就地升級機制
          確認目前的運作版本
          執行版本升級作業程序
          確認版本是否更新
          VM 建立日期 1601/1/1 ?
6、實作跨版本即時遷移機制
7、結語





1、前言

Microsoft 於 2012 年 10 月所發行的 Windows Server 2012 作業系統當中,已經演變為成熟的第三代版本 Hyper-V 3.0 虛擬化技術,隔年在 2013 年 6 月 TechEd 2013 大會上,發佈 Windows Server 2012 R2 的技術預覽版本(Preview Version),並且於 2013 年 10 月正式發行 Windows Server 2012 R2 雲端作業系統(Cloud OS)。

圖 1、Windows Server 2012 R2 雲端作業系統平台示意圖

正式發行的 Windows Server 2012 R2 雲端作業系統,其 Hyper-V 虛擬化功能除了將原有功能優化增強之外,還多了許多亮眼新功能,例如,第二代虛擬主機(Generation 2 VM)、加強的工作階段模式(Enhanced Session Mode)、自動化虛擬主機授權啟用(Automatic Virtual Machine Activation,AVMA)...等。

然而,對於已經運用 Windows Server 2012 建立 Hyper-V 3.0 虛擬化平台的企業或組織來說,首當其衝的便是如何進行「版本升級」的動作,因為 Hyper-V 3.0 虛擬化平台其上已經有 VM 虛擬主機正在運作中,並且為企業或組織提供營運所需服務。

本文將說明及實作,如何將原有的 Windows Server 2012 升級為 Windows Server 2012 R2,也就是將 Hyper-V 3.0 虛擬化平台,其功能版本推升到 Hyper-V 3.0 R2 虛擬化平台,當然屆時的 VM 虛擬主機也將更新整合服務版本,以便與最新的 Hyper-V 3.0 R2 虛擬化平台緊密整合在一起。





2、實作環境






3、版本升級及遷移機制

當您採用 Windows Server 2012 擔任 Hyper-V 虛擬化平台後,不應該在 Hyper-V 主機上安裝及設定其它伺服器角色,例如,AD、DNS、DHCP...等網路服務,所以升級版本的動作通常不需要考慮與其它伺服器角色相依的問題。

Hyper-V 角色的遷移作業,所涉及到的層面包括 VM 虛擬主機、虛擬網路、整合服務版本...等,至於移轉 Hyper-V 角色所需的時間長度,取決於要傳輸資料量的相關大小,例如,VM 虛擬主機的記憶體大小,以及 VM 虛擬主機硬碟檔 VHD/VHDX 檔案(可能從幾 GB 甚至到幾 TB),同時還要視運作環境當中網路頻寬大小而定,這些相關因素都將影響遷移時間。

目前共有四種方式,可升級 Hyper-V 主機版本並遷移 VM 虛擬主機:
  • 就地升級 (In-Place Upgrade)
  • 跨版本即時遷移 (Cross version Live Migration)
  • 匯出 / 匯入 (Export and Import)
  • 複製容錯移轉叢集角色(Copy Cluster Role Wizard)


就地升級(In-Place Upgrade)

  • 優點: 不需要額外採購新的硬體伺服器,直接以原機升級版本的方式進行。
  • 缺點: 在進行 Windows Server 2012 升級為 Windows Server 2012 R2的過程中,Hyper-V 虛擬化平台上所運作的 VM 虛擬主機必須要關機,也就是說此時相關的服務是中斷的情況。


跨版本即時遷移(Cross version Live Migration)

  • 優點: 運作中的 VM 虛擬主機,可以從 A 主機/叢集 線上不中斷的遷移到 B 主機/叢集,此時 VM 虛擬主機上所提供的服務不中斷。同時若 VM 虛擬主機的儲存資源擺放在共用儲存,例如,CSV(Cluster Shared Volumes)或 Scale-Out File Server 當中,那麼便不需要將 VHD/VHDX 虛擬主機磁碟(Virtual Hard Disk)進行「複製」的動作,有效減少 VM 虛擬主機遷移及 Hyper-V 主機版本升級所花費的時間。
  • 缺點: 需要採購額外的硬體伺服器並預先安裝 Windows Server 2012 R2,並且進行 Hyper-V 虛擬化平台環境設定如 虛擬交換器、即時移轉、存放裝置移轉...等,以便屆時能將 VM 虛擬主機的運算及儲存遷移過來的 VM。


匯出 / 匯入(Export and Import)

  • 優點: 進行遷移動作後的 VM 虛擬主機無須其它設定動作,因為執行匯出動作時將包含 VM 虛擬主機的完整資訊,例如,設定檔(Congigurations)、虛擬網路(Virtual Network)、虛擬磁碟(Virtual Hard Disk)...等。
  • 缺點: 需要採購額外的硬體伺服器並預先安裝 Windows Server 2012 R2,並進行 Hyper-V 虛擬化平台初始設定如 虛擬網路...等,但舊有的 Hyper-V 虛擬化平台 VM 虛擬主機必須「關機(Shutdown)」,接著才能執行「匯出(Export)」的作業程序,當匯出動作完成後還需要移動或複製到新的 Hyper-V 3.0 R2 虛擬化平台中,進行「匯入(Import)」的動作,並且在匯出/匯入期間服務都是中斷的狀態。此外,若 VM 虛擬主機有設定 Hyper-V Replica 複寫機制,則必須於匯入後「重新啟用(Re-Enabled)」Hyper-V Replica機制。


複製容錯移轉叢集角色(Copy Cluster Role Wizard)

  • 優點: 協助您輕鬆由 Windows Server 2012 容錯移轉叢集架構,快速升級成 Windows Server 2012 R2 容錯移轉叢集架構,版本升級前的「複製叢集角色(Copy Cluster Roles)」作業程序,並不會影響線上服務及運作,並且在版本升級過程中若遭遇到任何問題,隨時可以進行「回復(Process is Reversible)」作業。
  • 缺點: 需要採購額外的硬體伺服器安裝 Windows Server 2012 R2,並進行 Hyper-V 虛擬化平台初始設定如 虛擬網路...等,身處在同一個 CSV(Clustered Shared Volume) 當中的 VM 虛擬主機,將會「一起」進行遷移的動作且 VM 虛擬主機需要「短暫」的停機時間。此外,Copy Cluster Wizard 的作業程序中,並不會複製 Hyper-V Replica 設定到升級後的容錯移轉叢集當中,因此您必須要重新啟用 Hyper-V Replica 機制。





4、遷移機制適用情境

了解剛才所述的四種版本升級及遷移機制後,您應該發現有些遷移機制適合「單機(Standalone)」環境,有些則適合用於「容錯移轉叢集(Failover Cluster)」環境,而其中也取決於您可以接受多少的「停機時間(Downtime)」。

圖 2、四種遷移機制所適用的運作環境建議





5、實作就地升級機制

若您的 Hyper-V 虛擬化平台為 單機 運作環境,也就是僅用於「伺服器整併(Server Consolidation)」用途,裡面可能就運作幾台 VM 虛擬主機,可能擔任測試、研發或比較無關緊要的線上服務,此時便適合使用「就地升級(In-Place Upgrade)」的方式,將原本的 Windows Server 2012 或 Hyper-V Server 2012 升級為 R2 版本。

當然,任何版本升級或更新動作都會有一定的風險,因此建議你執行就地升級之前應該備份 Hyper-V Host,以及 VM 虛擬主機等相關設定及檔案後再進行版本升級的動作。此外,在採用 In-Place Upgrade 方式進行版本升級以前,請將其上運作的 VM 虛擬主機進行「關機(Shutdown)」,雖然版本升級機制也支援在升級過程中 VM 虛擬主機為「儲存 (Saved Stated)」狀態,除了過程會收到警告訊息之外,實務上也不建議您如此進行版本升級的動作。



確認目前的運作版本

請採用具備本機管理員權限的帳號登入 Hyper-V 主機,在開始執行就地升級的動作以前,我們先確認目前運作環境的相關資訊,此實作環境中所採用的 Hyper-V 虛擬化平台為 Windows Server 2012 Datacenter 版本,以及目前系統磁碟 C : 的狀態,並請開啟命令提示字元後鍵入指令「winver」或「systeminfo」,以便查看目前 Windows Server 2012 的版本此實作環境為「版本 6.2 組建 9200」,以便稍後升級完成後進行比對。

圖 3、目前的運作環境以及系統磁碟 C : 狀態

接著,開啟 Hyper-V 管理員後確認目前的 Hyper-V 運作版本,請依序點選「說明 > 關於 Hyper-V 管理員」項目,此實作環境中 Hyper-V 管理員版本為「6.2.9200.16384」。

圖 4、目前的 Hyper-V 管理員版本為 6.2.9200.16384

目前其上所運作 VM 虛擬主機,也安裝 Windows Server 2012 並具備最新版本的「整合服務(Integration Services)」,您可以「手動登入」每一台 VM 虛擬主機,開啟裝置管理員後查看「Microsoft Hyper-V 網路介面卡」的驅動程式版本,便可以得知整合服務版本 6.2.9200.16384

圖 5、手動登入每一台 VM 虛擬主機查詢整合服務版本

或者在 Hyper-V 虛擬化平台上開啟 PowerShell,鍵入「Get-VM | Format-Table Name, IntegrationServicesVersion」指令(採用 Format-List 參數,可以改變輸出格式),便可以一次查詢「所有」運作於其上的 VM 虛擬主機整合服務版本。(請注意!! VM 虛擬主機必須為「開機(Power On)」狀態,才能順利偵測並得知其整合服務版本。)

圖 6、採用 PowerShell 指令一次得知所有 VM 虛擬主機整合服務版本



執行版本升級作業程序

請將 Hyper-V 虛擬化平台上所有的 VM 虛擬主機關機後,插入 Windows Server 2012 R2 安裝光碟,並執行 setup.exe 執行檔案此時將彈出 Windows 安裝程式視窗,請按下「立即安裝」鈕,進入Windows Server 2012 R2 版本升級程序。

若您的 Hyper-V 虛擬化平台可以連線至網際網路,請選擇「立即上線安裝更新」項目,那麼在稍後的版本更新程序中,將會「自動」至 Windows Update 下載最新安全性更新及相關驅動程式,若 Hyper-V 主機無法接觸網際網路,則請選擇「不,謝謝」項目稍後版本升級完畢後在透過內部 WSUS 或其它方式進行更新。

圖 7、選擇立即上線安裝更新項目,以便自動下載最新更新檔及驅動

當相關安全性更新及驅動下載完畢後,便彈出「輸入產品金鑰以啟用 Windows」頁面,請輸入您所購買的 Windows Server 2012 R2 軟體授權金鑰。接著選擇「您要安裝的作業系統」也就是要採用「Server Core」(安裝預設值)或「Server 含 GUI」,此實作選擇 Server 含 GUI 項目後,按下一步鈕繼續版本升級程序。

接著為「授權條款」頁面,請勾選「我接受授權條款」項目後,按下一步鈕繼續版本升級程序。在「您要哪一種安裝類型」頁面中,請選擇「升級:安裝 Windows 並保留檔案、設定與應用程式」項目。若選擇自訂項目的話,等同於「重新安裝」作業系統那麼 Hyper-V 主機,原有的固定 IP 將變成  DHCP 自動取得、電腦名稱也變成隨機、若有加入網域也會退出網域...等。

圖 8、選擇升級項目

此時,將會檢查相容性並呈現在「相容性報告」頁面,並自動將相容性報告 HTML 檔案儲存在桌面上,若此次的相容性報告內容有任何的重大警告或錯誤訊息,您應該中斷版本升級程序將問題修復後再次執行版本升級程序,確認無誤後按下一步鈕繼續版本升級程序。

此時,將開始進行升級 Windows 的作業程序,您將會發現此版本升級作業會作業一段時間後便重新啟動,整個版本升級作業主機總共會「重新啟動三次」。

圖 9、版本升級作業主機總共會重新啟動三次



確認版本是否更新

當 Hyper-V 主機重新啟動後,首先確認版本升級程序是否成功,採用具有管理者權限帳號登入後,Windows 版本順利由原本的 Windows Server 2012 Datacenter,升級為 Windows Server 2012 R2 Datacenter,而版本也由原本的 6.2(組建 9200)升級為「6.3(組建 9600)」。此外,若輸入「systeminfo」指令查詢作業系統版本資訊時,也可在下方 Hotfix 欄位發現在剛才的版本升級程序中,也安裝了三個最新的 Hotfix。

圖 10、順利升級為 Windows Server 2012 R2 Datacenter 版本 6.3(組建9600)

開啟檔案總管查看系統磁碟 C: 內容,您可以發現「原本 C:\」 的「PerfLogs、Program Files、Program Files(x86)、Windows、使用者」資料夾,都被移動到「C:\Windows.old」資料夾當中。

圖 11、原本的系統相關資料夾都移動至 C:\Windows.old 資料夾當中

接著,開啟 Hyper-V 管理員後確認目前的 Hyper-V 運作版本,請依序點選「說明 > 關於 Hyper-V 管理員」項目,此實作環境中 Hyper-V 管理員版本由原本的 6.2.9200.16384,升級為「6.3.9600.16384」。

圖 12、Hyper-V 管理員版本升級為 6.3.9600.16384

當然,您可以檢查 Hyper-V 主機的其它設定,例如,IP 位址、電腦名稱、網域...等,這些系統及網路設定都保持在原來的狀態,此外 Hyper-V 的相關設定如 虛擬網路交換器...等設定也保持在原來的狀態。接著,請將 VM 虛擬主機進行「啟動(Power On)」的動作,此時再 Hyper-V 管理員中,您可以看到 VM 虛擬主機當中的「整合服務」欄位,顯示的資訊為「需要更新」表示 Hyper-V Hypervisor,偵測到其上運作的 VM 虛擬主機整合服務為舊版本。

圖 13、Hyper-V Hypervisor 偵測到 VM 虛擬主機整合服務為舊版本

請連線至 VM 虛擬主機 Console 視窗,依序點選工作列上的「動作 > 插入整合服務安裝光碟」項目,接著點選「安裝 Hyper-V 整合服務」項目,此時將彈出升級 Hyper-V 整合服務視窗,請按下確定鈕進行整合服務版本升級作業。安裝完新版本的整合服務後,系統將提醒您必須重新啟動主機才能套用生效,請按下「是」鈕將主機重新啟動。

圖 14、確認進行整合服務版本升級作業並重新啟動

當 VM 虛擬主機重新啟動完成後,此時在 Hyper-V 管理員中其整合服務的欄位,將由原本舊版的「需要更新」轉變成「同步完成」,表示目前該 VM 虛擬主機整合服務是最新版本,並與底層 Hyper-V Hypervisor 有最緊密的結合。

圖 15、VM 虛擬主機整合服務升級完成

您也可以在 Hyper-V 虛擬化平台上開啟 PowerShell,鍵入「Get-VM | Format-Table Name, IntegrationServicesVersion」指令,再次查詢所有運作於其上的  VM 虛擬主機整合服務版本。

圖 16、再次查詢 VM 虛擬主機整合服務版本以確認更新狀態



VM 建立日期 1601/1/1 ?

您可能已經發現一個怪異的情況,就是在 Hyper-V 管理員中 VM 虛擬主機的建立日期,竟然會變成「1601/1/1 上午 8 :00 :00」奇怪的時間點? 根據 Hyper-V Team 的 Senior Program Manager – John Howard,在一則 TechNet Forums 討論串中表示這是「已知臭蟲(Known Bug)」所造成的情況。

圖 17、VM 虛擬主機的建立日期為 1601/1/1 上午 8 :00 :00

在相關的修復檔案尚未發佈以前,您可以利用手動的方式來解決這怪異的情況,請開啟 Hyper-V 管理員,在右方的「動作」窗格中點選「停止服務」(您也可以在命令提示字元中輸入 net stop vmms 指令),接著在彈出的停止虛擬機器管理服務視窗中點選「關閉」鈕,接著再按下動作格式中的「啟動服務」鈕(或採用 net start vmms 指令),此時您可以發現 VM 虛擬主機的建立日期欄位恢復正確。事實上,在 Hyper-V 虛擬機器管理服務(Hyper-V Virtual Machine Management Service),進行「停止/啟動」服務的時間,僅僅無法進行「管理」的動作而以,並不會影響到 VM 虛擬主機的運作(服務不中斷)。

圖 18、VM 虛擬主機的建立日期恢復正常為 2014/4/26 下午8 :00 :31





6、實作跨版本即時遷移機制

前述就地升級方式雖然簡單方便,但是 Hyper-V 虛擬化平台上的 VM 虛擬主機必須關機,也代表著線上服務是中斷的狀態,並且在版本升級期間及一開始的相關確認動作也無法提供服務,那麼有沒有更好的方法可以降低,或是能夠讓 VM 虛擬主機不停止服務而完成版本升級的動作。

您可以透過「跨版本即時遷移(Cross Version Live Migration)」機制達成,簡單來說若您的虛擬化環境中平時負載就不重,那麼您可以先把其中一台 Hyper-V 主機中所有的 VM 虛擬主機遷出,接著進行「就地升級(In-Place Upgrade)」或「全新安裝(Clean Installation)」。

此時,運作環境中有一台為新版的 Windows Server 2012 R2 主機,而其它主機為舊版的 Windows Server 2012,雖然新舊版本所採用的通訊協定有所差異,但是跨版本即時遷移機制允許您「從舊版」的 Windows Server 2012主機中,將 VM 虛擬主機「遷移到新版」的 Windows Server 2012 R2 主機當中,並且過程中不會有任何警告或錯誤,也不會影響到線上運作的 VM 虛擬主機。

圖 19、舊版 Windows Server 2012 遷移 VM 至新版 Windows Server 2012 R2 主機

不過你應該已經發現,一旦把 VM 虛擬主機遷移至新版的 Windows Server 2012 R2 虛擬化平台後,便無法遷移回舊版的 Windows Server 2012 平台中,並得到「通訊協定版本不受支援」的錯誤訊息。

圖 20、運作在新版虛擬化平台的 VM 虛擬主機,無法遷移回舊版虛擬化平台

目前的實作環境中有二台 Windows Server 2012 虛擬化平台主機,首先將 VM 虛擬主機遷移至 Node 1 主機,而 Node 2 主機利用就地升級的方式進行版本更新。若您環境當中並無法空出一台 Hyper-V 主機,請額外採購一台硬體伺服器並且進行相關的環境設定如 設定固定 IP 位址、改變電腦名稱、加入網域、設定委派服務、啟用即時移轉機制...等事宜。

順利將 Node2 主機就地升級或進行全新安裝,成為新版的 Windows Server 2012 R2 虛擬化平台後,便可以實作跨版本即時遷移機制,其實就是執行「無共用儲存即時遷移(Shared-Nothing Live Migration)」機制,所以實作以前請再次檢查主機的委派服務是否正確。因為我們現在要將 VM 虛擬主機由 Node1 遷移至 Node2 主機,因此必須要確認 Node2 主機允許 Node1 主機相關的委派服務。

請注意!! cifs 服務類型為遷移 VM 虛擬主機的「儲存資源」,而 Microsoft Virtual System Migration Service 則是遷移 VM 虛擬主機的「記憶體狀態」。

圖 21、Node2 主機允許 Node1 主機相關的委派服務

完成確認動作後,便可以在 Hyper-V 管理員視窗中點選 Node1 主機的 VM 虛擬主機,在右鍵選單中選擇「移動」項目,在選擇移動類型頁面中選擇「移動虛擬機器」項目,接著指定 Node2 主機的電腦名稱,並選擇「將虛擬機器的資料移動到單一位置」後,指定將 VM 虛擬主機存放於 Node2 主機的儲存路徑(此實作為 C:\VM),最後按下完成鈕進行 VM 虛擬主機的遷移作業。

圖 22、執行跨版本即時遷移

如果 Node2 主機您採用與本文相同就地升級的方式,並在別台主機有開啟 Hyper-V 管理員統一連線管理 Node1、Node2 主機時,雖然可以順利管理但是 VM 遷移到 Node2 主機後,您將會發現「無法開啟」VM虛擬主機的 Console 視窗,造成的原因是 Hyper-V 管理員仍用舊版的連接方式去連接 Node 2 主機,只要將 Hyper-V 管理員關閉後「重新開啟」進行連接即可解決。

圖 23、Hyper-V 管理員仍用舊版的連接方式產生錯誤





7、結語

本文透過說明及實作就地升級以及跨版本即時遷移機制,期望能幫助讀者將 Hyper-V 主機無痛進行版本升級,並且將 VM 虛擬主機進行無縫遷移,後續文章中將會再與大家分享在叢集移轉叢集環境中,該如何進行版本升級作業。