最近想了解虚拟化技术的一些知识,虽然这不是第一次接触虚拟化概念,至少对起产品有过一些大致的了解,从最开始使用vmware,到后来发现qemu,到现在比较火热的Xen,再到最近才知道的openVZ。
虚拟化技术正开展得如火如荼.在加上现在用户对虚拟化也提出了一些要求,因此学习了解虚拟化技术就不可避免了。这次学习,我想写三篇日志,分别是虚拟化技术的介绍,记录我了解到的一些虚拟化技术;接下来就是openvz的学习,只所以选择openvz,而不是xen,其实是从我工作的角度来考虑的,pczou说在RedFlag
DC5.0上的Xen并不是很稳定,还需要一段时间的发展。
而openvz将在会出现在红旗linux的下一个版本中。所以我想还是先了解openvz吧;最后一篇就像记录一些于openvz或者说与虚拟化相关的一些高级话题,希望我能写道这篇 :)
OK,先聊聊我看到的虚拟化概念。
为什么需要虚拟化
虽然IT技术的迅猛发展,计算机性能突飞猛进,当前服务器资源的利用并不高,特别是CPU资源。从我们实施的现场来看,典型的机器配置是:
XEON CPU 3.0G * 2
ECC MEM 8G
SCSI 15Krpms 46.7G*3
而这样的服务器利用大约在10%左右,在行业有一句话,概括了这个现象:90%的时间,90%的服务器,CPU利用率不高于10%! 这是其中一个原因,其次便是虽然服务器的增加,管理成本,复杂性显著提高,而灵活性,服务水平则降低。这些都促成了虚拟化技术的发展。
虚拟化的好处
个人觉得虚拟化技术的最大好处降低了成本,包括管理成本、硬件成本、软件、基础设施建设成本、电力成本,IT管理员等,同时他提供了一个简单高效的IT管理模型,采用动态分配资源的方式,每一个应该程序可以动态的获取所需要的资源。虽然从另外一个侧面来将也提高了技术门口和再学习成本。但是相比其好处而言,应该可以忽略不计。
另外它也降低了维护和补丁造成的宕机时间,可以在软件,硬件故障时快速备份恢复系统,虚拟技术环境下,部署HA高可用服务器群会变得更见容易。 减少开通、配置、补丁、恢复的维护时间,增强安全性、隔离性,可允许自动管理维护更加人性化也是它的优点。
常见的虚拟化技术
虚拟化技术和分区技术(partition)是紧密结合在一起的,我能找到的虚拟化技术的发展,大概是这么四个阶段:硬件分区技术,虚拟机,准虚拟机和虚拟操作系统。
这四种技术的典型代表如下:
类型 代表产品 --------------------------------------------- 硬件分区 IBM/HP等大型机硬件分区技术 虚拟机 (Virtual Machine Monitor) EMC VMware Mircosoft Virtual PC/Server Parallels 准虚拟机 (Para-Virtualization) Xen Project 虚拟操作系统 ( OS Virtualization) SWsoft Virtuozzo/OpenVZ Project Sun Solaris Container HP vSE FreeBSD Jail Linux Vserver
1.硬件分区技术
硬件分区技术如下图所示:硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在有多个系统实例,同时启动了多个操作系统。

这种分区方法的主要缺点是缺乏很好的灵活性,不能对资源做出有效调配。随着技术的进步,现在对于资源划分的颗粒已经远远提升,例如在IBM AIX系统上,对CPU资源的划分颗粒可以达到0.1个CPU。这种分区方式,在目前的金融领域,比如银行信息中心,得到广泛采用。
2.虚拟机技术
在虚拟机技术(Virtual Machine Monitor)中,不再对底层的硬件资源进行划分,而是部署一个统一的Host系统。在Host系统上,加装了Virtual Machine Monitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终用户的应用程序,运行在Guest操作系统中。如下图所示。

这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点非常明显,虚拟硬件设备所消耗的巨大资源,大量代码需要被翻译执行,造成了性能的损耗,远超过了应用可接受的程度,使得其只能停留在实验室等特殊环境下,不能广泛的用于各种生产环境中。其代表产品有EMC旗下的VMware系列、微软旗下的Virtual PC/Server系列等。
3.准虚拟机技术
为了改善虚拟机技术(Virtual Machine Monitor)的性能,一种新的准虚拟化技术(Para-Virtualizion)技术诞生了。这种虚拟技术以Xen为代表,其特点是修改操作系统的内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统可以同时启动,由Xen Hypervisor来进行资源调配。

在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的Virtual Machine Monitor,性能稍有提高,但并不十分显著。为了进一步提高性能,Intel和AMD分别开发了VT和Pacifica虚拟技术,将虚拟指令加入到了CPU中。使用了CPU支持的硬件虚拟技术,将不再需要修改操作系统内核,而是由CPU指令集进行相应的转换操作。
4.操作系统虚拟化技术
最新的虚拟化技术已经发展到了操作系统虚拟化,以SWsoft的Virtuozzo/OpenVZ和Sun基于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。他们的特点是一个单一的节点运行着唯一的操作系统实例。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(即VE,Virtual Environment),也被称为虚拟专用服务器(即VPS,Virtual Private Server)。如下图所示:

在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。
下面是这四种技术的一个对比表
因为比较大,所以这里仅仅给出连接