深度探討微軟與 Linux 合作模式 ( 二 ):探討 Hyper-V 的關鍵技術

微軟如何與 Linux 合作模式系列

1. 深度探討微軟與 Linux 合作模式 ( 一 ):運行在 Hyper-V 上的 Linux 與 FreeBSD

在此篇文章中,您可以看到:


初步介紹

這篇文章是有關於如何在私有資料中心上,利用 Hyper-V 運行與管理 Linux 以及 FreeBSD。先前的系列文章可以在下面的連結找到:

l  Microsoft Love Linux

l  深度介紹微軟如何與 Linux 及 FreeBSD 有更親密的結合(一): 運行在 Hyper-V 上的 Linux 與 FreeBSD

 鼓勵大家若尚未閱讀前述文章,請先行閱讀了解。

Hyper-V  提供  Linux   FreeBSD  相關機能

對於運行在 Hyper-V 上的 Linux 與 FreeBSD 客端作業系統,在 Hyper-V 對其客端作業系統所能提供的功機能有分為兩個種類。第一種為在客端之外的機能(functionality outside the guest ),而第二種為需要與客端交互的功能(functionality requiring guest cooperation),接下來讓我們簡要的來介紹這兩個種類。

所謂 Hyper-V 在客端之外的機能,意思是不需要與在客端虛擬機器內的作業系統有所關係,因此這類的機能能夠直接運作在 Windows, Linux, FreeBSD 等客端作業系統。在這個種類為微軟主要研發的部分,提供客端虛擬機器能夠有良好的效能功能表現。在這一個種類的機能是能夠讓 Linux 與 FreeBSD 的虛擬機器能夠使用此機能如 Windows 虛擬機器一樣完備的。舉例來說,這一種類的機能包括下列幾種:

l   可以透過 RDMA 技術提供超快速將虛擬機器在不關機的情況下轉移至另外一部 Hyper-V 主機上。

l   儲存 QoS 管控

l   軟體定義網路(SDN)

以上是幾個這一種類功能中的其中幾項,當然還包括其他類型的功能,皆能提供給 Linux 與 FreeBSD 使用,不單單侷限於 Windows 的客端作業系統。這個部分在此系列文章其它文章內將會提到,這邊就暫時不提細節。

而第二種類型,為需要與客端交互的功能(functionality requiring guest cooperation),包含:

l   增強客端操作體驗

l   主客端間的直接溝通

l   動態記憶體配置

l   即時備份

客端交互功能是透過 Linu x與 FreeBSD 的系統整合服務達成的,而這個服務在前一篇文章有提及詳述過。而這個機能在 Linux 與 FreeBSD 皆有各自特別的功能在其中,這篇文章主要將會在講述解說此機能。

增強客端操作體驗

在操作 Linux 與 FreeBSD 客端時,運用著與操作 Windows 客端一樣的工具,而這些工具包括:

l   Hyper-V 管理員:透過基本的圖形使用者介面來管理 Hyper-V 主端上的客端虛擬機器。

l   PowerShell:透過指令列介面的方式在 Windows 上對虛擬機器做一些基本的操作。即使 PowerShell 目前僅能運作於 Windows 上,但他仍可對在虛擬機器內執行 Linux 或 FreeBSD 進行像對 Windows 一般的操作。

l   System Center 虛擬機器管理員:圖形化的使用者界面能夠完整的調整私有雲的使用規模。VMM 對於操作 Linux 虛擬機器叢集就像對 Windows 虛擬機器叢集一樣。(FreeBSD 虛擬機器叢集無法使用 VMM 管理)

如您所想,對於客端的操作包含著啟動以及停止客端虛擬機器,以及提供睡眠及恢復虛擬機器的功能。而停止的操作又包含兩種行為:” 關閉 (Turn off) ”以及” 關機 (Shutdown) ”。在 VM 外部,能夠簡單快速的透過Hyper-V 直接關閉 VM,就像直接對實體電腦斷電一般。但這將會造成一個不正常的關機程序,可能會導致系統檔案回寫不一致 (inconsistency) 等異常。因此 Hyper-V 實作了 ” 關機 ” 功能,透過 LIS/BIS 的幫忙,讓客端作業系統能夠接收到正常的 Linux 關機命令而進行正常的關機程序。Hyper-V 實作關機功能亦不需先登入至 Linux 與 FreeBSD 客端虛擬機內,因此具有操作管理 Hyper-V 的人員就可以執行關機的動作。

