作者: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热重启和实时迁移)、内核/虚拟化功能、安全性以及操作系统平台中的许多其他领域。
卫星+物联网的魔法《北斗室外物联网定位市场调研报告》
基于MEMS技术的CO2传感器 主要检测CO2泄漏
基于C8051F3xx的全数字PFC可控硅调光驱动高亮LED
i.MX6ULL开发板—无线网络测试方案
车载信息娱乐系统中的电源设计(下)
Azure主机操作系统–云主机
基于一种SICK AppSpace生态系统的SIM4000传感器集成控制器方案
如何快速掌握11种开关电源拓扑结构?看这篇就够了!
移动通信领域的内置天线设计技术介绍
Phillips-Medisize应对医疗设备小型化的挑战
浅谈机器人面对的最主要的技术难题
诺基亚E71评测 行业经典
浅谈PCB电子垃圾的来源及主要成分
2021世界智能汽车大会在羊城广州盛大召开
汽车LED双路输出恒流驱动器 双路恒流板 刹车转向恒流驱动IC
高饱和磁通密度低损耗MnZn功率铁氧体材料及其制备方法
活动安保可视化指挥决策平台的功能特点及应用
AMD为爱信下一代自动泊车辅助系统提供支持
智能电网稳定发展,智能电表控制芯片是关键
NVIDIA神秘移动显卡曝光 将配备2GB GDDR6显存