云计算:想说就说出口(下)

时间:2022-07-15 05:51:33

云计算:想说就说出口(下)

一如前几年曾引领的IT趋势,如SOA、SaaS,对很多业内的人来说,对云计算的心情,就像那句多年前台湾流行的电视广告词,还停留在“…像恋爱,既期待,又怕受伤害”的阶段。

[待解决]

各种服务器平台上的虚拟化技术都差不多吗?有何区别?

[回答]

确实有区别。我们可以把它们分为三大类(如图1所示)。之所以有这些不同的方案,这和各种服务器硬件、包括计算架构的演进历史和市场定位有很大关联。

在比较早期的时候,针对高性能、高并发的计算要求,主要采取中高端服务器垂直、“向上扩展”(scale-up)的方式,通过增加更多的CPU和内存等资源的方式来达到。稍后随着分布式计算、并行计算、网格计算、Java、.NET、面向互联网应用等技术的普及,开始有越来越多采取水平、“向外扩展”(scale-out)的集群架构,配合中低端服务器,来满足需要不断线性增加的计算工作;而这也正是云计算起源的背景之一。

第一种是硬件分区(图1左侧),也就是将中、高端的Unix服务器划分为多个处理分区。

严格来说这还不能算是真正的虚拟化。这种技术约在10年前开始由各大Unix小型机厂商引入市场的,例如Sun的DSD,惠普的nPartition和IBM的LPAR。他们并不具备云计算所采用的hypervisor(下面叙述)的虚拟化功能。硬件分区的限制是,分区间不能共享资源,也不能在跨分区间动态地分配处理资源,或共享I/O。

另外两种(图中侧和右侧)是云计算公共云运营商或实施企业内部云/私有云主要采用的虚拟化方案。我们可以把它们想成是一座配合某类地形、地质所建筑的酒店,来住店的客人(各‘客’操作系统)有各自独立的房间,可自由享用房间内提供的资源(水、电、宽带、电视等),如果房间有问题,或者是临时需要多住几个人,店方可安排换房。

第二种是虚拟机管理程序(图中央),也就是一般所谓的“hypervisor”,这是大多数云计算运营商采用的技术。先定义什么是虚拟化,维基百科说这是“一种软件实现,使程序能运行在如真实机器般的环境”。

而“在计算机领域,‘管理程序’,也称为‘虚拟机监视器’,是一种基于软/硬件的‘平台虚拟化’软件,允许多个‘客’操作系统的镜像在一台主机上同时运行”。

我们还需要对上面定义中,“平台虚拟化”一词,做个“递归”的定义:“平台虚拟化,是将操作系统和底层的平台资源加以分离”。根据采用策略的不同,平台虚拟化可分为充分虚拟化(fullvirtualization)和准虚拟化(para-virtualization)等几种(因篇幅关系,在此只简单介绍这两种)。

充分虚拟化的目标在于提供一个完整的底层硬件仿真,因此“客”操作系统可完全不经过修改,运行在充分虚拟化的软件平台上。

准虚拟化则需要修改客户操作系统(类似安装驱动的概念),而不让“客”操作系统直接调底层硬件的I/O等指令;它是让“客”操作系统通过这些特别安装的“驱动”,先调用hypervisor管理程序,再由管理程序进行仿真,统一做更有效率的资源统筹调度。

如果以上叙述没让您读晕的话(希望没有),现在正式来谈hypervisor――它主要分为两类。第一类称作裸机管理程序(bare-metal hypervisor)。当今比较先进的各种管理程序皆属于此类,它是基于某个硬件平台上在几年前新增的高级CPU功能、固件(如×86平台的Intel VT和AMD-V),直接安装于裸机上。它的概念是,虚拟化管理程序,是一“薄”的管理系统,处理资源调度,“客”操作系统监视和硬件控制。它的特点是高效,在x86上的主要产品包括7基于Xen开源项目发展出的各种管理程序(如甲骨文的OracleVM、亚马逊EC2、Citrix的XenServer),VMWare的vSphere,和微软的Hyper-V等。

第二类管理程序则是运行于某操作系统(如Windows XP)之上的一个特殊的应用软件,在甲操作系统中以纯软件方式模拟底层的硬件指令集,有的也搭配让硬件直接trap某些I/O命令,让乙、丙、丁等客操作系统(如Lieux、OpenSolaris、Windows 7等),能顺利安装和运行在管理程序之上,巧妙地“骗过”这些客操作系统。由于它只是宿主OS上的一个应用,因此尽管它能在各客操作系统间进行资源分配和监控,但总体受制于宿主操作系统的资源分配,会和其他同时运行在宿主上的应用(如浏览器、PPT等)抢资源。

常见产品包括VMWare Workstation、Pa ralIeIWorkstation,Sun的VirtualBox,和微软的Virtual Server。此类管理程序是×86上最早的平台虚拟机。性能较差,不适合作为云计算的服务器,但非常适合某些提高生产力的场景,包括软件工程中的测试、debug工作、做软件产品售前演示等。

图1右侧第三种虚拟化的方案则是基于操作系统“容器”(container)的概念。这是在一个单一的操作系统内核中,切割出若干份独立的运行区,例如OpenSolaris的LDOM。

一如运行在hypervisor的各个“客”操作系统虚拟机镜像,每个容器拥有独立的系统资源,不受其他容器分区宕机的影响,而对整体资源的统筹分配和动态调度,则是通过底层软件技术来提供,所有容器共享整台的硬件资源。

一如基于hypervisor的技术,使用容器,可在同一台机器上同时运行Web服务器、应用服务器和数据库服务器,而且各自独立运行,不会像传统在一台机器安装运行三个服务器软件和应用那样各个进程相互抢资源,甚至彼此影响运行的稳定性和安全性。在总体CPU、内存、I/O等资源分配足够充裕的情况下,虚拟化方案只需要管理一台物理服务器,即可等同以往拆分成三台的效果。

与基于上述hypervJsor管理程序的技术方案相较,由于容器是基于单一操作系统,因此少了基于hypervisor虚拟化技术拥有的多操作系统的弹性,各个容器内的应用,必须绑定底层的(单一)操作系统来开发。尽管在各个客机间分离程度上居于弱势,容器却具有比hypervisor效能更高的优势。例如美国云计算运营商Joyent利用OpenSolaris的容器,搭配专有的软件加速器技术,号称MySQL每秒能处理的事务量,是同样数据库运行在亚马逊EC2环境的三倍。

上一篇:昆腾分级存储系统 下一篇:如何提高变电自动化实用水平