3.1 虚拟化的概念及特征
随着近年来多核系统、集群、网格以及云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现。从操作系统的虚拟内存到Java语言虚拟机,再到目前基于x86体系结构的服务器虚拟化技术的蓬勃发展,都为虚拟化这一看似抽象的概念添加了极其丰富的内涵。
“虚拟化是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图。”——Jonathan Eunice,Illuminata公司
“虚拟化是表示计算机资源的逻辑组(或子集)的过程,这样就可以用从原始配置中获益的方式访问它们。这种资源的新虚拟视图并不受现实、地理位置或底层资源的物理配置的限制。”——维基百科
“虚拟化:对一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一张通用的方式来查看并维护资源。”——OGSA(Open Grid Service Architec-ture)术语表
“虚拟化代表着这样一个巨大趋势,就是把物理资源转变为逻辑上可以管理的资源,打破了物理结构之间的壁垒,使原来闲置的资源得到充分的利用。”——IBM i中国开发团队
由此可见,虚拟化的含义较为广泛,对于不同的人来说可能意味着不同的东西,这取决于他们所处的环境。相对于现实,虚拟化就是将原本运行在真实环境上的计算机系统或组建运行在虚拟出来的环境中。在计算机方面,虚拟化一般是通过对计算机物理资源的抽象,提供一个或多个操作环境,实现资源的模拟、隔离或共享等。而在云计算环境中,是通过物理主机中同时运行多个虚拟机实现虚拟化,在这个虚拟化平台上,实现对多个虚拟机操作系统的监视和多个虚拟机对物理资源的共享,如图3-1所示。
图3-1 云计算虚拟化模型
一般虚拟化包括四个基本特征:
1)分区。即在单一物理机上同时运行多个虚拟机。分区意味着虚拟化层拥有为多个虚拟机划分服务器资源的能力;每个虚拟机可以同时运行一个单独的操作系统(相同或不同的操作系统),使得用户能够在一台服务器上运行多个应用程序;每个操作系统只能看到虚拟化层为其提供的“虚拟硬件”(虚拟网卡、CPU、内存等),使它认为运行在自己的专用服务器上。
2)隔离。在同一物理机上的虚拟机之间是相互隔离的。这意味着一个虚拟机的崩溃或故障(例如,操作系统故障、应用程序崩溃、驱动程序故障等)不会影响同一物理机上的其他虚拟机;一个虚拟机中的病毒、蠕虫等与其他虚拟机相隔离,就像每个虚拟机都位于单独的物理机上一样;不但可以进行资源控制以提供性能隔离,为每个虚拟机指定最小和最大资源使用量,以确保某个虚拟机不会占用所有资源而使得同一系统中的其他虚拟机无资源可用,还可以在单一机器上同时运行多个负载/应用程序/操作系统。
3)封装。整个虚拟机都保存在文件中,可以通过移动文件的方式来迁移该虚拟机。也就是说整个虚拟机(包括硬件配置、BIOS配置、内存状态、磁盘状态、CPU态)都储存在独立于物理硬件的一组文件中。这样,使用者只需复制几个文件就可以随时随地根据需要复制、保存和移动虚拟机。
4)硬件独立。无需修改就可以在任何服务器上运行虚拟机。因为虚拟机运行在虚拟化层之上,所以操作系统只能看到虚拟化层提供的虚拟硬件;而且这些虚拟硬件也同样不必考虑物理服务器的情况;这样,虚拟机就可以在任何x86服务器(IBM、戴尔、惠普等)上运行而无需进行任何修改。这打破了操作系统和硬件以及应用程序和操作系统/硬件之间的约束,也就是实现了解耦。