平常心认识和学习虚拟化

虚拟化简史

当下,虚拟化技术十分流行,但其实虚拟化并非最新技术,这种技术早在20世纪60年代就已经出现,并且在当时的IBM大型机(mainframe)上得以实现——在IBM CP-40上成功地运行了14部定制的IBM System/360。随后IBM推出的IBM S360/M67更是拥有一个转换层,提供了完整的虚拟化功能,该主机可以运行虚拟化的S360/M67,这可以说是虚拟化技术的第一次成功应用。

至于虚拟化的广泛应用,这就不得不提到一家公司,这家公司的名字叫VMware,当时该公司成功地实现了X86架构的虚拟化,并推出了比较成熟的产品——VMware Workstation。为什么要这么说呢?是因为要在X86架构上实现虚拟化要比其他平台复杂得多。为什么这么说呢?

由于X86架构最初主要用于个人计算机之上,所以当时Intel在设计X86 CPU时,为这种平台架构定义好了4个特权级别(privilege level),分别是ring 0、ring 1、ring 2、ring 3,并且规定操作系统的内核运行在ring 0这个级别,操作系统的应用程序运行在ring 3级别之上,所以ring 0和ring 3也就成为X86 CPU最常用的运行级别。至于ring 1和ring 2则比较少用到,驱动程序会用到这两个级别,并且每个运行级别的程序只能在自己的运行级别运行,所以这4个特权运行级别其实就是X86架构实现虚拟化的最大障碍。

试想作为一个虚拟化应用程序,按照运行级别,它应该运行在ring 3,而这个程序之上却要安装操作系统,操作系统则需要ring 0运行级别,在ring 3之上无法运作,这一直是困扰X86虚拟化技术实现的重大难题。

幸运的是,VMware在1998年使用BT(Binary Translate)技术解决了这一难题,随后推出了著名的VMware Workstation系列产品,并迅速占领市场。经过多年的创新和发展,VMware已经成为虚拟化主导厂商,占有虚拟化市场60%以上的份额,产品线也扩展到企业虚拟化、虚拟数据中心以及云计算等多个领域。

在虚拟化技术崛起这一段时间,X86的主导厂商Intel和AMD也推出了VT/AMD-V和EPT/NPT等多项硬件辅助虚拟化方面的新技术。前者扩展了X86架构,将传统的ring 0到ring 3特权级别定位为非Root模式,增加了Root Mode,该特权级别可以理解为ring -1,虚拟化程序可以直接运行在该级别,而不需要任何辅助技术就可以轻松实现虚拟化;而后者则优化了虚拟机系统内存管理单元(MMU),从而优化了虚拟机内存使用,从而提升了虚拟机的效率。

虚拟化技术的类别及主流的虚拟化产品

虚拟化技术经过了这么多年的发展,已经比较成熟了,同时也产生了一个体系庞大、门类复杂的虚拟化产品家族。下面就来详细介绍一下虚拟化的最基本专业名词、分类以及主流产品。

1.Host/Host OS和Guest/Guest OS

Host指的是物理主机,Guest指的是虚拟主机,而Host OS指的是物理主机的操作系统, Guest OS则是指虚拟主机的操作系统。例如,在物理主机上安装了Windows 7系统,Windows 7中安装了VMware Workstation,在Workstation中创建了一部Ubuntu虚拟机,然后在虚拟机中运行了Ubuntu操作系统,这时我们就称物理主机为Host,Windows 7为Host OS,Workstation中创建的虚拟主机为Guest,Ubuntu就是Guest OS。

2.寄居架构(Hosted)和裸金属架构(Bara metal)

寄居架构的虚拟化产品需要运行在某一操作系统之上,如常用的VMware Player、VirtualBox、VMWare Workstation以及停止更新的VMware Server等虚拟化产品都需要一个操作系统环境,或者是Windows,或者是Linux,抑或是Mac OS,没有操作系统这些虚拟化产品无法运作。

裸金属架构则要比寄居架构潇洒得多,无须任何操作系统就可以直接在裸机上运行,典型产品如VMware ESXi,可以在裸机上直接运行,而无须其他任何操作系统。

3.Nested Host

