2.1 知识导航——服务器虚拟化概述
2.1.1 虚拟机基础知识
虽然现在各种虚拟化技术还没能泾渭分明,但随着时间的推移,五种主流的虚拟化技术逐步展露,分别为:CPU虚拟化、网络虚拟化、服务器虚拟化、存储虚拟化和应用虚拟化。其中服务器虚拟化是最早细分出来的子领域,用户可以动态启用虚拟机(虚拟服务器),每个服务器实际上可以让操作系统误以为虚拟机就是实际硬件,以充分发挥物理服务器的计算潜能,迅速应对数据中心不断变化的软硬件需求。
所谓虚拟机,是指以软件模块的方式,在某种类型的计算机(或其他硬件平台)及操作系统(或相应的软件操作平台)的基础上,模拟出另外一种计算机(或其他硬件平台)及其操作系统(或相应的软件操作平台)的虚拟技术。换言之,虚拟机技术的核心在于“虚拟”二字,虚拟机提供的“计算机”和真正的计算机一样,也包括CPU、内存、硬盘、光驱、软驱、显卡、声卡、SCSI卡、通用串行总线(Universal Serial Bus,USB)接口、外部控制器接口(Peripheral Component Interconnect,PCI)接口、基本输入/输出系统(Basic Input/Output System,BIOS)等。在虚拟机中可以和真正的计算机一样安装操作系统、应用程序和软件,也可以对外提供服务。
Microsoft、Oracle、DELL等国际知名IT公司都有虚拟机软件产品:DELL收购的虚拟机软件VMWare,包括Workstation、GSX Server、ESX Server;Oracle收购了VirtualBox,演变成完全开源的Oracle VM VirtualBox;Microsoft公司的虚拟机软件收购自Connectix公司,经过不断的升级,目前提供“Hyper-V”服务,能够让用户在不使用第三方虚拟化软件的情况下,直接在系统中创建虚拟主机操作系统,成为其最具有吸引力的特点之一。
虚拟机既可以用于生产,也可以用于实验。所谓用于生产,主要包括以下两方面。
1)用虚拟机可以组成产品测试中心。通常的产品测试中心都需要大量的、具有不同环境和配置的计算机及网络环境,如有的测试需要Windows 98、Windows 2000 Server、Windows XP、Vista/7/10甚至Windows Server 2003/2008/2012/2016等环境,而每个环境例如Windows XP,又需要Windows XP(无补丁)、Windows XP安装SP1补丁、Windows XP安装SP2补丁这样的多种环境。如果使用“真正”的计算机进行测试,则需要大量的计算机,而使用虚拟机可以降低和减少企业在这方面的投资而不影响测试的进行。
2)用虚拟机可以“合并”服务器。许多企业会有多台服务器,但有可能每台服务器的负载比较轻或者服务器总的负载比较轻。这时候就可以使用虚拟机的企业版,在一台服务器上安装多个虚拟机,其中的每台虚拟机都用于代替一台物理的服务器,从而为企业减少投资。
所谓用于实验,就是指用虚拟机可以完成多项单机、网络和不具备真实实验条件、环境的实验。虚拟机可以做多种实验,主要包括以下三类。
1)一些“破坏性”的实验,比如需要对硬盘进行重新分区、格式化,重新安装操作系统等操作。如果在真实的计算机上进行这些实验,可能会产生的问题是,实验后系统不容易恢复,因为在实验过程中计算机上的数据被全部删除了。因此这样的实验需要专门占用一台计算机。
2)一些需要“联网”的实验,例如做Window Server 2016联网实验时,需要至少三台计算机、一台交换机、三条网线。如果是个人做实验,则不容易找到三台计算机;如果是学生上课做实验,以中国高校现有的条件(计算机和场地),很难实现。而使用虚拟机,可以让学生在“人手一机”的情况下很“轻松”地组建出实验环境。
3)一些不具备条件的实验,例如Windows集群类实验,需要“共享”的磁盘阵列柜,而一个最便宜的磁盘阵列柜也需要几万元,如果再加上集群主机,则一个实验环境大约需要十万元以上的投资。如果使用虚拟机,只需要一台配置比较高的计算机就可以了。另外,使用VMware虚拟机,还可以实现一些对网络速度、网络状况有要求的实验,例如需要在速度为64Kbit/s的网络环境中做实验,这在以前是很难实现的,而使用VMware Workstation的Team功能,则很容易实现从28.8K~100Mbit/s之间各种网络速度的实验环境。
在学习虚拟机软件之前,需要了解一些基本的名词和概念。
● 主机和主机操作系统:安装VMWare Workstation(或其他虚拟机软件如VirtualBox、Hyper-V,下同)软件的物理计算机称作“主机”,它的操作系统称作“主机操作系统”。
● 虚拟机:使用VMWare Workstation(或其他虚拟机软件)软件,由软件“虚拟”出来的一台计算机,这台虚拟的计算机符合x86 PC标准,也有自己的CPU、硬盘、光驱、软驱、内存、网卡、声卡等一系列设备,这些设备是由软件“虚拟”出来的,但是在操作系统与应用程序看来,这些“虚拟”出来的设备也是标准的计算机硬件设备,它也会把这些虚拟出来的硬件设备当成真正的硬件来使用。虚拟机在VMWare Workstation的窗口中运行,也可以在虚拟机中安装操作系统及软件,如Linux、Windows、NetWare及Office、VB、VC等。
● 客户机系统:在一台虚拟机内部运行的操作系统称为“客户机操作系统”或者“客户操作系统”。
● 虚拟机硬盘:由VMWare Workstation(或其他虚拟机)在主机硬盘上创建的一个文件,在虚拟机中“看成”一个标准硬盘来使用。VMWare虚拟机也可以直接使用主机物理硬盘作为虚拟机使用的硬盘。
● 虚拟机内存:由VMWare Workstation(或其他虚拟机)在主机提供的一段物理内存,这段物理内存被作为虚拟机的内存。
● 虚拟机配置:配置虚拟机的硬盘(接口、大小)、内存(大小)、是否使用声卡、网卡的连接方式等。
● 虚拟机配置文件:记录VMWare Workstation(或其他虚拟机)创建的某一个虚拟机的硬件配置、虚拟机的运行状况等的文本文件,与虚拟机的硬盘文件等在同一个目录中保存。
● 休眠:计算机在关闭前首先将内存中的信息存入硬盘的一种状态,将计算机从休眠中唤醒时,所有打开的应用程序和文档都会恢复到桌面上。
2.1.2 VMWare虚拟机简介
VMWare虚拟机是VMWare公司(VMWare公司被EMC收购,EMC又被DELL收购)开发的专业虚拟机软件,分为面向客户机的VMWare Workstation及面向服务器的VMWare GSX Server、VMWare ESX Server(本书主要介绍VMWare Workstation,在后面的项目中如果没有特殊说明,所说的VMWare即是VMWare Workstation)。
VMWare虚拟机拥有VMWare公司自主研发的Virtualization Layer(虚拟层)技术,它可以将真实计算机的物理硬件设备完全映射为虚拟的计算机设备,在硬件仿真度及稳定性方面做得非常出色。此外,VMWare虚拟机提供了独特的Snapshot(还原点)功能,可以在虚拟机运行的时候随时使用Snapshot功能,将虚拟机的运行状态保存为还原点,以便在任何时候迅速恢复虚拟机的运行状态,这个功能非常类似于某些游戏软件提供的即时保存游戏进度功能。而且通过软件提供的VMWare Tools组件,可以在VMWare虚拟机与真实的计算机之间实现鼠标箭头的切换、文件的拖动及复制粘贴等,操作非常方便。
在支持的操作系统类型方面,VMWare虚拟机可以支持的操作系统的种类比微软公司的虚拟机更为丰富。VMWare虚拟机软件本身可以安装在Windows 7/10/Server 2008或Linux中,并支持在虚拟机中安装Microsoft Windows全系列操作系统、MS-DOS操作系统、Red Hat等诸多版本的Linux操作系统、Novell NetWare操作系统及Sun Solaris操作系统。
此外,VMWare虚拟机相比微软公司虚拟机的另一显著特点是其强大的虚拟网络功能。VMWare虚拟机提供了对虚拟交换机、虚拟网桥、虚拟网卡、NAT设备及DHCP服务器等一系列网络组件的支持,并且提供了Bridged Network、Host-only Network及NAT三种虚拟的网络模式。通过VMWare虚拟机,可以在一台计算机中模拟出非常完整的虚拟计算机网络。然而,VMWare虚拟机将为Windows安装两块虚拟网卡及三个系统服务,同时还会常驻三个进程,因此会为Windows带来一些额外的运行负担。
VMWare可以支持配备有双CPU的宿主机,并且可以在虚拟机中有效地发挥出双CPU的性能优势,而很多虚拟机软件虽然可以在配备有双CPU的宿主机中安装,却只能利用双CPU中的一颗CPU。此外,当在VMWare中建立了新的虚拟机,并为虚拟机设置了虚拟硬盘后,VMWare将在宿主机的物理硬盘中生成一个虚拟硬盘文件,其扩展名为.VMDK,这是VMWare专用的虚拟硬盘镜像文件的格式。无论在VMWare中对虚拟硬盘做了哪些修改,实际都是以间接的方法在宿主机中对.VMDK文件进行修改。
VMWare本身对计算机硬件配置的要求不高,凡是能够流畅地运行Windows 7/10/Server 2003/Vista/Server 2008的计算机基本都可以安装运行VMWare。然而,VMWare对计算机硬件配置的需求并不仅限于将VMWare在宿主操作系统中运行起来,还要考虑计算机硬件配置能否满足每一台虚拟机及虚拟操作系统的需求。宿主机的物理硬件配置直接决定了VMWare的硬件配置水平,宿主机的物理硬件配置水平越高,能够分配给VMWare的虚拟硬件配置就越强,能够同时启动的虚拟机也就越多。建议在实验环境中使用较高档次配置的宿主机。
总的来说,VMWare对CPU、内存、硬盘、显示分辨率等方面要求较高。建议为宿主机配备并行处理能力较强、二级缓存容量较大的CPU,以便使虚拟机达到最佳运行效果;建议为宿主机配备较大容量的物理内存与物理硬盘,以便可以为虚拟机分配更多的内存空间与硬盘空间;建议为宿主机配备支持高分辨率的显卡与显示器,以便尽可能完整地、更多地显示虚拟机窗口。
2.1.3 Hyper-V虚拟化技术简介
微软在2003年收购了推出了Virtual PC软件的Connectix公司,并在其后推出了Virtual Server服务器虚拟化软件。Virtual Server要求虚拟系统的位数和真实系统需要一致,同时仅支持在虚拟机里安装Windows系统,所以很多用户不再使用,转而使用Hyper-V。
Hyper-V是与Windows Server 2008同时发布的软件,已成为微软操作系统的一个重要角色,能提供可用来创建虚拟化服务器计算环境的工具和服务,它能够让用户不使用VMWare、VirtualBox等第三方虚拟化软件的情况下,直接在系统中创建虚拟操作系统。例如,主机操作系统是Windows 10,而虚拟机系统运行的则是Windows Vista或Windows Server 2008,这对从事网络研究和开发的用户来说无疑是非常强大的功能。
和VMWare、VirtualBox等第三方虚拟化软件相比,Hyper-V虚拟化技术对计算机系统要求较高,一套完整的Hyper-V虚拟化技术方案需要系统在硬件和软件两方面进行支持。
1.虚拟化技术的硬件要求
在Windows中使用Hyper-V虚拟化技术,对于硬件系统方面的要求比较高,除了硬盘有足够可用空间用于创建虚拟系统,内存足够大以便流畅运行系统之外,在CPU和主板等方面也有较高的要求。Hyper-V虚拟化需要特定的CPU,只有具备以下特征的CPU才可以支持Hyper-V虚拟化技术。
● 指令集能够支持64位x86扩展。
● 硬件辅助虚拟化,需要具有虚拟化选项的特定CPU,也就是包含Intel VT(Vanderpool Technology)或者AMD Virtualization(AMD-V)功能的CPU。
● 安全特征需要支持数据执行保护(DEP),如果CPU支持则系统会自动开启。
和CPU相比,Hyper-V对主板要求并不太高,只要确保主板支持硬件虚拟化即可,用户可以通过查阅主板说明书或者登录厂商的官方网站进行查询。一般来说,从P35芯片组开始,所有的主板都支持硬件虚拟化技术,因此只要主板型号不太陈旧就应该支持Hyper-V技术。
注意
① 对于大部分用户来说,可能并不知道自己计算机的CPU是否满足Hyper-V技术的要求,可以借助EVEREST Corporate Edition软件来查看CPU是否符合要求:在网上下载EVEREST Corporate Edition,安装运行后,依次单击展开左侧“主板”“CPUID”项目,此时可以在右侧窗口具体信息中查看“指令集”部分的“64位x86扩展(AMD64,Intel64)”是否支持,如图2-1所示。在“安全特征”部分查看“数据执行保护(DEP)(DEP,NX,EDB)”项目是否支持,在“CPUID特征”部分查看“Virtual Machine Extensions(Vanderpool)”项目是否支持。通过这三个步骤可得知计算机的CPU是否支持Hyper-V技术。
② 在Windows的“运行”对话框输入“msinfo32”命令,打开“系统信息”窗口,如图2-2所示。滚动窗口到底部,即可看到四项Hyper-V信息,只有全部为“是”才能运行Hyper-V虚拟机,假如其中的第三项“固件中启用的虚拟化”值为“否”,可能是因为未在BIOS设置中开启虚拟化,应手动开启。
图2-1 查看CPU指令集
图2-2 查看系统信息
2.虚拟化技术的软件要求
虽然Windows Server 2008有多个版本,但是并不是每个版本的Windows Server 2008都支持Hyper-V技术,只有64位版本的Windows Server 2008标准版、企业版和数据中心版才能安装使用Hyper-V服务。如果用户需要使用Hyper-V,那么在安装操作系统的时候一定要选择正确的版本。
Windows Server从2012版本开始,包括Windows Server 2016,只有64位的版本。它们都有Hyper-V的功能,但要注意的是标准版仅仅提供最多两个Hyper-V虚拟机的许可证,而数据中心版提供了无限制基于Hyper-V虚拟机的许可证。
2.1.4 VirtualBox虚拟化技术简介
VirtualBox是一款遵从GPL协议的开源虚拟机软件,最早是由Innotek公司开发,然后由Sun公司出品的软件,使用Qt编写,在Sun被Oracle公司收购后正式更名成Oracle VM VirtualBox。该软件目前是Oracle公司xVM虚拟化平台技术的一部分。图2-3是VirtualBox软件的运行界面。
VirtualBox是一款功能强大、操作简单的开源虚拟机,支持Windows、Linux和Mac等系统的主机,得到不少虚拟机爱好者和技术人员的偏爱,如图2-4所示为在VirtualBox虚拟机软件中运行Ubuntu系统。
图2-3 Oracle VM VirtualBox
图2-4 VirtualBox运行Ubuntu
VirtualBox是目前功能最强大的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优秀,支持的操作系统包括Windows(从Windows 3.1到Windows10、Windows Server 2016,所有的Windows系统都支持)、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等。