【IT168 专稿】

这一部分介绍目前市场上各种x86 管理程序(hypervisor)的架构差异,三个最主要的架构类别包括:

? I型:虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”。

? II型:虚拟机运行在传统上,同样创建的是硬件全仿真实例,被称为“托管”hypervisor。

? 容器:虚拟机运行在传统上,创建一个独立的虚拟化实例,指向底层托管操作系统,被称为“操作系统虚拟化”。

图 1 三种主要的虚拟化架构类型

上图显示了每种架构使用的高层软件“堆栈”,应当指出,在每种模型中,虚拟层是在不同层实现的,因此成本和效益都会不一样。

除了上面的架构类别外,知道hypervisor的基本元素也同样重要,它包括:

? 虚拟机监视器(Virtual Machine Monitor,VMM):它创建、管理和删除虚拟化硬件。

? 半虚拟化(Paravirtualization):修改软件,让它知道它运行在虚拟环境中,对于一个给定的hypervisor,这可能包括下面的一种或两种:

- 内核半虚拟化:修改操作系统内核,要求客户机操作系统/hypervisor兼容性。

- 驱动半虚拟化:修改客户机操作系统I/O驱动(网络、存储等),如Vmware Tools,MS Integration Components。

相关阅读:

操作系统虚拟化:容器

在容器模型中,虚拟层是通过创建虚拟操作系统实例实现的,它再指向根操作系统的关键系统文件,如下图所示,这些指针驻留在操作系统容器受保护的中,提供低开销,因此虚拟化实例的密度很大,密度是容器架构相对于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容器的更多信息,请参考其网站()。

II型 hypervisor

II型或托管型hypervisor通过一个软件层在现有操作系统上实现硬件虚拟化,与容器架构不一样,II型客户机提供了一个完整的、独立的、无依赖的客户机操作系统副本,通常利用半虚拟化驱动网络和I/O提高客户机性能。但由于虚拟化功能必须通过宿主操作系统,客户机的性能大大低于裸机hypervisor。此外,还有一些高可用和企业管理功能。由于这些原因,II型 hypervisor最常用于开发/测试或桌面类应用程序。

流行的II型 hypervisor包括Vmware Workstation,Sun VirtualBox和Microsoft Virtual Server R2,它们的功能都差不多,因为它们都不能胜任企业级工作量,因为后面我也不打算继续介绍它们。

I型hypervisor

I型或裸机hypervisor包括当今主流的企业级虚拟化产品,该类hypervisor直接运行在系统硬件上,提供了更好的客户机性能。通过处理器虚拟化扩展增强,包括英特尔VT和AMD-V技术,I型hypervisor甚至可以超越裸机操作系统性能。使用这一类hypervisor,有几个子类型有必要详细介绍:

? 独立型:VMware vSphere

? 混合型:Microsoft Hyper-V,Citrix XenServer和Sun xVM

? KVM:Linux KVM

I型独立型:VMware vSphere

在一个独立型hypervisor中,所有硬件虚拟化和虚拟机监视器(VMM)功能由一个单一的,紧密集成的代码集提供,这种架构与Vmware vSphere和前几代ESX hypervisor的结构是相同的。下图是Vmware vSphere 4.0(也称为ESX 4)的架构概述图,与一般看法相反,Vmware不是基于Linux的hypervisor,相反,ESX是由一个高度复杂的操作系统VMKernel组成的,并取得了专利权,提供所有虚拟机监控和硬件虚拟化功能。ESX完整版提供了一个基于Linux的服务控制台,但ESXi不包含此服务控制台。

图 4 VmwarevSphere 4.0架构

通常这种模式被称为“胖”或“瘦”hypervisor,但这种说法并不准确,虽然ESX架构经过长期发展变得更加复杂了,但Vmware在hypervisor性能和功能方面一直保持领先的行业地位,最近实现了处理器虚拟化扩展进一步巩固了领导地位。

Vmware在客户机内需要网络和I/O驱动半虚拟化,这些驱动通常包含在Vmware Tools中。

