表1:不同的组成部分对硬件平台的需求不同
环境
ESXServer
vCenterServer
vSphereClient
CPU
AMDOpteron/IntelXeon64-bit
2.0GHz以上Intel/AMDx86处理器
266MHz以上Intel/x86处理器(推荐500MHz以上)
内存
至少2GB
至少256MB(推荐512MB以上)
网络
至少1个网络适配器(BroadcomNetXtreme570x、IntelPRO/1000)
推荐千兆网络
注虽然ESXServer可以安装在SATA硬盘上,但是却不能在SATA硬盘上创建虚拟机。这是VMware的一个强制要求,主要是考虑到实际生产应用中VMware对于磁盘的I/O性能要求很高,而这正是SATA硬盘的软肋。
全虚拟化的主要概念是虚拟化层(VirtualizationLayer)被安装在物理机上并接管硬件,每一台虚拟机对于所有硬件的操作都需要经过虚拟化层的“翻译”最终落实到物理硬件上。做过数据库的人都知道,存储在文件系统上的数据库性能要明显低于存储在裸设备上的数据库的性能。同理可以想见,虚拟机的任何硬件访问性能都会低于实际的物理硬件性能。但问题在于,生产中使用的服务器产品的硬件配置越来越高,如HPProliantDL785G6最多可以配置8颗6核心Opteron8436SE和256GB内存。面对这些x86构架顶级服务器,目前很难有应用能够用足它们所有的CPU和内存,而虚拟化技术为CPU和内存富余资源进行复用提供了可行性。另外,企业用户还可以通过SAN网络连接存储系统以提高磁盘性能;通过多网卡的负载均衡以提高网络性能。
解决了关于性能的疑惑,我们再来了解一下VMwarevSphere和VMwareServer/Workstation之间的区别。VMwareServer/Workstation是基于宿主系统的虚拟化(图1),其可靠性十分依赖于宿主操作系统的稳定性。想象一下:十几台虚拟机跑在一台Windows上,遇到每月微软发布更新补丁的时候,十几台虚拟机都需要跟着服务器一起重启。这将是多么可怕的场景!
VMwarevSphere是使用“裸”虚拟化层的虚拟化技术(图2),VMware开发了一个用作虚拟化层的Linux内核操作系统直接安装在物理硬件上。这样做不仅提高了系统的可靠性,同时由于硬件访问由之前宿主系统模式的“虚拟操作系统→虚拟化层→宿主操作系统驱动→物理硬件”简化为“虚拟操作系统→虚拟化层→物理硬件”,因此避开了宿主系统的驱动、文件系统等性能干扰因素。
VMwarevSphere不是一个简单的基于单机的程序,而是一个较为复杂的、需要多台物理机才能正常工作的环境。它的结构如图3所示,包括了以下几部分:
1.ESX(或者免费的ESXi)的主机:虚拟机就运行在其上;2.vCenterServer:提供对于多台ESX主机的管理并提供附加功能;3.数据库服务器:存储vCenterServer的管理信息,保存为数据库形式;4.vSphereClient:连接到vCenterServer或者直接连接到ESX主机上对环境进行管理;5.ActiveDirectoryDomain:为多台vCenterServer提供集中化管理。
或许有些用户会不理解:平时对于一款软件的硬件要求、操作系统和数据库要求,我们往往一笔带过,为什么今天要专门列出来呢?这主要是因为在企业级环境中这种技术数据至关重要,如果稍有不慎就可能会前功尽弃。更重要的是,试用的过程需要用户对应这个软硬件需求来在试验平台上搭建一套VMwarevSphere环境,之后的安装和功能介绍都将在这套环境上进行。
表2:vCenterServer和vSphereClient支持的操作系统
操作系统
WindowsXPProSP232bit
Yes
WindowsXPProSP264bit
No
Windows2000
Windows2003SP1/SP2/R2/x64
Windows2003Standard/Web
WindowsVistaBusinessx86/x64SP1
WindowsVistaEnterprisex86/x64SP1
WindowsServer2008x86/x64
表3:支持的数据库服务器
IBMDB2Express-Cv9.5/ExpressEditionv9.5/WorkgroupServerEditionv9.5/EnterpriseServerEditionv9.5
MicrosoftSQLServer2005Express/Standardedition(SP2)/EnterpriseEdition(SP2)x86/x64MicrosoftSQLServer2008StandardEdition/EnterpriseEditionx86/x64
Oracle10gStandardEdition/EnterpriseEdition(Release1[10.1.0.3.0])/(Release2[10.2.0.1.0])Oracle11gStandardEdition/EnterpriseEdition
注我们以往熟悉并常用的SQLServer2000已经不在被支持的行列了。
即便只是实验环境,仍至少需要一颗4核心的处理器和6GB的内存,不过相信企业IT人员想要找到符合要求的平台并非难事。我们找了两台性能较高的普通PC且通过千兆局域网连接,它们的配置如表4所示。需要说明的是,普通PC和服务器有一个重要的区别,就是普通PC没有通过VMware兼容性认证。我们无法保证能在普通PC上成功安装对硬件有着苛刻要求的vSphereESXServer,所以我们的试用方案需要通过VMwareWorkstation的虚拟机安装vSphereESXServer。
表4:测试平台配置
测试平台
PC1
PC2
Corei7920
PhenomⅡX4945
6GBDDR31066
8GBDDR2667
Windows7Ultimatex64
Windows2008R2Datacenterx64
IP地址
192.168.1.10
192.168.1.3
就当前的硬件,我们做了如下规划:VMwareWorkstation需要工作在宿主操作系统下,因此需要为Windows7和Windows2008R2都预留1GB的内存。然后我们需要在VMwareWorkstation的虚拟机里装两台ESXServer,它们各自至少需要2GB内存;我们将它们放在PC2上,并且为了提高性能各自分配了3GB内存。vCenterServer、数据库服务器和vSphereClient可以共存在一台机器上,同时vCenterServer也需要至少2GB内存,因此我们决定将其放在PC1上。(注:由于虚拟化特性所决定,用于安装ESXServer的PC2的宿主操作系统必须是64位系统。)
鉴于ESXServer对于磁盘性能的高要求,我们在PC2上安装了8块WD1001FALS硬盘组成RAID5来提高磁盘性能(图4),这样也可以方便之后设置共享存储。如果用户的试用平台没有这种条件,那么只要硬盘能够达到或超过WD6400AAKS的水平,磁盘子系统性能就不至于无法接受。通过一番安排,我们得到了如图5所示的拓扑结构图。
表5:实验软件版本及下载地址
软件
下载地址
试用期
VMwareWorkstation7.0.1forWindows
downloads.vmware.com/cn/d/
30天
WindowsServer2008Enterprise
60天
SQLServer2008Enterprise
180天
VMwarevSphere4
图6是ESXServer的结构图,我们之前所熟知的vCenterServer、vSphereClient可以直接或者间接地管理它。同时vSphere的API和SDK接口、vCLI命令行脚本化管理、CIM硬件管理等功能都可以连接到ESX服务器。ESXServer的诸多端口中有两个比较重要:一是VMKernelport,它用于Vmotion、HA等高级功能的数据传输,走的是以太网;二是ServiceConsole,可以理解为ESXServer和vCenterServer之间通讯的统一管理接口。
我们为实验设计了两台ESXServer:ESXServer1和ESXServer2,IP地址分别为192.168.1.55和192.168.1.60。它们的逻辑结构是在VMwareWorkstation上创建两台虚拟机,网络设置为桥接模式,这样可以保证两台虚拟机和真实连接到物理局域网上没有任何区别。(注:在PC1和PC2上安装VMwareWorkstation的过程很简单,几乎就是一路“Next”。)
再为这两台虚拟机设置一个共享存储磁盘(图7)。当开始实验时得到的最终结果是一个虚拟机套虚拟机的结构(图8)。
打开VMwareWorkstation后点击“NewVirtualMachine”,弹出创建新虚拟机的向导,选择“Custom(advanced)”并点“Next”。保持默认的硬件兼容性为“Workstation6.5”点“Next”,选择“Iwillinstalltheoperatingsystemlater”点“Next”。由于创建该虚拟机的目的是创建一个虚拟磁盘,因此无所谓选择什么操作系统直接点“Next”就可以了。接下来定义虚拟机的名称为“SharedDisk”,保存目录为“E:\VirtualMachines\vSphere\ShareDisk”并一路点“Next”。接下来是关键的步骤:保持默认选择的“Createanewvirtualdisk”,将虚拟磁盘的类型选择为“SCSI”,并根据实验平台具体情况选择磁盘大小,同时勾选“Allocatealldiskspacenow.”(图9)。
保持默认的磁盘文件保存位置,取消勾选“Poweronthisvirtualmachineaftercreation”并点击“Finish”开始创建磁盘文件。这里需要解释一下,VMware的磁盘有两种工作模式,一种叫做Thinmode“瘦模式”,即为了节省用户磁盘空间使虚拟磁盘文件尽可能减小,俗称“用多少是多少”;另外一种就是我们选择的模式,创建好虚拟磁盘后直接创建出一个同样大小的空文件作为虚拟磁盘文件。第一种模式的优势在于尽可能减少磁盘占用,是Workstation这类桌面产品的默认选项;第二种模式的优势在于更高的虚拟机磁盘性能,所以是ESX之类对磁盘占用不敏感的企业级虚拟化产品上的默认选项。这一点很重要,在之后的虚拟化管理和高级功能应用中我们将再次涉及。
接着我们将刚创建的虚拟机从收藏夹移除(注意不是从磁盘删除)并关闭相应的选项卡;然后打开刚才保存的目录“E:\VirtualMachines\vSphere\ShareDisk”,可以看到很多文件,这里可以删除“.vmdk”和“.vmdf”以外的所有文件。这里简单介绍一下这几个文件的用处:.nvram是虚拟机的BIOS文件,.vmdk是虚拟磁盘的索引文件,.vmsd是虚拟机的快照文件,.vmx是虚拟机的配置文件,.vmxf是组配置文件,剩下的.log自然就是虚拟机的日志文件。这些文件的作用和用途与ESX中的虚拟机文件的用途基本相同。
完成创建虚拟磁盘后,我们就可以开始创建ESXServer1了。针对目前的两个常用版本VMwareWorkstation6.5和7.0,用来创建安装ESXServer所需要的虚拟机的步骤不太一样。在VMwareWorkstation6.5环境下,首先以标准步骤创建虚拟机。需要注意支持的GuestOS版本应选Linux→RedHatEnterpriseLinux564-bit(图10),这是因为VMware会根据GuestOS版本的不同创建出相应的虚拟硬件,根据ESXServer对于硬件的要求,特别是对于网卡的需求,该选项所创建的虚拟网卡IntelPRO/1000能够得到ESX很好的兼容。
设置虚拟机的名称为“ESXServer1”,保存路径为“E:\VirtualMachines\vSphere\ESXServer1”。在接下去的设置中,还有几点需要注意:1.是内存不能低于2048MB(2GB),我们这里设置为3GB;网络设置选择“Usebridgednetworking”(图11),这样可以让虚拟机的网络等同于直接连接在物理局域网上;设置磁盘大小时勾选“Allocatealldiskspacenow”。
完成设置后不要立刻点击“Finish”,因为还需要做一些修改。点击“CustomizeHardware…”,删除“Floppy”、“USBController”、“SoundCard”三个硬件;添加一块网卡,同时将两块网卡的网络连接属性设置为“Bridged”并勾选“Replicatephysicalnetworkconnectionstate”(图12);最后需要将处理器“Processors”的“ExecutionMode”设置为“IntelVT-xorAMD-V”。
对于上述步骤,如果使用Workstation7.0相对来说要容易很多。创建虚拟机的时候选择硬件兼容类型直接有“Workstation6.5-7.0”可以选择;在选择Guestoperatingsystem的时候也有专门的VMwareESX选项;CPU的个数也有明显的提升。VMware似乎已经开始支持和鼓励用户通过这种方式来熟悉ESX。之后的网络、磁盘配置保持和6.5版一致,同时还不用自定义修改硬件,非常方便省事。
完成创建后我们关闭整个VMwareWorkstation,进入ESXServer1的保存目录使用记事本打开“ESXServer1.vmx”文件,在文件尾部添加以下内容(图13)。其中“scsi1:0.fileName”一行为之前创建的虚拟共享磁盘的位置。有一点需要注意:默认创建虚拟机使用的磁盘是属于SCSI通道0的第一块磁盘,标记为scsi0:0,但虚拟共享磁盘必须和系统虚拟本地磁盘在不同的SCSI通道上,因此我们这里选择了SCSI通道1。
打开VMwareWorkstation之后可以发现已经创建的ESXServer1多了一块磁盘—我们添加的虚拟共享磁盘。这时候将光驱指向之前下载的“esx-DVD-4.0.0-171294.iso”载入到ESXServer1的虚拟光驱中,同时调整两个VMwareWorkstation的全局设置:选择菜单栏中“Edit→Preferences”,在“HotKeys”选项卡中选中“Ctrl+Shift+Alt”,这样可以避免与Linux中切换终端发生按键冲突;此外为了节省内存选择“Memory”选项卡,在“Addtitonalmemory”中选中“Allowmostvirtualmachinememorytobeswapped”(图14)。
注意如果使用VMwareWorkstation6.5,在启动虚拟机ESXServer1之前还有最后一步操作。在“ESXServer1.vmx”文件中找到一行内容“monitor.virtual_exec="hardware"”,在其后加入另外一行“monitor_control.restrict_backdoor="true"”。否则无法在虚拟机中运行虚拟机,会出现一个提示:“Youcannotonavirtualmachineinavirtualmachine”。
而如果使用VmwareWorkstation7.0则无需作这个步骤。准备就绪后,就可以启动虚拟机开始ESXServer的安装了。虚拟机默认会从光驱启动,选择“InstallESXingraphicalmode”开始安装(图15)。整个过程几乎是一路“Next”,少数的设置操作根据提示即可完成。
图16这里有一个意外的小插曲,PC2最初使用的是B2步进的PhenomX49500——先天有TLBbug的处理器。在普通应用中用户几乎不可能遇到这个错误,但是在硬件级虚拟化上就遇到了问题。当年对于企业用户AMD采取了直接更换CPU的方式,而对于个人用户AMD则要求主板厂商推出BIOS屏蔽部分寄存器寻址空间。问题就出在这里,像VMware这类硬件级虚拟化会访问到这部分被屏蔽的寄存器寻址空间,就会引起图16中所出现的错误,直至KernelPanic引起VMware安装程序崩溃。因此我们提醒各位想体验虚拟化的用户,除了更换CPU外此故障完全无解!
ESXServer2的安装和设置步骤可以完全参考之前ESXServer1的步骤,只要将其虚拟机名设置为“ESXServer2”,保存目录设置为“E:\VirtualMachines\vSphere\ESXServer2”,IP地址设置为192.168.1.60,主机名设置为ESXServer2。搞定两台拥有共享磁盘的ESXServer后,我们终于可以暂时抛下PC2了。
整个VMwarevSphere中技术含量最高,安装复杂度最高的是vCenterServer。在PC1的Windows7Ultimatex64上安装VMwareWorkstation的过程我们不再详谈,直接介绍安装WindowsServer2008Enterprise的操作。
按照之前的方法开始创建虚拟机选择“Custom(advanced)”接着保持默认值一路“Next”,在选择GuestOS的时候选择“MicrosoftWindows→WindowsServer2008”(图17)。将虚拟机名称定为“vCenterServer”,保存目录为“E:\VMWareWorkstation\vSphere\vCenterServer”。继续设置两个虚拟CPU→3072MB内存(至少2048MB)→桥接网络→创建虚拟磁盘→设置类型为SCSI,在设置磁盘容量的时候我们可以选择大一点,比如160GB。同时因为vCenterServer对于磁盘的压力不是很大,因此我们没有必要立即分配磁盘空间,可以考虑使用Thin模式提高磁盘的利用率。下一步默认虚拟磁盘文件存放位置,在点击Finish前按下“Customize”按照之前的方法删除“Floppy”和“SoundCard”,之后便可以完成虚拟机的创建。将我们之前下载的WindowsServer2008Enterprise镜像文件放入vCenterServer的虚拟光驱,启动虚拟机后点击“InstallNow”开始安装系统。后续的操作与平时安装普通操作系统类似,根据提示进行即可。需要注意的是,选择Windows版本时点击“WindowsServer2008Enterprise(FullInstallation)”,再勾选“IhaveselectedtheeditionofWindowsthatIpurchased”。
为了提高虚拟机vCenterServer的性能,我们要为它安装VMwareTools。默认按下“Ctrl+Alt”退出虚拟机鼠标键盘控制,在VMwareWorkstation菜单栏中选择“VM→InstallVMwareTools”(图18)。按照提示运行autorun.exe,一路“Next”完成安装并重启虚拟机。
安装SQLServer2008Enterprise虽然vCenterServer的安装源中自带了一个SQLServer2005Express,可以支持5台ESXServer和25台虚拟机,但是出于追求完整和全面的考虑,我们还是决定安装独立的SQLServer2008Enterprise。首先遇到的问题是,如何把SQLServer2008Enterprise的安装文件复制进vCenterServer虚拟机。常用的方式是通过Windows网络共享的方式,当然在安装了VMwareTools之后我们也可以直接从宿主操作系统的文件夹里将文件拖拽进虚拟机里。
双击运行“SQLFULL_X86_ENU.EXE”,将文件解压在虚拟机的磁盘中。执行解压后文件夹中的“setup.exe”开始安装SQLServer,安装程序会提示需要先安装Microsoft.NETFramework3.5SP1和WindowsInstaller的一个更新(KB942288)。好在这些安装程序在SQLServer2008Enterprise的安装包里都已经包含,不需要我们再到互联网上去下载,只是在安装完更新后需要重启一次。重启后重新进入刚才解压的文件夹,执行“setup.exe”就会启动SQLServer安装中心,点击“Installation→NewSQLServerstand-aloneinstallationoraddfeaturestoanexistinginstallation”(图19)。安装程序会验证操作系统、软件环境和硬件,在选择产品序列号的时候选择“Specifyafreeedition→EnterpriseEvluation”就可以免费使用180天。
点击“SelectAll”完全安装SQLServer2008Enterprise,对SQL比较熟悉的用户可以自行删减功能,我们这里就只安装了“DatabaseEngineServices”和“ManagementTools”(图20)。接下来一路“Next”,在“ServerConfiguration”中点击“UsethesameaccountforallSQLServerservices”输入Administrator的用户名和密码。
在“DatabaseEngineConfiguration”中,点击“AddCurrentUser”将当前Administrator作为SQLServer的管理员账户。在“AnalysisServicesConfiguration”中做相同的事情就可以点“Next”,之后会有一些关于日志报告的一些设置,对此只要保持默认值就可以了,最后点击“Install”开始安装。经过一番“折腾”后完成SQLServer2008Enterprise的安装,虽然安装程序并不要求重启系统,但是我们还是建议重启一下虚拟机。
开始安装前的最后一步,我们需要创建一个ODBCDataSource。方法是到“ControlPanel→AdministrativeTools→DataSources”中,选择“SystemDSN”选项卡,点击“Add…”,在弹出窗口中选择“SQLServerNativeClient10”后点击“Finish”。接着在“CreateaNewDataSourcetoSQLServer”向导中,为“DataSourceName”填入“vCenterServer”,目标数据库填写“localhost”。保持默认的身份验证继续,在选择数据库处勾选“Changethedefaultdatabaseto”下拉菜单中选择刚才创建的“vCenter_Server”,继续保持默认值点击“Finish”完成创建ODBCDataSource。
一切准备就绪,我们终于可以开始安装vCenterServer了。将之前下载的镜像文件“VMware-VIMSetupall-4.0.0-162902.iso”放入虚拟机的光驱中。光盘自动执行出现安装界面,点击“vCenterServer”选择默认英文语言开始安装(图22)。
整个安装过程相对简单,绝大多数时候只需要点击“Next”就可以了,不过有几处需要注意。在输入LicenseKey的地方我们可以选择留空,使用60天的评估版。在选择数据库的时候,先选择“Useanexistingsupporteddatabase”然后在“DataSourceName”下拉菜单中选择刚才创建的“vCenterServer(MSSQL)”。在进行数据库身份认证的时候因为我们采用了Windows的身份验证,所以可以留空。这里需要根据刚才SQLServer安装过程中不同的设置启动名叫“SQLServerAgent”的服务并使它随系统启动,继续保持默认值点“Next”直到选择vCenterServer的工作模式。我们只有一台vCenterServer,因此选择“CreateastandaloneVMwarevCenterServerinstance”。接下来保持端口为默认值就可开始安装了。
只有vCenterServer还不行,我们还需要在虚拟机vCenterServer上安装vSphereClient。回到之前VMwarevCenter的安装程序,点击“vShpereClient”选择默认语言为英语开始安装,在接受软件协议、填写用户信息之后,我们顺便勾选“InstallvSphereHostUpdateUtility4.0”,然后一路“Next”完成安装。至此,我们终于完成了vCenterServer、数据库服务器和vSphereClient的安装!