圆形的地方都是抽象的。这意味着一切都是某种抽象,也就是某种虚拟。虚拟的好处是隐藏复杂的细节,化无为有,化自由为自由。这就是云计算的魅力。云计算的奇妙功能基于两个基础:
圆形的地方都是抽象的。这意味着一切都是某种抽象,也就是某种虚拟。虚拟的好处是隐藏复杂的细节,化无为有,化自由为自由。这就是云计算的魅力。云计算的奇妙功能基于两个基础:漂亮的软件架构和虚拟化技术。这两者中,虚拟化可能更重要(或者更基础),因为虚拟化是云计算的基础,是它所提供的功能的本质,而一个漂亮的软件架构只是在虚拟化之上实现虚拟化的另一种方式。毫不夸张的说,云计算完全建立在虚拟化和抽象之上,虚拟化(这里不仅仅指虚拟机监控器和云计算平台下的虚拟机)是云计算的核心基石。
我们先来看一个例子。一台物理主机有16GB内存,用户A的程序只需要2GB内存,而用户B的程序只需要4GB内存。如果不使用虚拟化技术,通常的解决方案如下。
两个用户的程序放在同一个物理机上,各自配置的运行环境和资源都能满足要求。问题是,如果程序的运行环境是Linux和Windows呢?如何防止用户A的程序窃取用户B的数据?
有人说再买一个2GB内存的物理主机就能解决以上两个问题。但这是浪费。如果还有一个用户需要1GB内存,他会再买一个1GB内存的物理主机吗?这时就需要一个更合理的解决方案:采用虚拟化技术,在物理主机上生成两个操作系统:一个4GB内存,一个2GB内存。操作系统的类型是可选的,虚拟化可以提供资源隔离的功能。
虚拟化技术的发展经历了几十年,最早对虚拟化技术的研究出现在20世纪50年代。1959年,克里斯托弗·斯特雷奇(Christopher Strachey)在国际信息处理会议上发表了题为《大型快速计算机中的时间共享》的学术论文。最初,虚拟化技术的出现源于分时系统的需求,解决了早期操作系统只能处理单一任务而不能处理分时多任务的问题。IBM 7044是首批使用虚拟化技术的计算机之一。之后,无论是大型机还是小型机都开始使用虚拟化技术。x86架构中虚拟化技术的使用使其应用更加广泛。在x86架构中,首次实现了纯软件的“全虚拟化”。后来出现了Denali项目和Xen项目中的半虚拟化模型,需要改变客户操作系统才能获得更高的性能。然后随着硬件技术的不断发展,Intel、AMD等厂商相继在x86架构的处理器中加入了对虚拟化技术的支持(例如Intel的VT技术),使得原本纯软件的所有功能都可以通过硬件来实现。
虚拟化是一个宽泛的术语,根据不同的环境,对不同的人可能有不同的含义。在计算机科学领域,虚拟化代表了计算资源的抽象,而不仅仅是虚拟机的概念。比如物理内存的抽象导致了虚拟内存技术,让应用程序认为自己有一个持续可用的地址空间。实际上,应用程序的代码和数据可能被分成多个碎片化的页面或片段,甚至被交换到磁盘和闪存等外部存储器。即使物理内存不足,应用程序也能成功执行。
虚拟化技术主要分为以下几类。
1.服务器虚拟化
大多数服务器的容量利用率不到15%,这不仅导致服务器数量急剧增加,也增加了部署的复杂性。服务器虚拟化后,多个操作系统可以在单台物理服务器上作为虚拟机运行,每个操作系统都可以访问底层服务器的计算资源,解决了效率低下的问题。将服务器集群聚合到一个集成资源中,可以提高整体效率,降低成本。服务器虚拟化还可以加快工作负载部署,提高应用程序性能和可用性。
2.网络虚拟化
网络虚拟化完全以软件的形式再现物理网络,其在虚拟网络中的应用与在物理网络中的应用完全相同。网络虚拟化提供逻辑网络连接设备和服务(逻辑端口、交换机、路由器、防火墙、负载平衡器、VPN等。)连接到工作负载。虚拟网络不仅可以提供与物理网络相同的功能特性和保障,还具有虚拟化的运维优势和硬件独立性。
3.桌面虚拟化
通过以托管服务的形式部署桌面,用户可以更快地响应不断变化的需求。企业可以快速轻松地向使用平板电脑的分支机构、外包员工、海外员工和移动员工交付虚拟化桌面和应用,从而降低成本并改善服务。
4.软件定义的存储
海量数据和实时应用使存储需求达到新的高度。存储虚拟化将服务器内部的磁盘和闪存抽象化,将它们组合成一个高性能存储池,并作为软件提供。软件定义存储(SDS)是一种全新的存储方式,可以从根本上提高运维模式的效率。
虚拟化技术在市场上得到广泛应用,推动了云计算概念的产生,并成为其主要支撑技术之一。虚拟化技术有效提高了硬件的利用率,使一台服务器承担之前服务器的负载,实现了用户任务和数据的隔离,从而增强了安全性。