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

在今天的文章中,您可以看到以下內容:


初步介紹

        在 2015 年 5 月時的 Ignite 大會中,我們發表了一篇" Microsoft Loves Linux " 來說明接下來微軟打算與 Linux 之間進行甚麼樣子的合作。在不久前於西雅圖舉辦的 LinuxCon North America 研討會,微軟也在其中擔任金級贊助商。在這兩個研討會中,常常聽到大家問我們重複的問題:"微軟到底會為 Linux 做些什麼?",我們的答案是:"非常多!"。將會持續的投資並且創新 Linux 上的能力,不僅只有在 Azure 公有雲上,而在私有服務如 Windows Server、Hyper-V、以及 System Center 上皆會持續的提升 Windows 與 Linux 之間的合作能力。您可以點擊這裡閱讀關於 Linux 在目前 Azure 公有雲可以做到的事情。

        對於私有資料中心,我們將會持續發布一系列深度的技術文章來呼應 2015 年 5 月所公開發布的內容,這系列的文章將來談談關於 Linux 在您私有的資料中心是如何運行及管理。在前半段的系列文章,將會涵蓋 Linux 與 FreeBSD 在 Hyper-V 是如何運行的。而後半段的系列文章將會解說透過 System Center 與 PowerShell DSC 來管理 Linux 以及 Unix。

客端作業系統整合服務

        什麼樣的作業系統能夠當作客端作業系統運行在 Hyper-V 上呢?舉例來說,常常被問到:" 能將 IBM 的 AIX 作業系統運行在 Hyper-V 上嗎?"為了簡單快速的回答這個問題,可以參照下列流程圖:

        Hyper-V 是一個專為 Intel 與 AMD 的 x86/x64 架構而設計的 hypervisor,因此可以看到非常重要的一點是客端作業系統必須要運行於 x86/x64 架構。而 AIX 是 IBM 針對 PowerPC 架構所設計,因此無法運行在Hyper-V 上。而並不是僅有 Hyper-V 有這個要求,其他針對 x86/x64 所設計的 hypervisor 如 VMWare ESX 等等也有這個要求,這種 hypervisor 也無法運行 AIX。 

        如果作業系統運作在 x86/x64 架構下,接下來的問題是該作業系統是否有 Hyper-V 所提供的整合服務。而這個整合服務將會提供客端作業系統與 hypervisor 更緊密的整合性。讓您的客端作業系統能夠得到更好的虛擬化效能與管理能力。微軟提供 Windows、大部分的 Linux 發行版,與 FreeBSD 完整的整合服務。而對於其他如 Solaris x86 等 x86/x64 作業系統,雖然能夠運行在 Hyper-V 所提供完整的模擬模式下,但可能會有些效能或者穩定上的限制,對於生產力環境來說會較不適合採用,因此建議使用在非生產環境下做測試用途。接下來將會聚焦於 Linux 與 FreeBSD 的整合環境來說明。

        整合服務到底是在做些什麼呢?整合服務將會替客端作業系統上安裝合適的模擬裝置 (Synthetic devices) 驅動程式。這些模擬裝置對於客端作業系統來說就像是真的硬體裝置一樣,經過安裝模擬裝置驅動程式,讓客端作業系統得到高效能的網路控制器與儲存控制器支援,以及對於主端作業系統上有對客端作業系統更好的管理能力。但就像實體的裝置一樣,這些模擬裝置仍然需要依照不同的作業系統上安裝合適的硬體驅動程式才能使用。且因為不同的作業系統有不同的裝置驅動程式模型,而這些驅動程式必須要針對不同的作業系統來撰寫不一樣的程式碼片段。因此針對不同類型與不同作業系統的裝置驅動程式如 Windows、Linux 以及 FreeBSD,因此整合服務將會有不同的虛擬裝置驅動程式集合而成,對於 Linux 與 FreeBSD 的整合服務來說,我們將會稱作 Linux 整合服務(Linux Integration Services, LIS)與 FreeBSD 整合服務(FreeBSD Integration Services, BIS)。

關於  LIS  開發

        微軟有許多的開發人員透過 C 語言撰寫開發 LIS 並運行於 Linux 核心中。但在開發過程中與目前微軟產品是不同樣子的設計流程。我們的開發人員積極的參與 Linux 核心開發的相關社群,並定期的透過 Linux 核心的Mailing List 持續的更新 LIS 的功能並且修復相關的 BUG。而在 Linux 核心開發社群中的成員將會檢視我們提交的程式碼並且提供相關的評論、意見以及相關的實作修改建議,有時甚至會告訴我們所做的東西完全是錯誤的!。我們反覆不斷的與社群們互相交流修訂這些錯誤。最終所提交的程式碼被社群所接受後,將會更新到最新版本的 Linux 核心程式碼庫中。而這個 Linux 核心程式碼庫是由 Linus Torvalds 本人自己組織並且維護的。這個程式碼庫中包含了全世界已經修改完並通過審核的 Linux 核心程式碼。 

        當 LIS 的程式碼更新到 Linux 核心後,微軟也會與幾個關鍵的 Linux 發行版本廠商合作並且將更新並整合新版 LIS 後的 Linux 核心與特定版本的發行版一併釋出。但有些 Linux 的發行版本會使用先前版本的 Linux 核心,所以我們也常與這些發行版本的提供廠商進行 " backport " 的行為。將最新版的 LIS 整合至先前版本的 Linux 核心中。在這些動作完成後,也會進行多種測試以確保效能與管理能力能夠完整及穩定。常常在一個月中與各發行版本廠商討論數次技術上的問題與解決 bug,並追蹤進度以確保最新的發行版本能夠順利運行於 Hyper-V上。並提供這些完全支援 Hyper-V 的廠商認證,如 Red Hat Enterprise Linux on Hyper-V. 就是我們其中一個認證並且密切合作的 Linux 發行版廠商。

