【IT168 专稿】
这一部分介绍目前市场上各种x86 管理程序(hypervisor)的架构差异,三个最主要的架构类别包括:
• I型:虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”。
• II型:虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,被称为“托管”hypervisor。
• 容器:虚拟机运行在传统操作系统上,创建一个独立的虚拟化实例,指向底层托管操作系统,被称为“操作系统虚拟化”。
图 1 三种主要的虚拟化架构类型
上图显示了每种架构使用的高层软件“堆栈”,应当指出,在每种模型中,虚拟层是在不同层实现的,因此成本和效益都会不一样。
除了上面的架构类别外,知道hypervisor的基本元素也同样重要,它包括:
• 虚拟机监视器(Virtual Machine Monitor,VMM):它创建、管理和删除虚拟化硬件。
• 半虚拟化(Paravirtualization):修改软件,让它知道它运行在虚拟环境中,对于一个给定的hypervisor,这可能包括下面的一种或两种:
- 内核半虚拟化:修改操作系统内核,要求客户机操作系统/hypervisor兼容性。
- 驱动半虚拟化:修改客户机操作系统I/O驱动(网络、存储等),如Vmware Tools,MS Integration Components。
相关阅读:
X86虚拟化之Citrix XenServer
X86虚拟化之Red Hat企业级虚拟化KVM
X86虚拟化之Hyper-V R2和System Center
X86服务器虚拟化之Vmware vSphere
操作系统虚拟化:容器
在容器模型中,虚拟层是通过创建虚拟操作系统实例实现的,它再指向根操作系统的关键系统文件,如下图所示,这些指针驻留在操作系统容器受保护的内存中,提供低内存开销,因此虚拟化实例的密度很大,密度是容器架构相对于I型和II型架构的关键优势之一,每个虚拟机都要求一个完整的客户机操作系统实例。
图 2 容器型虚拟化架构
通过共享系统文件的优点,所有容器可能只基于根操作系统提供客户机,举一个简单的例子,一个基本的Windows Server 2003操作系统也可用于创建Windows Server 2003容器,同样,任何适用于根操作系统系统文件的补丁和更新,其子容器也会继承,提供了一个方便的维护方法。
但这也可能会造成损害,根操作系统收到破坏,客户机也会跟着被破坏。
在容器内,用户可以使用特定应用程序,热修复(但不是服务包)和操作系统服务组件自定义客户机实例,对那些在多数客户机容器中会使用到的服务或应用程序,它们所需要的功能应该安装到根操作系统中,在客户机实例中使用类似于模板的方法自动获得这些功能。
在大多数情况下,容器的数量仅受宿主操作系统可用资源的限制,每个客户机可能被配置为根操作系统限制的最大硬件资源,这些可扩展的特性与客户机管理的易用性,使容器方法成为需要高虚拟机密度的应用程序很有实力的候选者,如虚拟桌面。
Parallels Virtuozzo容器是当今业界领先的操作系统虚拟化产品,除了上述功能外,Virtuozzo提供了高可用和跨物理主机迁移客户机的功能(假设根操作系统和补丁级别相同),架构上,Virtuozzo实现了一个专有的内核服务抽象层(Kernal Service Abstract Layer,KSAL),保护宿主操作系统文件,在可写入文件系统上保存一份安全的副本,使单独修改客户机成为可能。与混合hypervisor(本文后面会有介绍)中的父分区类似,第一个虚拟实例是一个简单的管理容器,它提供虚拟机监视功能。
在Parallels Virtuozzo容器的最新版本4.5中,包括在Hyper-V中嵌入Virtuozzo的支持,两者都在父分区中。
图 3 Hyper-V中嵌入Virtuozzo容器
这种实现方式虽然复杂,但它展示了Virtuozzo架构的灵活性,提供高虚拟机密度,有关Parallels Virtuozzo容器的更多信息,请参考其网站(http://www.parallels.com/products/pvc45/)。