時間同步及維持

當 Linux 與 FreeBSD 虛擬機器啟動或者恢復時期內的時間與日期將會自動的與 Hyper-V 主端同步。但要持續保持客端虛擬機器的時間準確是個艱難的挑戰,有些時鐘不可避免的會產生時間偏移,除非加入外部的時間同步機制。在 Windows 客端環境下,通常是加入網域透過 Active Directory 網域控制器或者外部的同步站台進行同步。而對 Linux 以及 FreeBSD 客端來說,我們建議還是使用其中的 NTP 校時服務來透過外部的來源進行校時以確保時間偏移不會逐漸累積。

主客端間的直接溝通

Hyper-V 提供兩種技術讓主端能夠與其 Hyper-V 內的客端 VM 做溝通。在這裡提到的 ”直接” 是代表這兩者之間的溝通不需要透過網路連線。在某些情況如安全因素的考慮下,客端有可能是沒有網路連線的,這時仍然能夠做到兩者間的溝通。

第一種技術為資料交換,也稱作 Key/Valu e配對(簡稱 KVP ),KVP 包含著 ”Key”以及”Value”,Key 與 Value 皆為字串型態,Value 最多可以儲存至 1024 個字元長。當 KVP 被建立或者改變,在客端及主端皆能夠同步變化,而這篇文章提供了詳細如何在 Hyper-V 內與 Linux 或 FreeBSD 透過 KVP 達成溝通的解說。

有一些 KVP 會自動的在客端及主端建立起來並且傳送一些基本的訊息。舉例來說 KVP 會儲存像是主端自己本身的主機名稱與相關訊息,而客端可以知道目前是運作在什麼樣的主端上。換個角色來講類似的事情,客端會透過 KVP 傳送客端本身的 IP 位置讓主端知道這個客端的 IP 位置為何。

第二種技術為 ”檔案複製”。從 Hyper-V 主端要複製進客端作業系統中,在這種大量資料傳輸時,將會比 KVP 的方式還要有效率。而在檔案複製傳輸時是目前為單向傳輸,意味著只能從主端傳送之客端,而檔案傳輸的功能在 Windows 客端上是透過 Copy-VMFile PowerShell 來達到,而在 Linux 客端則為 hv_fcopy_deamon 這個程序(包含於 LIS 中)所達到。

其他提供的機能

在最近的 Linux 發行版本中(單不包含 FreeBSD),已經開始支援由 UEFI 開機,且在 Hyper-V 第二代的虛擬機器中也支援其 UEFI 開機的環境。而在第二代的虛擬機器,屏除掉了傳統的 PC 開機方式。加入了能夠透過虛擬網路卡進行 PXE 開機的功能。而若要在 Hyper-V 2012 R2 上運行 Linux, ”Secure Boot” 在第二代虛擬機器中必須要關閉,但在 Windows Server 2016 技術預覽版 2 以及其後的版本,Linux 發行版將可以運作在Secure Boot 啟動的情況(了解更詳細的內容點這裡),並提供完整個微軟 UEFI 授權認證以及 Hyper-V 管理員介面、PowerShell 或 System Center VMM 介面。

Hyper-V 也在虛擬磁碟(VHD 或 VHDX )中做了一些功能性的改變,就算客端虛擬機器正在運行,您能直接地做設定或調整而不需要帶來任何環境下線的情況。而在 Linux 與 FreeBSD 客端中,對於新增或者調整虛擬硬碟後的改變是立即能夠生效的,透過 df –k 指令即可立刻看到結果。您可以透過分割區工具來進一步在客端系統內調整並掛載使用這些空間。

結論

Hyper-V 提供了數個重要的核心功能,讓 Linux 以及 FreeBSD 能夠更簡易的運行在 Hyper-V 上。Hyper-V 最重要的功能為獨立於客端作業系統的機能,能夠直接運作在 Linux 與 FreeBSD 上頭。但第二種為需要與客端交互的功能,必須透過 Linux 或 FreeBSD 作業系統整合服務方能正常運作。

在下一篇文章,將會提及兩項重要的功能:動態配置記憶體,透過此技術能夠達到更高的虛擬機器使用密度。以及線上即時備份,透過此技術能夠減少因為備份伺服器而造成的下線時間。

 

本文翻譯自: Microsoft Loves Linux Deep Dive #2: Linux and FreeBSD Integration Services Core Features