三种常用虚拟化技术 计算虚拟化包含哪几种


天圆地方,尽皆抽象 。这是说一切事物都是某种抽象,即某种虚拟 。虚拟的好处就是将复杂的细节隐藏,将无变为有,将不自由变为自由 。这也正是云计算的魅力之所在 。云计算的各种奇妙能力建立在两个基础之上:优美的软件架构和虚拟化技术 。在这二者之中,虚拟化可能更加重要(或更加基础),因为虚拟化是云计算赖以存在的基础和提供的功能的实质,而优美的软件架构不过是在虚拟之上实现另一种虚拟的手段 。不夸张地说,云计算完全构建于虚拟化和抽象之上,虚拟化(这里不仅指虚拟机监视器和云计算平台下的虚拟机)是云计算得以实现的核心基石 。
我们先来看一个例子,一台物理主机有16GB内存,用户A的程序只需要2GB内存,用户B的程序只需要4GB内存,如果没有用虚拟化技术,通常的解决方案如下 。
【三种常用虚拟化技术 计算虚拟化包含哪几种】两用户的程序放到同一台物理机器上,各自配置的运行环境和资源都能满足 。问题是,程序的运行环境一个是Linux,一个是Windows怎么办?又如何防止用户A的程序不会窃取用户B的数据呢?
有人说,再买一台2GB内存的物理主机,就解决了上面两个问题 。可是这样做很浪费 。如果又有一个需要1GB内存的用户,就再买个1GB内存的物理主机吗?此时需要更加合理的解决方法:采用虚拟化技术,在物理主机上生成两个操作系统:一个4GB内存,一个2GB内存,操作系统的类型任选,虚拟化能够提供资源隔离的功能 。
虚拟化技术的发展经历了几十年,对于虚拟化技术最早的研究出现于20世纪50年代 。1959年,克里斯托弗·斯特雷奇(Christopher Strachey)在国际信息处理大会上发表了一篇名为《大型高速计算机中的时间共享》(Time Sharing in Large Fast Computers)的学术论文 。起初,虚拟化技术的出现源于对分时系统的需求,它解决了早期操作系统只能处理单任务而不能处理分时多任务的问题 。IBM 7044是最早使用虚拟化技术的计算机之一,之后,大型机和小型机都开始使用虚拟化技术 。而在x86架构中对虚拟化技术的使用,使虚拟化技术得到了更加广泛的应用 。在 x86 架构中,最开始实现的是纯软件的“全虚拟化” 。后来又出现了Denali项目和Xen项目中的半虚拟化模式,需要对客户机操作系统进行更改,从而获得更高的性能 。而后随着硬件技术的不断发展,Intel和AMD等厂商都相继将对虚拟化技术的支持加入x86架构处理器中(例如,Intel的VT技术),使原来纯软件的各项功能都可以用硬件实现 。
虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这取决于他们所处的环境 。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念 。例如对物理内存的抽象,产生了虚拟内存技术,使应用程序认为其自身拥有连续可用的地址空间(Address Space),实际上,应用程序的代码和数据可能被分隔成多个碎片页或段,甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行 。

推荐阅读