Nest在英文中是鸟巢、筑巢的意思。在虚拟化领域,Nested指的是一种虚拟机,即虚拟机中的虚拟机(OSes in OS),具体点说,就是Windows 7是Host OS,Ubuntu是Guest OS,而在Ubuntu中又使用VirtualBox创建了一部Windows XP虚拟机,那么这部Windows XP虚拟机就称为Nested Host。还有VMware推出的虚拟机方案vSphere in a box,也是基于Nested Host的。

4.P2V

P2V是Physical-to-Virtual的缩写,就是将物理计算机的操作系统转换为虚拟机操作系统的操作,这个操作可以通过VMware提供的vCenter Converter工具实现,也可以通过第三方工具实现。

云计算

随着虚拟化技术的成熟,云计算技术也变得越来越流行了,比较著名的云计算厂商有Amazon、Google以及Salesforce,Amazon是IaaS技术的代表厂商,Google的Google App Engine是PaaS的代表厂商,而Salesforce则是SaaS的代表厂商。那IaaS、PaaS、SaaS是什么意思呢?下面就逐一进行详细介绍。

1.IaaS

IaaS是Infrastructure as a Service的英文缩写,翻译过来就是“基础架构作为服务”的意思。那计算机的基础架构是什么呢?无外乎CPU、内存、硬盘等,其实质就是一部虚拟机,你可以从Amazon或其他IaaS提供商那里买到合乎需求(硬件、流量、价格等)的虚拟机作为你的服务器,并且可以通过浏览器快速部署操作系统和服务,令你的Web Service快速上线并提供服务。本书会介绍Amazon的云服务。

2.PaaS

PaaS是Platform as a Service的英文缩写,翻译过来就是“平台即服务”的意思。该平台主要是为广大程序员以及厂商提供一个在线的开发、测试和托管的服务,尤其适合网络应用程序的开发和维护。Google App Engine就是一个成功的典范,开发者可以轻而易举地在Google App Engine上注册账号进行开发和测试,至于开发环境和数据库,这些不用开发者操心,Google App Engine已经为大家准备好了,直接使用即可,从而大大提高了开发效率。

3.SaaS

SaaS是Software as a Service的英文缩写,这个大家可能比较熟悉,就是常说的“软件即服务”,软件作为一种服务提供给客户使用,著名的Salesforce就是该领域的佼佼者,为客户提供多种专业服务,如CRM、Marking、Chatter等。

关于本书

本书是一本虚拟化的入门图书,从日常虚拟化应用开始,进而介绍企业虚拟化应用。由于虚拟化技术是一个很大的概念,所以本书不会面面俱到,所有的虚拟化应用都是从个人或企业日常操作中精选出来的,以主流的VMware个人版/企业版和VirtualBox为例来介绍,最适合边学习边应用。

本书特色

本书最大的特色就是突出最为常用的虚拟化工具,如VMware以及VirtualBox丰富的应用,图文并茂,内容翔实,多数知识点都联系实际应用,并可以帮助读者解决应用中的实际问题和学习中的难题,提高应用效率。本书主要有以下三大特色:

● 突出最为常用的虚拟化应用,通过虚拟化应用实例来介绍虚拟化工具的使用。

● 虚拟化应用的选择全面且重点突出,从日常的虚拟化应用到企业的虚拟化应用全面涉及,但又重点讲解具有实用价值的应用。

● 循序渐进地学习,从日常的虚拟化应用,逐步过渡到企业级虚拟化应用。

本书配套虚拟机

为便于读者学习,本书配有创建好的虚拟机,下载地址如下。

Ubuntu 12.04:skydrive.live.com/redir?resid=E78559025012C3C8!6174&authkey=!AFg XCHVSCp2ivS0

OpenSUSE 12.2:skydrive.live.com/redir?resid=E78559025012C3C8!6158&authkey=!AK n64mx6Gfo-gUk

虚拟机版本需求:VMware Player 5.0/VMware Workstation 9及以上版本

用户名:linux

密码:1234567

关于图书的建议、批评

请发邮件到:hxl2000@gmail.com

感谢

特别感谢电子工业出版社的李冰和黄爱萍这两位编辑的支持和鼓励,使得本书能够如此之快和读者见面。

本书由何晓龙策划和编写,参与本书创作和编写的有何晓龙、上海电力学院的邢利荣。由于虚拟化应用范围十分广泛,再加上水平有限,书中疏漏和错误之处在所难免,敬请广大读者批评指正。

何晓龙

2013年4月