虚拟化技术并非随着云计算概念的诞生而诞生。1959年,计算机科学家Christopher Strachey在其发表的论文《大型高速计算机中的时间共享》(Time Sharing in Large Fast Computers)中首次提出了虚拟化的基本概念。
20世纪60年代,IBM已实现了虚拟化技术的商业应用。IBM Mainframe大型主机可以通过分区的功能拆分硬件资源来分配使用,使大型机的资源得到充分的利用;IBM也推出小型机的虚拟化,如1966年推出的S360/M67,支持插上多个CPU,并支持完整的虚拟化功能,可以运行当时的多个应用系统。
随着软硬件的进步,在20世纪90年代VMware公司率先实现了虚拟化进入Windows系统,即在x86服务器上架构虚拟化,并在1999年,推出了x86平台上的第一款虚拟化商业软件VMware Workstation,加快了虚拟化前进的脚步。
2000年后,各大软硬件厂商相继重视并加大虚拟化市场的投入,微软、Sun和IBM等公司相继收购了如Windows系统下的Virtual PC、Parallels的Workstation以及VirtualBox等小型软件厂商。
随着近年多核系统、集群、网格以及云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现。从操作系统的虚拟内存到Java语言虚拟机,再到目前基于x86体系结构的服务器虚拟化技术的蓬勃发展,都为虚拟化这一看似抽象的概念添加了极其丰富的内涵。
“虚拟化是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图。”——Jonathan Eunice,Illuminata Inc。
“虚拟化是表示计算机资源的逻辑组(或子集)的过程,这样就可以用从原始配置中获益的方式访问它们。这种资源的新虚拟视图并不受现实、地理位置或底层资源的物理配置的限制。”——维基百科。
“虚拟化:对一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一张通用的方式来查看并维护资源。”——Open Grid Service Architecture Glossary of Terms。
“虚拟化代表着这样一个巨大趋势,就是把物理资源转变为逻辑上可以管理的资源,打破了物理结构之间的壁垒,使原来闲置的资源得到充分的利用。”——IBM i中国开发团队。
由此可见,虚拟化的含义较为广泛,对不同的人来说可能意味着不同的东西,这取决于他们所处的环境。相对于现实,虚拟化就是将原本运行在真实环境上的计算机系统或组建运行在虚拟出来的环境中。在计算机方面,虚拟化一般是通过对计算机物理资源的抽象,提供一个或多个操作环境,实现资源的模拟、隔离或共享等。而在云计算环境中,是通过物理主机中同时运行多个虚拟机实现虚拟化,在这个虚拟化平台上,实现对多个虚拟机操作系统的监视和多个虚拟机对物理资源的共享(图5-1)。
本书将采用以下关于虚拟化的定义:
“虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。”(www.xing528.com)
一般虚拟化包括四个基本特征:
①分区:即在单一物理机上同时运行多个虚拟机。
分区意味着虚拟化层拥有为多个虚拟机划分服务器资源的能力;每个虚拟机可以同时运行一个单独的操作系统(相同或不同的操作系统),使得用户能够在一台服务器上运行多个应用程序;每个操作系统只能看到虚拟化层为其提供的“虚拟硬件”(虚拟网卡、CPU、内存等),使它认为运行在自己的专用服务器上。
②隔离:在同一物理机上的虚拟机之间是相互隔离的。
这意味着一个虚拟机的崩溃或故障(例如,操作系统故障、应用程序崩溃、驱动程序故障,等等)不会影响同一物理机上的其他虚拟机;一个虚拟机中的病毒、蠕虫等与其他虚拟机相隔离,就像每个虚拟机都位于单独的物理机上一样;不但可以进行资源控制以提供性能隔离,可以为每个虚拟机指定最小和最大资源使用量,以确保某个虚拟机不会占用所有资源而使得同一系统中的其他虚拟机无资源可用;还可以在单一机器上同时运行多个负载/应用程序/操作系统。
图5-1 云计算虚拟化模型
③封装:整个虚拟机都保存在文件中,可以通过移动文件的方式来迁移该虚拟机。
也就是说,整个虚拟机(包括硬件配置、BIOS配置、内存状态、磁盘状态、CPU态)都储存在独立于物理硬件的一组文件中。这样,使用者只需复制几个文件就可以随时随地根据需要复制、保存和移动虚拟机。
④硬件独立:无须修改就可以在任何服务器上运行虚拟机。
因为虚拟机运行在虚拟化层之上,所以操作系统只能看到虚拟化层提供的虚拟硬件,而且这些虚拟硬件也同样不必考虑物理服务器的情况。这样,虚拟机就可以在任何x86服务器(IBM、Dell、HP等)上运行而无须进行任何修改。这打破了操作系统和硬件以及应用程序和操作系统/硬件之间的约束,也就是实现了解耦。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。