I型混合型:Citrix XenServer,Microsoft Hyper-V和OracleVM

混合I型架构包括一个软件模型,一个“瘦”hypervisor联合一个父分区提供硬件虚拟化,它提供了虚拟机监视功能,这类模型主要包括微软的Hyper-V和基于Xen的hypervisor,如Citrix XenServer和OracleVM。

图 5 I型混合型hypervisor

父分区也叫做Dom0,它通常是一个运行在本地的完整操作系统虚拟机,并具有根权限,例如,开启Xen在Novell SUSE Linux Enterprise Server(SLES)上执行的Dom0将作为一个完整的SLES实例执行,提供虚拟机(VM)创建、修改、删除和其它类似配置任务的管理层,系统启动时,开启Xen的内核载入父分区,以VMM权限运行,作为VM管理的接口,管理I/O堆栈。

与Vmware类似,所有混合型产品都为客户机提供了半虚拟化驱动,从而提高网络和I/O性能,不实现半虚拟化驱动的客户机必须遍历父分区的I/O堆栈,因此客户机的性能会下降。操作系统半虚拟化技术正变得越来越流行,以达到最佳的客户机性能,并改进跨hypervisor的互操作性。例如,Microsoft Hyper-V/Windows Server 2008 R2为Windows Server 2008和SUSE Enterprise Linux客户机提供完整的操作系统半虚拟化支持。

虽然操作系统半虚拟化是操作系统发展的一种趋势,但应当指出的是操作系统半虚拟化目前还不是混合模型的一个要求,部分供应商,如VirtualIron(Sun/Oracle),的目标是SMB级负载,使用全硬件虚拟化实现可接受的客户机性能。混合型架构起源于Xen项目,在性价比方面有很多供应商可供选择,这都得益于开源社区(Xen)的贡献,它能够很好地适应半虚拟化操作系统的未来发展。

I型组合型:基于Linux的内核虚拟机(KVM)

基于Linux的内核虚拟机(KVM)hypervisor模型提供了一个独一无二的I型架构,它不是在裸机上执行hypervisor,KVM利用开源Linux(包括RHEL,SUSE,Ubuntu等)作为基础操作系统,提供一个集成到内核的模块(叫做KVM)实现硬件虚拟化,KVM模块在用户模式下执行(与独立型和混合型hypervisor不一样,它们都运行在内核/根模式下),但可以让虚拟机在内核级权限使用一个新的指令执行上下文,叫做客户机模式。

图 6 I型组合型架构

KVM使用一个经过修改的开源QEMU硬件仿真包提供完整的硬件虚拟化,这意味着客户机操作系统不需要操作系统半虚拟化,与Vmware类似,Linux KVM充分利用VirtIO作为实现IO半虚拟化的框架,它利用内置在内核/QEMU中的用户模式VirtIO驱动增强性能。KVM现在已经成为很多Linux发行版的标准模块,包括但不限于Red Hat Enterprise Linux和SUSE Linux Enterprise Server,以及桌面类Linux,如Ubuntu,KVM现在已经成为一个流行的hypervisor。

