作者:Hari Pulapaka
Windows是一種多功能、靈活的操作系統,可在多種機器架構上運行,并有多種SKU。它目前支持x86、x64和ARM體系結構。它甚至曾經支持Itanium、PowerPC、Alpha和MIPS(wiki:http://en.wikipedia.org/wiki/Windows_NT)。Windows也可以在多種環境中運行;從數據中心、筆記本電腦和電話到ATM機等嵌入式設備。
即使有了所有這些支持,Windows的核心在所有這些架構和SKU上幾乎保持不變。Windows可以動態擴展,這取決于其運行的體系結構和處理器,以充分利用硬件的功能。這同樣適用于Microsoft Azure。因此,如果您曾經想知道Windows如何在數據中心運行Azure節點,請繼續往下看!
正如Satya所說,“我們正在將Azure打造成世界級計算機”,為世界級計算機提供動能表明了Windows的擴展能力。為了展示這種規模,這里是數據中心M系列機器(Azure中可用的最大虛擬機之一,具有896個邏輯處理器)中直接在Azure主機上運行的taskmgr的快照。
M-series taskmgr
在這篇文章中,我們將討論為數據中心的Azure主機服務的Azure主機操作系統的內部結構。
云主機–Azure主機操作系統
Azure是微軟的云計算服務,它提供IaaS(基礎設施即服務)虛擬機(VM)、PaaS(平臺即服務)容器和許多其他SaaS服務(例如Azure Storge、Networking等)。對于IaaS和PaaS服務,所有客戶代碼最終都在虛擬機中運行。因此,在核心平臺層,Azure主機操作系統的主要目的是管理虛擬機并將其管理得非常好!管理VM包括啟動、關閉、實時遷移、更新等。
由于Azure使用Windows作為操作系統,所有這些虛擬機都作為Microsoft Hyper-V(即我們的虛擬機管理程序)的guest運行。Microsoft Hyper-v是一種type1(https://en.wikipedia.org/wiki/Hypervisor)的管理程序,因此,當我說Azure Host操作系統時,它在技術上是根操作系統。這是一個完全控制硬件并提供虛擬化設施以運行guest VM的操作系統。
請記住,我們使用的hypervisor與我們在所有數百萬客戶計算機上的Windows客戶端和Windows服務器上使用的hypervisor相同。我們將在即將發布的博客文章中解釋Microsoft Hyper-V的一些關鍵功能,這些功能允許Azure安全可靠地管理guest VM。
云主機
正如我提到的,Azure主機操作系統的目標是良好地管理VM的生命周期。這意味著Windows(或稱Azure主機操作系統)不需要通常與Windows關聯的大量功能來執行此功能。因此,我們創建了一個專門的控制臺(沒有GUI,有些人還稱之為headless)版本的Windows,稱為云主機。
這是基于OneCore的Windows版本。OneCore是所有Windows SKU系列(或版本)構建其功能的基礎層。它是所有版本的Windows(PC、Windows Server、XBOX或IOT)所需的一組組件(可執行文件、DLL等)。如果拿編程類比的話,它是所有Windows類繼承的基類(例如Object)。如果您查看OneCore內部以了解它提供的功能,您可以看到提供核心功能的API集,如內核、虛擬機監控程序、文件系統支持、網絡、安全、Win32 API等。下圖中調用的OneCoreUAP是用于構建客戶端PC版本的稍高層的另一個示例,GUI堆棧和更高級別的網絡組件,如媒體堆棧和WiFi。
OneCore中可用的一些代表性組件
我們如何構建云主機?
需要在Azure主機上運行少量代碼,以與控制平面集成,并監控和管理容器/VM。基于對該代碼的依賴集的分析,我們確定了Azure在OneCore之上需要的一組功能(DLL和API集)。然后將這些二進制文件(數十個二進制文件)添加到OneCore中,將其用作Azure主機的操作系統。
為了添加這些DLL,我們創建了一個名為云主機的全新SKU,并將所有這些二進制文件添加到云主機。您可以將云主機視為OneCore的“子類”。注意,我們必須創建一個新的SKU“云主機”,因為我們需要向OneCore添加新的二進制文件。我們可以直接將它們添加到OneCore中,但它更干凈,可以創建專門構建的SKU/版本,同時保持OneCore未修改。換句話說,云主機是一個專門為運行數據中心中的Azure主機節點而設計和構建的SKU。您可能更熟悉其他Windows SKU,通常稱為版本,如Pro、Enterprise等[wiki:https://en.wikipedia.org/wiki/Windows_10_editions]。云主機是一個類似的SKU/版本,僅用于數據中心中的Azure節點。
有了這個解釋,讓我們看看這個云主機。這是一張云主機WIM(https://en.wikipedia.org/wiki/Windows_Imaging_Format#:~:text=The%20Windows%20Imaging%20Format%20(WIM,Windows%20Fundamentals%20for%20Legacy%20PCs.)文件的圖片(WIM文件就像一個zip文件,用于存儲要啟動的Windows映像)。您可以看到它的大小為280MB,比典型的PC WIM文件小10倍多。
這比您在PC上使用的任何Windows都要小得多,典型的客戶端企業版WIM文件大小為3.6 GB。
云主機引導到控制臺Shell中,體驗通常類似于Windows Server Core。這是一張云主機會話的圖片,來自我們的一臺測試機器。
(請記住,我們通常不會登錄到Azure主機節點,這純粹是為了演示目的)
帶有cmd shell、taskmgr和Regedit的云主機
您可能注意到的另一件事是,taskmgr甚至regedit看起來與您在Windows 11上看到的不同。這是因為正如我提到的,云主機是基于OneCore構建的,它是headless(或基于控制臺的),因此它不包含任何Windows的GUI部分。我們有一個特殊的taskmgr和regedit版本,它與Windows11中的所有現代GUI功能都不相關聯,這給了他們“老式”的外觀。
API:什么樣的代碼可以在Azure主機節點上運行?
我們可以在Azure主機上運行C++、Python甚至Rust代碼。要記住的主要一點是,作為一名開發人員,如果您正在構建代碼以在Azure Host上運行(這只是我們的內部開發人員),您只能鏈接OneCore SDK(OneCore.lib)。我們在這里(https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-umbrella-libraries)記錄了OneCore可用的API界面,以對應在這里(https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/building-for-onecore)構建OneCore的信息。
隨著對Azure云主機內部結構的深入了解,未來的博客文章將繼續介紹更新Azure主機的代碼和設計內部結構(例如,Tardicade、VM PHU、Hypervisor熱重啟和實時遷移)、內核/虛擬化功能、安全性以及操作系統平臺中的許多其他領域。
審核編輯:湯梓紅
-
WINDOWS
+關注
關注
3文章
3541瀏覽量
88623 -
操作系統
+關注
關注
37文章
6801瀏覽量
123283 -
主機
+關注
關注
0文章
993瀏覽量
35114 -
云主機
+關注
關注
1文章
46瀏覽量
8695 -
Azure
+關注
關注
1文章
123瀏覽量
12778
原文標題:Azure主機操作系統–云主機
文章出處:【微信號:Arm軟件開發者,微信公眾號:Arm軟件開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論