我们回忆一下上周讲的主要内容:
云就是一种按需分配的理念,云计算就是按需分配各种IT或IP资源。
虚拟机不代表云计算全部,虚拟机、物理机、甚至小机都是云计算资源池按需分配的资源。
虚拟机本身并不节约资源,也不一定节能降耗。
计算虚拟化的前提是快速发展的硬件处理能力和一群偷懒的IT人员。在业界有一个“摩尔定律”,18个月硬件的处理能力就翻翻。物理机的处理能力越来越强大。IT开发人员往往会不假思索的选择当前主流的硬件配置,因为这样看起来是多赢的:开发者可以省掉很多优化工作,维护者可以高枕无忧,使用者觉得运行流畅。目前,运行在物理机的平均利用率都不会超过10%,就是二个原因造成的。
怎么样提供资源池的利用率,是IT系统投资者考虑的问题。通过计算虚拟化可以很好的解决这个问题。
计算虚拟化总体上有2个发展趋势,一是将一台物理服务器虚拟成为多台逻辑机器,二是将多台物理服务器虚拟成为一台逻辑机器。我们将详细讨论第一种“一虚多”的情况。

计算虚拟化的架构
寄居架构就是在操作系统之上安装和运行虚拟化软件,依赖于主机操作系统对设备的支持和物理资源的管理; 即从下往上看:物理服务器——操作系统——虚拟化软件——Guest操作系统——应用。优点:简单,便于实现,缺点:安装和运行应用程序依赖于主机操作系统对设备的支持。
裸金属架构就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。即从下往上看:物理服务器——虚拟化软件——操作系统——应用。 优点:虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活;缺点:虚拟层内核封闭,开发难度较大。

全虚拟化(Full virtualization), 也称为原始虚拟化技术。在安装了虚拟化软件后,Hypervisor层完全屏蔽了物理硬件。虚拟机上的guest 操作系统是通过Hypervisor来分享底层硬件。全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源,还需要中转。全虚拟化最大的优点是操作系统没有经过任何修改,它的唯一限制是操作系统必须能够支持底层硬件。
半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术,它使用Hypervisor分享存取底层的硬件, 但是虚拟机guest操作系统需要集成虚拟化方面的代码.,这样可以让guest操作系统直接和底层的硬件打交道 。 半虚拟化需要guest操作系统做一些修改(配合Hypervisor),这是一个不足之处. 但是半虚拟化提供了与原始系统相近的性能,与全虚拟化一样,半虚拟化可以同时能支持多个不同的操作系统(其实是要操作系统支持它)。
Xen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化的帮助下,现在也支持完全虚拟化MS windows了。KVM是一个简单的,但也非常强大的虚拟化引擎,它已经集成到Linux内核中去了,让内核天生有虚拟化的能力,因为KVM使用的是基于硬件的虚拟化技术,它不需要修改客户操作系统,因此,部署在一个受支持的处理器上,它可以从Linux支持任何平台。
我们来认识一下目前常用的虚拟化软件架构:
VmWareESX:完全虚拟化、裸金属架构:

VmWareESX是公认的虚拟化软件的“老大”,市场占有率最高,也是其他虚拟化软件的标杆。虽然价格上相比其他贵一点。但是从综合造价、系统可靠性、功能实现和技术演进上看,还是值得。我们的资源池就是以VmWareESX为核心打造的双活安全软件定义的内外一朵云。
CitrixXenServer:半虚拟化(大部分linux);全虚拟化(windows),硬件辅助虚拟化、裸金属架构
支持大部分的Linux操作系统和几乎所有的Windows系统,支持 Windows是全虚拟化的,如果需要支持半虚拟化Linux客户机操作系统,必须安装Linux支持包,它支持Linux运行在dom0,如果不安装这个包,所有操作系统都必须运行在硬件辅助模式下。

RedHat KVM:完全虚拟化,寄居架构(linux内核);祼金属架构RHEV
RHEL与RHEV的区别
RHEL(Red Hat Enterprise Linux)与RHEV(Red Hat Enterprise Virtualization)都提供KVM虚拟化,但这两者在KVM管理、功能与实施中有重大区别。RHEL是依附Linux内的一个功能,在适合小型环境,管理少量虚拟机,但不能交付最佳的性能与最优的KVM管理平台。在小型环境中,RHEL 6能满足你对开源虚拟化的所有要求。RHEV企业级KVM虚拟化,类似与VMWARE ESX。

Microsoft Hyper-V:半虚拟化,裸金属架构Hyper-VServer;寄居架构 Windows 2008

不管是哪种架构的计算虚拟化,都比物理机多出了虚拟化层,有的还多了一个操作系统,这些都是需要消耗物理机的性能的,虚拟化层一般认为是10%-20%;为了保证迁移的成功实施一般会预留20%以上的性能;为了隔离东西向流量可以部署虚拟防火墙(可选)、为了防病毒部署无代理的杀毒软件(可选),为了访问SRVSAN需要的代理(可选)、实现SDN、NFV功能等等(以上内容以后会逐步展开),都需要消耗系统的性能。通俗的说,当一台物理机还没有开始分配虚拟机,就可能消耗了一半物理机的性能。这些软件的平均造价往往会高于这台物理机的造价。所以当分配一台和物理机大小同样规格(如物理机是32C256G,分配虚拟机也是32C256G)的服务器,价格翻翻,性能减半,极其不划算。虚拟机适用的前提是小规格的计算要求。从投资和性能的角度,当虚拟机的规格是物理机的四分之一以下,才能产生价值。一般都以为数据库会很忙,配置的资源也会很多。其实并不一定,绝大多数的生产系统的数据库是可以通过小规格的虚拟机承载的。但不是说大规格的应用就不能利用虚拟机承载,可以对这些应用进行改造,通过水平扩展(Scale Out)的方式部署应用,这种部署方式既能满足计算要求,还能提高系统的稳定性。关于虚拟机应用的部署问题以后还会详细谈。
虚拟化软件分为开源和商用软件。开源的主要包括KVM和XEN,商用的主要包括VmWareESX、Microsoft Hyper-V。所谓国产的虚拟化软件包括阿里在内都是基于KVM或XEN开源基础上进行优化的。近几年KVM的发展趋势迅猛,主流的国产虚拟化软件纷纷都转向KVM。进过改头换面的国产虚拟化软件摇身一变成了商用软件,像极了香蕉,黄皮白心。