服务器虚拟化三种架构,X86虚拟化之三种服务器虚拟化战略架构相关推荐

  1. AWS云计算技术架构探索系列之三-计算

    一.前言 计算是最核心的云服务,对于用户来说,取之不尽,用之不竭.按需使用的算力正是云计算的最主要的优势之一. 从云计算架构发展历程看,经历了基于XEN,KVM,VMware和Hyper-V为核心的虚 ...

  2. X86虚拟化之三种服务器虚拟化战略架构

    2019独角兽企业重金招聘Python工程师标准>>> 厚朴[HOPE]工作室 新闻中心 厚朴新闻 专题培训 团队锦囊 协同工作 项目管理 组织架构 师资顾问 设备资产 排忧解难 原 ...

  3. 将台式机组成云服务器_四种旧PC台式电脑改造桌面云虚拟化的方案介绍

    由于传统PC电脑办公模式有数据安全隐患.维护成本高.占用空间大及耗电量高,噪音大,使用寿命低等弊端正在逐步退出办公领域,越来越多的企业选择桌面虚拟化模式办公.那么企业原有的旧电脑可以进行桌面虚拟化改造 ...

  4. 三种方式在CentOS 7搭建KVM虚拟化平台

    KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux的一个内核模块,该内核模块使得 Linux变成了一个Hypervisor:它由 Qura ...

  5. 中端存储趋势:x86、SSD缓存和虚拟化

    http://storage.chinabyte.com/70/12254570_4.shtml 在上一篇<SPC-1:闪存 vs.磁盘新旧势力的战场>中,我们对2011年公布的SPC-1 ...

  6. “一云多芯、三V一体” 麒麟信安云融合虚拟化方案助力信创轻松上云

    "上云是常态,不上云是例外".国际上IT架构已从"计算机+网络"向"云+端"演进,云计算技术的蓬勃发展为整个IT行业带来了巨大变革.据专家观 ...

  7. 剖析系统虚拟化(2)- X86虚拟化技术

    系列目录 漫谈虚拟化技术 剖析系统虚拟化(1)- 简介 剖析系统虚拟化(2)- X86虚拟化技术 剖析系统虚拟化(3)- VMware vSphere 的简介 剖析系统虚拟化(4)- VMware E ...

  8. 虚拟化服务器采用amd芯片,AMD和Intel比拼芯片辅助虚拟化

    [IT168 专稿]在过去的近20年间,X86处理器的核心指令集没有什么变化,但AMD和Intel却在处理器中加入了许多创新功能,如64位内存扩展技术.图像处理指令.浮点运算指令以及多核心技术等等.这 ...

  9. 也谈架构:百万pv项目与虚拟化

    也谈架构:百万pv项目与虚拟化 一 说明 100万pv的项目网站,说大不大,说小又具备了一定规模,最近公司网站的xxx项目从物理机迁移到了VMware虚拟化平台(ESXI),这里总结下该项目的网站架构 ...

  10. CPU架构有多少种?X86与ARM有哪些不同之处?

    CPU架构有多少种?X86与ARM有哪些不同之处?看完这篇你就懂了_ly930156123的博客-CSDN博客_cpu架构有几种一台服务器.一台电脑.一台手机最重要的电子零部件是什么?没错,就是CPU ...

最新文章

  1. tcpdump抓包并保存到远程服务器
  2. WaveSwipeRefreshLayout
  3. 关于Vision Transformer的一些思考
  4. Java 高级算法——数组中查询重复的数字
  5. VBA赋值给指定单元格
  6. zemax操作数_ZEMAX与像差理论:二级光谱的ZEMAX描述与详解
  7. Kotlin实战指南十五:协程泄漏
  8. Python实用小技能,一个比一个高级!
  9. mysql校对规则_MYSQL校对规则
  10. JQuery ajax()实例
  11. win7下装ubuntu14.04双系统
  12. HTTP、HTTPS、SSL、TLS之间的关系
  13. python pathlib
  14. 编写你的第一个Django应用程序
  15. linux php 中文乱码解决,Linux中文乱码如何解决
  16. 3月AV-Comparatives杀毒软件测试结果出炉
  17. mysql数据库服务器默认端口_各个数据库的默认端口
  18. 【Python】 _tkinter.TclError: bitmap xzw.ico not defined
  19. mysql判断是否为分区表_MySQL 分区表
  20. Codeforces Round #514 (Div. 2)-D. Nature Reserve

热门文章

  1. 平面方程、两平面夹角、点到平面距离
  2. 国内主流Arduino图形化编程软件专业评测
  3. Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群
  4. 内部投资回报率IRR
  5. 这台计算机无法连接usb,爱思助手无法连接或者连接超时解决办法
  6. 数据读取的常见函数以及区别(fopen、open、textscan、fwrite、fread函数)
  7. Android之利用volley搭建简洁网络框架
  8. WordPress插件 UberGrid 高级相册图片分享中文插件[更新至v2.0.13]
  9. HDU 5857 Median
  10. Python3爬取搜狗微信公众号