天圆地方,尽皆抽象。这是说一切事物都是某种抽象,即某种虚拟。虚拟的好处就是将复杂的细节隐藏,将无变为有,将不自由变为自由。这也正是云计算的魅力之所在。云计算的各种奇妙能力建立在两个基础之上:优美的软件架构和虚拟化技术。在这二者之中,虚拟化可能更加重要(或更加基础),因为虚拟化是云计算赖以存在的基础和提供的功能的实质,而优美的软件架构不过是在虚拟之上实现另一种虚拟的手段。不夸张地说,云计算完全构建于虚拟化和抽象之上,虚拟化(这里不仅指虚拟机监视器和云计算平台下的虚拟机)是云计算得以实现的核心基石。

我们先来看一个例子,一台物理主机有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),实际上,应用程序的代码和数据可能被分隔成多个碎片页或段,甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。

虚拟化技术主要分为以下几个大类。

1.服务器虚拟化

大多数服务器的容量利用率不足 15%,这不仅导致了服务器数量剧增,还增加了部署复杂性。实现服务器虚拟化后,多个操作系统可以作为虚拟机在单台物理服务器上运行,并且每个操作系统都可以访问底层服务器的计算资源,从而解决了效率低下问题。将服务器集群聚合为一项整合资源,可以提高整体效率并降低成本。服务器虚拟化还可以加快工作负载部署速度、提高应用性能并改善可用性。

2.网络虚拟化

网络虚拟化以软件的形式完整再现了物理网络,应用在虚拟网络上的运行与在物理网络上的运行完全相同。网络虚拟化向已连接的工作负载提供逻辑网络连接设备和服务(逻辑端口、交换机、路由器、防火墙、负载均衡器、vpn等)。虚拟网络不仅可以提供与物理网络相同的功能特性和保证,而且具备虚拟化所具有的运维优势和硬件独立性。

3.桌面虚拟化

通过以代管服务的形式部署桌面,可以使使用者更加快速地对不断变化的需求做出响应。企业可以快速轻松地向分支机构、外包员工、海外员工以及使用平板电脑的移动工作人员交付虚拟化桌面和应用,从而降低成本并改进服务。

4.软件定义的存储

海量数据和实时应用使存储需求达到新的高度。存储虚拟化对服务器内部的磁盘和闪存进行抽象,将它们组合到高性能存储池,并以软件形式交付。软件定义的存储(software defined storage, sds)是一种全新的存储方法,可从根本上提高运维模式的效率。

虚拟化技术已经在市场中得到广泛的应用,它促进了云计算概念的产生,并成为其主要支撑技术之一。虚拟化技术有效地提高了硬件的利用率,使得一台服务器可以承载以前多台服务器的负载,并且实现了用户任务和数据的隔离,增强了安全性。