關於 LIS 套件  

        如前述微軟與幾個重要的 Linux 發行版本商合作並且直接將 LIS 整合入這些發行版中。當您於 Hyper-V 上運行這些合作的 Linux 發行版時,Hyper-V 整合服務早已運行其中,您可以直接安心的操作而不需額外手續。不過不同的發行商有自己的發行時程,每個發行版本會有自己獨立的行程表,可能最新的 LIS 功能或者效能提升不夠明顯,那就有可能會導致這次版本的釋出不一定會整合入最新版本的 LIS,必須等到下一個版本的釋出才有可能加入。 

        因此針對想要立即得到最新版本的 LIS,微軟也提供了獨立安裝( Standalone )的套件,能夠讓使用者能夠直接安裝到不同的 Linux 發行版中。若需要透過此方式安裝 LIS,可以點擊這裡由微軟下載中心下載。而 LIS 套件包能夠安裝到一些沒有內建 LIS 或較舊版本的發行版。如果您正在使用由微軟提供的 LIS3.5 套件,建議您能夠升級至 LIS4.0 套件。因為 LIS4.0 可以安裝到預先已經有整合 LIS 的發行版本中。將規劃在每數個月能夠更新 LIS  的功能以及相關穩定度。 

        有關於 LIS 的版本編號,若您檢查一些已經內建 LIS 的發行版本內的 LIS 模組編號,你或許會看到版本編號 " 3.1 "。請不要將此版本編號與 LIS4.0 內的 " 4.0 " 作對比,這並不代表目前內建的 LIS 版本已經是舊版本了,請瀏覽 Linux/FreeBSD 功能說明來檢查目前在您的 Linux 發行版中 LIS 擁有的功能才會是正確的方式,請點選這裡檢視功能說明。

關於 BIS 開發  

        在前面我們談論關於 LIS 開發的過程。在 BIS 上我們也依循類似的開發模式。我們提交相關程式碼到 FreeBSD 社群上,並且持續的聆聽相關反饋以及整合至 FreeBSD 原始碼庫中。但 FreeBSD 並不像 Linux 有眾多的發行版本,而是直接由 FreeBSD 社群所發布。因此 BIS 會在每一次 FreeBSD 更新釋出時直接整合最新版本到其中,並且不需要釋出獨立的套件或者進行 backporting,讓整個開發整合過程相對簡單。

內建 LIS

        對於深度整合 LIS 入 Linux 的發行版本,主要是使用目前企業組織於生產力環境以及資料中心內較為廣泛使用的發行版本。對於 FreeBSD,主要專注改進的地方在於使用 FreeBSD 當作基底作業系統的虛擬設備提供商所要的需求。而對於 LIS 與 BIS 兩者,我們持續的新增新功能以及加強效能的增強,盡可能提供運行於 Hyper-V 上客端作業系統最好的使用體驗。也因為 LIS 與 BIS 是透過不同層面的社群與不同的發行商跟著不同的發行版本一併釋出,因此更新將不會像 Windows Server/Hyper-V 一樣有固定的釋出時間。版本的更新可能會更頻繁的發生。因此會導致不同的 Linux 發行版與不同的 FreeBSD 版本提供的支援能力會因版本而有所差異,而讓人難以去追蹤何種新的功能被加入。為了解決這個窘境,微軟在 TechNet 上提供了完整的文件庫,包含主要的 Linux 發行版本與 FreeBSD 間 LIS/BIS 的支援度差異。您能夠查詢到下列幾個我們重點整合的 Linux 版本所擁有的 LIS 功能支援程度:

  • Red Hat Enterprise Linux
  • CentOS
  • SUSE Linux Enterprise Server
  • Ubuntu Server
  • Debian Server
  • Oracle Linux

 將有新的發行版本以及 LIS/BIS 新的功能加入時,這份文件將會更新其內容。

總結

        Linux 與 FreeBSD 現在能夠完美的運行在 Hyper-V 上!,微軟已經全心全力的有相關人參與 Linux 與 FreeBSD 社群其中,並建立與不同 Linux 發行廠商間的生態系統,能夠將最新版本的客端作業系統整合服務內建於我們重點合作的 Linux 發行廠商提供的發行版本中。您可以在 Hyper-V 上安裝並運行這些合作的 Linux 發行版本與 FreeBSD 而不需要額外手續。

        在下一篇文章中,我們將會更深入探討其 Hyper-V 的關鍵技術,讓您能夠在運行 Linux 與 FreeBSD 時更能發揮這些客端作業系統運行於 Hyper-V 所帶來的好處。

本文翻譯自: Microsoft Loves Linux Deep Dive #1: Introduction to Linux and FreeBSD on Hyper-V