虚拟化简介
技术概念
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在 IT领域就叫做 虚拟化技术。 虚拟化技术可以扩大硬件的容量,简化 软件的重新配置过程。 CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。 虚拟化技术也与 VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件 虚拟机相关开销和支持更广泛的操作系统方面。 虚拟化(Virtualization)对于不同的人来说可能意味着不同的东西,这要取决与他们所从事的工作领域的环境。通用的解释是它包含许多使服务器得到加强的虚拟机。有经验的程序员可能还记得,曾有一段时间他们担心是否有可用内存来存放自己的程序指令和数据。现在最基本的操作系统提供了虚拟内存的功能,这样程序员就不用再考虑这个问题了。IBM? 对大型机使用的 VM 可以允许多个用户和应用程序共享同一台机器,相互之间不会产生任何干扰。我们发现在很多计算平台上都实现了这种概念,或者通过软件来提供这种概念。 然而,虚拟化技术的内涵远远不止于 虚拟内存和 虚拟服务器。目前,我们已经有了 网络虚拟化、微处理器 虚拟化、文件虚拟化和 存储虚拟化等技术。如果我们在一个更广泛的环境中或从更高级的抽象(如任务负载虚拟化和信息虚拟化)来思考虚拟化技术,虚拟化技术就变成了一个非常强大的概念,可以为最终用户、应用程序和企业提供很多优点。 虚拟化技术有很多定义,下面就给出了一些这样的定义。然而,对于本文的讨论来说,IBM 给出的简洁定义以及资源的 逻辑表示形式的概念都可以用来作为不同的虚拟模式的示例。 “虚拟化是以某种用户和 应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图。” —— Jonathan Eunice, Illuminata Inc。 “虚拟化是表示计算机资源的逻辑组(或 子集)的过程,这样就可以用从原始配置中获益的方式访问它们。这种资源的新虚拟视图并不受实现、地理位置或底层资源的物理配置的限制。” —— Wikipedia “虚拟化:对一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一种通用的方式来查看并维护资源。” —— Open Grid Services Architecture Glossary of Terms虚拟化是一个抽象层,它将物理硬件与操作系统分开,从而提供更高的 IT 资源利用率和灵活性。
虚拟化允许具有不同操作系统的多个虚拟机在同一物理机上独立并行运行。每个虚拟机都有自己的一套虚拟硬件(例如 RAM、CPU、网卡等),可以在这些硬件中加载操作系统和应用程序。无论实际采用了什么物理硬件组件,操作系统都将它们视为一组一致、标准化的硬件。
虚拟机封装在文件中,因此可以快速对其进行保存、复制和部署。可在几秒钟内将整个系统(完全配置的应用程序、操作系统、BIOS 和虚拟硬件)从一台物理服务器移至另一台物理服务器,以实现零停机维护和连续的工作负载整合。
虚拟化的好处
分区
· 在一个物理系统中可以支持多个应用程序和操作系统
· 可在扩展或扩张体系结构中将服务器整合到虚拟机中
· 计算资源被视为以可控方式分配给虚拟机的统一池
隔离
- 虚拟机与主机和其他虚拟机完全隔离。如果一个虚拟机崩溃,所有其他虚拟机不会受到影响
- 虚拟机之间不会泄露数据,而且应用程序只能通过配置的网络连接进行通信
封装
- 完整的虚拟机环境保存为单个文件;便于进行备份、移动和复制
- 为应用程序提供标准化的虚拟硬件,可保证兼容性
全虚拟化和半虚拟化的差别
全虚拟化
最流行的虚拟化方法使用名为hypervisor的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。VMware和微软的Virtual PC是代表该方法的两个商用产品,而基于核心的虚拟机(KVM)是面向Linux系统的开源产品。
在完全虚拟化的环境下,hypervisor运行在裸硬件上,充当 主机操作系统;而由hypervisor管理的虚拟服务器运行 客户端操作系统(guest OS)
Hypervisors通过一个仿真硬件层为其上的每个Guest操作系统(虚拟机)仿真出一个具有常用硬件设备的标准服务器,当一个运行的Guest系统试图用特权指令控制硬件时,hypervisor会将真实的硬件隐藏起来,并仿真一个硬件设备给Guest系统,从而使得Guest系统无需修改代码就可以安全地访问硬件。该技术使得Guest系统无法任何修改就可在不支持Intel VT/AMD-V的CPU上运行,但该技术的复杂性也降低了系统的性能。
半虚拟化
完全虚拟化是处理器密集型技术,因为它要求hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户操作系统,让它以为自己运行在虚拟环境下,能够与hypervisor协同工作。这种方法就叫准虚拟化(para-virtualization)。
Guest系统在访问真实硬件时是重用当前系统的驱动,而不是通过仿真的硬件实现的。Guest系统和hypervisor交互是通过一个高效、底层的的API(hypercall API)来实现的,这使得hypervisor和Guest系统可以共同最优化地使用底层的硬件和I/O,从而可获得极高的运行性能。
Windows Hyper-V
在微软Hyper-V模型中,hypervisor层直接运行于物理服务器硬件之上。所有的虚拟分区都通过hypervisor与硬件通信,其中的hypervisor是一个很小、效率很高的代码集,负责协调这些调用。
微软的虚拟化架构如下图所示,其中最底层为服务器硬件架构,它包含AMD-V、Intel VT、DEP等硬件支持,再上层就是微软的Windows Hypervisor,在虚拟的每一个子系统之间都是通过VMbus进行通信,包括主系统Windows Server 2008在内,所有的OS都是通过VMBus的一种机制与Hypervisor进行通信,其中父分区,可简单理解为Windows Server 2008宿主系统所在分区,它与Hypervisor的通信是通过VSP传送给VMBus,再通过VMBus与Hypervisor的联系到达硬件。而子分区中的系统,是由VSC将请求发送给自已的VMBus,VMBus再与父分区的VMBus进行沟通,最后由父分区的VSP将请求传送给HyperVisor。
单独的Windows Server 2008在安装之后是直接与硬件通信,但当在系统中启用了Hypervisor,该Windows Server 2008也将作为一个Hypervisor的一个虚拟系统与其它子系统几乎是并列的存在,所不同的是Windows Server 2008作为父分区的宿主机,承载了所有子分区中虚拟系统的驱动程序。为子分区中系统的安全性又上了大大的一把锁。
功能 | Citrix XenServer5 | VMware ESX3.5 | Microsoft Hypre-V |
虚拟化技术 | 半虚拟化(Paravirtualization) 半虚拟化技术在网络I/O和磁盘I/O上性能比全虚拟化好 | 全虚拟化(Fullvirtualization) 半虚拟化(Paravirtualization) | Hypervisor(系统管理程序),半虚拟化(Paravirtualization) |
硬件要求 | n 部分Guest系统要求CPU必需是64位CPU; n 部分Guest系统要求CPU必需支持Intel VT/AMD-V,否则不支持Windows Guest系统 n Guest系统支持最大32G内存,XenServer最大支持128G内存 n 本地支持IDE、SATA、SCSI和SAS n 移动硬盘也能通过测试
| n 不支持IDE硬盘 n 单台ESX Server服务器最多支持32个 n Guest系统支持最大64GB内存;ESX Server最大支持256GB内存 n 一台ESX Server可以同时运行128台Guest系统
| n 部分Guest系统要求CPU必需是64位CPU n 部分Guest系统要求CPU必需支持Intel VT/AMD-V n CPU必须支持硬件DEP(数据执行保护)技术
|
支持的Guest系统 | n Windows系列 n Linux系列 n Sun solaris也通过了测试
| 几乎支持所有的可运行在x86架构上的系统。(不支持必需运行在IDE硬盘上的系统) | n Windows系列 n Linux系列
|
软件版本 | n XenServer Express版,适合单机用户,没有高可用,动态迁移,对内存和vm没有限制,但cpu只能有2颗.(够用就好) n 标准版,多服务器用户,并没有高可用,动态迁移,只能4个cpu n 企业版,多服务器,有高可用,动态迁移 n 铂金版,多服务器,高可用,动态迁移 n 各版本XenServer(包括免费版)均采用同样的hypervisor,均是直接运行在硬件上的,其上的Guest系统可以直接互用。 n XenServer免费版具有和企业版同样的性能。 n 采用XenServer的Express版,可以方便地将一些现有的支持Intel VT/AMD-V服务器作为小型的虚拟化平台。 n 采用XenServer的Express版搭建测试平台,可直接使用从生产平台上复制出的系统,十分方便。 | n VMware ESX是收费的,其免费版是VMware ESXi和Vmware Server。 n ESX和ESXi的hypervisor是直接运行在硬件上的,Vmware Server的hypervisor是运行在Windows或Linux系统上的,二者上的Guest系统不能直接互用。 n 由于运行在Windows或Linux系统上,免费的VMware Server性能比较差。 | n 一个Standard版本只能运行一台Guest虚拟机 n 一个Enterprise版本可以运行4台Guest虚拟机 n 一个DataCenter版本可以不受限制的运行Guest虚拟机 n Hyper-V系统只能是在64位的Windows2008系统上运行 |
License | XenServer的License是按机器计算的。 (由于服务器整合和虚拟化对服务器硬件的CPU计算能力要求很高,4 CPU服务器所能支持的虚拟机数量肯定高于2 CPU的服务器。因此,在使用4 CPU服务器的情况下,XenServer的性价比远高于VMware ESX)(即使使用2个cpu,价格上也相差一半以上) | VMware ESX的License是按CPU数量计算的。 | Windows服务器许可证不包括Hyper-V Server 2008。客户端访问许可证(CALs)只需要运行在虚拟机上的操作系统。Hyper-V Server 2008本身无须客户端访问许可证 |
和其它虚拟化软件的互操作性 | Citrix和微软已达成协议,在下一版本中XenServer上的虚拟机和Windows 2008 Hyper-V上的虚拟机可以互用。 | 无 | |
功能(企业版) | n 支持FC SAN、iSCSI、NFS共享存储。 n 支持虚拟多路CPU n 支持Multipath FC HBA n 支持VLAN,支持网卡捆绑(只有一个网卡工作) n 支持资源QoS控制 n 支持Host和Guest系统性能监控。 n 支持资源池 n 支持XenMotion在线迁移 n 支持Host补丁管理 n 支持HA n 支持Host补丁管理 n Xencenter管理
| n 支持FC SAN、iSCSI、NFS共享存储。 n 支持虚拟多路CPU n 支持Multipath FC HBA n 支持VLAN,支持网卡捆绑(多个网卡可同时工作) n 支持资源QoS控制 n 支持Host和Guest系统性能监控。 n 支持资源池 n 支持VMotion在线迁移 n 支持HA n 支持Host和Guest系统补丁管理 n 支持Guest系统快照功能 n 支持Web方式的管理界面 n VirtualCenter管理ESX Server没有数量的限制(企业版)
| n 支持FC SAN、iSCSI、NFS共享存储。 n 支持虚拟多路CPU n 支持Host和Guest系统性能监控。 n 支持资源池 n 支持Guest系统快照功能 n 支持P2V、V2V的在线迁移
|
P2V迁移 | n 自带Linux的P2V迁移工具XenConverter n Xenconvert也支持windows的p2v n | 自带Windows/linux(beta)的P2V迁移工具Vmware Converter。 | 安装SCVVM管理工具 |
V2V迁移 | 有第三方免费工具将VMware虚拟机转换为XenServer虚拟机(包括Windows系统和Linux系统) | 支持导入第三方虚拟系统 | 安装SCVVM管理工具 |
优势对比 | n 半虚拟化技术最大的利用了硬件性能 n 与MS的合作及兼容性 n Citrix比vmware更懂应用,vmware更像是一个硬件厂商 n Xen对硬件的兼容性(CPU/硬盘/网络存储) n Xendesktop/xenapp带来的机会 n PVS的带来的附加功能 n 性价比 n 简单易用,部分管理功能比vm要出色
| n 功能强大 n VirtualCenter支持中文操作界面 n 对Guest系统的良好兼容性 n 对物理服务器的CPU要求低,不需要64位的CPU n Vmware view3带来的附加功能 n 技术成熟
| n 可以在ServerCore模式下安装Hyper-V n 和微软的产品有更好的兼容性和集成性 |