微软爱Linux的铁证:运行在Hyper-V上的Linux与FreeBSD
【引自Winclient的博客】常常听到大家问我们重复的问题:“微软到底会为 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。
Guest OS与Integration Services
什么样的操作系统能够当作 Guest OS 操作系统运行在 Hyper-V 上呢? 举例来说,常常被问到:” 能将 IBM 的 AIX 操作系统运行在 Hyper-V 上吗? "为了简单快速的回答这个问题,可以参照下列流程图:
Hyper-V 是一个专为 Intel 与 AMD 的 x86/x64 架构而设计的 hypervisor,因此可以看到非常重要的一点是 Guest OS 操作系统必须要运行于 x86/x64 架构。 而 AIX 是 IBM 针对 PowerPC 架构所设计,因此无法运行在Hyper-V 上。 而并不是仅有 Hyper-V 有这个要求,其他针对 x86/x64 所设计的 hypervisor 如 VMWare ESX 等等也有这个要求,这种 hypervisor 也无法运行 AIX。
如果操作系统运行在 x86/x64 架构下,接下来的问题是该操作系统,是否有 Hyper-V 所提供的整合服务(Integration Services)。 而这个整合服务将会提供 Guest OS 操作系统与 hypervisor 更紧密的整合性。 让您的 Guest OS 操作系统能够得到更好的虚拟化性能与管理能力。 微软提供 Windows 及大部分Linux 发行版、FreeBSD 完整的整合服务。 对于其他像是 Solaris x86 等 x86/x64 操作系统,能够运行在 Hyper-V 所提供完整的仿真模式下,但可能会有些性能或者稳定上的限制,对于生产力环境来说会较不适合采用,因此不建议使用在生产环境下。 接下来将会着重于 Linux 与 FreeBSD 的整合环境来说明。
整合服务到底是在做些什么呢? 整合服务将会替 Guest OS 操作系统上安装合适的仿真设置 ( Synthetic devices ) 驱动程序。 这些仿真设备对于 Guest OS 操作系统来说就像是真的硬件设置一样,经过安装仿真设备驱动器,让 Guest OS 操作系统得到高性能的网络控制器与储存控制器支持,还有对于 Host OS 操作系统上更好的管理能力。 但就像实体的设备一样,这些仿真设备仍然需要依照不同的操作系统上安装合适的硬件驱动程序才能使用。 且因为不同的操作系统有不同的设备驱动器模型,而这些驱动程序必须要针对不同的操作系统来编写不一样的代码段。 针对不同类型与不同操作系统的设备驱动器如 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 拥有的功能才会是正确的方式,请点选这里检查功能说明。
内建LIS
对于深度整合 LIS 入 Linux 的发行版,主要是使用目前企业组织于生产力环境以及数据中心内较为广泛使用的发行版。 对于 FreeBSD,主要专注改进的地方在于使用 FreeBSD 当作基底操作系统的虚拟设备提供商所要的需求。 而对于 LIS 与 BIS 两者,我们持续的新增新功能以及加强性能的增强,尽可能提供运行于 Hyper-V 上 Guest OS 操作系统最好的使用体验。 也因为 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
小结