作为 IBM Systems Director 的高级管理插件,VMControl 可以实现对当前 Power 服务器上虚拟机(LPAR)进行捕获(Capture)、创建虚拟镜像(Virtual Appliance)、并统一部署(Deploy)到任意管理的 Power 服务器上。但在当前的 VMControl 版本中,被捕捉的虚拟机资源(虚拟机内存,processor,硬盘 ) 的大小决定了基于它创建的虚拟镜像(Virtual Appliance)的虚拟化资源的大小,从而决定了部署出来的的虚拟机系统资源的大小。举例来说,如果被捕捉的虚拟机使用 2G 虚拟内存,那么使用该虚拟镜像进行部署出来的虚拟机系统内存也必然为 2G。实际上,对于一些用户来说,往往由于虚拟机用途的不同,他们往往要求部署出来的虚拟机和原虚拟镜像资源不尽相同。针对这种定制部署,目前常用的解决方法是:修改原虚拟机的资源,重新进行捕获,使用这一全新的虚拟镜像进行全新部署。
这种方法显然对想要定制部署的用户无疑带来了很多不便,本文提供了一种简便的方法在不需要重新捕捉虚拟机的情况下,巧用 VMControl 的 OVF 文件,进行系统的定制部署。
VMControl 进行捕获和部署的原理
使用基于 NIM 的 VMControl 管理环境对 Power 虚拟机进行捕获和部署的原理比较简单。对捕获而言,实际上就是 VMControl 在 NIM 端对虚拟机创建了一个 mksysb 的镜像文件,并且根据该虚拟机的资源设置情况,产生一个保存该虚拟机配置信息的 OVF 描述文件。在之后的虚拟机部署中,VMControl 会自动采用该 OVF 文件里描述的资源配置,来创建新的虚拟机,安装操作系统。下面是虚拟机进行捕获和部署的简单原理图,参见图 1。
图 1.VMControl 对 Power 虚拟机捕获和部署的原理图
捕获过程中,VMControl 会对虚拟机系统(OS)以及运行在该系统上的应用软件(SW)创建 NIM mksysb 备份镜像文件,并且获取该虚拟机系统的 meta-data(元数据)。这些虚拟机的 meta-data 也就是有关该虚拟机资源配置信息和网络配置信息(如 VLAN 等),将会保存在 OVF 文件中。最终,mksysb 数据和 OVF 文件将会放置在 NIM Master 端,也就是 VMControl 的 Image Repository(虚拟镜像库)里。VMControl 中的 Virtual Appliance(虚拟镜像),包含了上述 mksysb 数据和 OVF 文件,每一个被捕获的虚拟机都会在 NIM master 端产生一个以 Appliance ID 命名的文件夹,用于存放这两个文件。缺省情况下,所有的虚拟机镜像文件夹位置是 /export/nim/appliances/。
通过捕获虚拟机得到的 Virtual Appliance(虚拟镜像),可以用于部署新的虚拟机。部署过程中,用户指定要使用的存储位置(本地存储或者 SAN 存储),和网络配置(如 IP Address,DNS,网关等),VMControl 将会根据 OVF 里的虚拟机描述文件创建一个和原先虚拟机资源配置完全相同的虚拟机,创建并分配相应的存储硬盘,配置网络,然后使用 NIM Master 中的 mksysb 文件自动安装虚拟机操作系统和运行在虚拟机上的应用软件。
显然,如果我们能够了解 Virtual Appliance(虚拟镜像)的 OVF 定义描述文件,按照我们的要求重新修改虚拟机的定义,只要让这一修改同时符合 VMControl 要求,就可以做到按需定制,灵活部署。
下面我们将通过实例介绍如何修改 OVF 文件完成定制部署。
对 VMControl 中 OVF 文件修改实现定制部署
首先,我们将会对一个运行的虚拟机进行捕获,针对捕获后的的 OVF 文件进行解析,了解其中一些重要的参数的含义。
VMControl 中 OVF 文件的解析
在对虚拟机进行捕获前,我们先看一下该虚拟机的资源配置信息。
捕获前虚拟机的资源配置情况 在 Director 服务器端,使用
lsvrtsys 命令,可以看到虚拟机的配置信息,这里加黑体表示。
# smcli lsvrtsys -l -n ip10-32-136-62 ip10-32-136-62: Maximum Processors : 1 Maximum Processing Units : 0.2 Shared Processor Pool : System Dynamic Processor Change Capable : TRUE Maximum Memory Size (MB) : 512 Utility Virtual Server : FALSE Processing Mode : Shared Host Type : HMC Environment : AIX or Linux Minimum Processors : 1 Assigned Processors : 1 Minimum Processing Units : 0.1 Assigned Processing Units : 0.1 Assigned Share Priority : Other( 127 ) Dynamic Memory Change Capable : TRUE Assigned Memory Size (MB) : 512 Minimum Memory Size (MB) : 256 |
同样,在虚拟机系统中使用下面命令获得该虚拟机的硬盘大小信息,用黑体标注出来。
# lspv -L hdisk0 PHYSICAL VOLUME: hdisk0 VOLUME GROUP: rootvg PV IDENTIFIER: 00c16020108b36e4 VG IDENTIFIER 00c1602000004c0000000136108b3770 PV STATE: active STALE PARTITIONS: 0 ALLOCATABLE: yes PP SIZE: 16 megabyte(s) LOGICAL VOLUMES: 11 TOTAL PPs: 326 (5216 megabytes) VG DESCRIPTORS: 2 FREE PPs: 0 (0 megabytes) HOT SPARE: no USED PPs: 326 (5216 megabytes) MAX REQUEST: 256 kilobytes FREE DISTRIBUTION: 00..00..00..00..00 USED DISTRIBUTION: 66..65..65..65..65 MIRROR POOL: None |
VMCntrol 捕获虚拟机后 NIM Master 端的变化 现在,我们使用 VMControl 命令对虚拟机进行捕获 , 捕获后的虚拟镜像将会自动放在 NIM Master 所在的虚拟镜像库端。
第一步,查询虚拟机 OID 和虚拟镜像库(Image Repository)OID 信息,可以通过
lsrepos 和
lscapsrv 命令行获得这些信息。
# smcli lsrepos – l | grep – i oid OID:21516 # smcli lscapsrv -o ip10-32-136-62.pokprv.stglabs.ibm.com, 24828 (0x60fc) |
第二步,捕获虚拟机并自动存放到虚拟镜像库端,为方便记忆,命名该虚拟镜像为
cap10-32-136-62 ;在捕获过程中,自动产生的虚拟镜像 ID(ApplianceID)为
6a2f3568-33f0-401a-aae6-259e49a74dd8 ,参见下面命令行输出中加黑标注部分。
# smcli captureva -v -r 21516 -s 24828 -n cap10-32-136-62 Sun Mar 18 22:07:49 CDT 2012 captureva Operation started. Get capture customization data Call capture function DNZLOP411I Capturing virtual server ip10-32-136-62 to virtual appliance cap10-32-136-62 in repository pva0252.pdl.pok.ibm.com. |
# smcli lsva -q "name = cap10-32-136-62” – l | grep – i ApplianceId ApplianceId:6a2f3568-33f0-401a-aae6-259e49a74dd8 |
捕获过程中,如果登陆 NIM Master,通过
lsnim 可以看到 VMControl 自动把虚拟机
ip10-32-136-62 加入到 NIM Master 中。
# lsnim ip10-32-136-62 ip10-32-136-62 machines standalone |
捕获完成后,产生相应的 NIM mksysb 资源,该 mksysb 镜像文件自动保存在以虚拟镜像 ID 命名的文件夹
/export/nim/appliances/6a2f3568-33f0-401a-aae6-259e49a74dd8 下。
# lsnim -l appliance-3_image-1 appliance-3_image-1: class = resources type = mksysb arch = power Rstate = ready for use prev_state = unavailable for use location = /export/nim/appliances/6a2f3568-33f0-401a-aae6-259e49a74dd8/image1.mksysb version = 6 release = 1 mod = 4 oslevel_r = 6100-04 alloc_count = 0 server = master creation_date = Sun Mar 18 22:11:04 2012 source_image = ip10-32-136-62 |
打开该文件夹,可以看到有一个以虚拟镜像 ID 命名的 OVF 文件
6a2f3568-33f0-401a-aae6-259e49a74dd8.ovf ,它存放的就是虚拟机定义信息;另外一个就是命名为
image1.mksysb 的 mksysb 镜像文件。
这里还注意到还有一个名字为
vmcontrol 的文件夹,它实际上指出了该虚拟镜像使用的 NIM mksysb 资源的名字信息
mksysb.appliance-3_image-1 ,我们可以忽略。
# ls -lR /export/nim/appliances/6a2f3568-33f0-401a-aae6-259e49a74dd8/ total 3855832 -rw------- 1 root system 9625 Mar 18 22:11 6a2f3568-33f0-401a-aae6-259e49a74dd8.ovf -rw-r--r-- 1 root system 1974016000 Mar 18 22:10 image1.mksysb drwx--x--x 2 root system 256 Mar 18 22:11 vmcontrol /export/nim/appliances/6a2f3568-33f0-401a-aae6-259e49a74dd8/vmcontrol: total 0 -rw------- 1 root system 0 Mar 18 22:11 mksysb.appliance-3_image-1 |
对 VMControl 中 OVF 文件中几项重要参数的解析 现在我们打开 OVF 文件,来看一下该文件中的几个重要参数单元(Element)。
Refernce Section 之
ovf:File 单元,表示 mksysb 文件位置和大小信息,参见下图 2。
图 2.Refernce Section 之 ovf:File 单元
ovf:href - 指出虚拟镜像 mksysb 文件的路径;
ovf:size - 指出当前 mksysb 文件
image1.mksysb 的大小。
DiskSection 之
ovf:Disk 单元,表示虚拟机硬盘相关信息,参见下图 3。
图 3.Disk Section 之 ovf:Disk 单元
ovf:capacity - 指出部署新的虚拟机时,将会创建的硬盘大小,本例中,部署新的虚拟机时,会为该虚拟机创建 5.2G 大小的硬盘。
ovf:populatedSize - 在捕获虚拟机时,该虚拟机已经使用的空间大小,在基于 NIM 的环境中,也就是 rootvg 被使用的空间大小。同时,这个值也是部署该虚拟镜像时需要的硬盘最小值,如果低于这个值,该镜像将无法部署成功。这个值我们一般不进行修改。
从上面解释,显然,我们可以对
ovf:capacity 值进行修改,在服务器存储充足时,可以让 VMControl 创建并分配一个大硬盘给新虚拟机,比方说 30G。也可以在存储资源紧张时,创建并分配小硬盘,但这个值必须大于等于
ovf:populatedSize 所指定的值。
VirtualHardwareSection 包括了虚拟 Processor,虚拟内存相关信息,下图 4 红框区域是虚拟 Processor 相关信息。
图 4.Disk VirtualHardwareSection 之 Processor item 单元
rasd:AllocationUnits – 指出"processing units" 将会以百分比值表示。
rasd:Limit – 相应的"Maximum Processing Units"的百分比值,本例中,最大虚拟 Processing Units 为 20/100, 即 0.2
rasd:Reservation - 相应的"Minimum Processing Units"的百分比值,最小 processing Unis 为 0.1。
vimphyprasd:Quantity - 相应的"Assigned Processing Units"的百分比值,本例为 0.1。
rasd:VirtualQuantity - 相应的" Assigned Processors"的虚拟 Processors 个数,这里分配的虚拟 Processors 个数是 1。
vimphyprasd:VirtualLimit - 相应的"Maximum Processors"的虚拟 Processors 个数,本例最高 Processors 个数是 1。
vimphyprasd:VirtualReservation - 相应的"Minimum Processors"的虚拟 Processors 个数,这里 最低 Processors 个数是 1。
实际上,上面各项参数的值与该虚拟机的虚拟 Processor 的各项配置一一对应,参见下图 2 从虚拟机属性中看到的虚拟 Processor 信息。
图 5. 被捕获虚拟机的虚拟 processors 信息
由此可见,虚拟镜像保留了被捕获虚拟机原先的 Processor 配置,那么使用该虚拟镜像 OVF 定义,进行部署时必然会创建相同配置的虚拟机。显然,我们可以根据自己的需求调整这些参数。在后面的例子中我们将会对这些值进行调整。
下图 6 是 VirtualHardwareSection 中虚拟内存相关的信息。
图 6.VirtualHardwareSection 之 Memory item
rasd:AllocationUnits - 这里以 2^10 字节 ,也就是 1K 为单位。
rasd:VirtualQuantity - 对应的 Assigned Memory 值,这里是 524288K,也就是 512M。
vimphyprasd:VirtualLimit - 对应的 Maximam Memory 值,也是 512M。
vimphyprasd:VirtualReservation - 对应的 Minimam Memory 值,262144K,即 256M。
同样,上面各项参数的值与该虚拟机的虚拟内存的各项设置一一对应,参见下图 7。
图 7. 被捕获虚拟机的虚拟内存信息
和虚拟 Processor 配置一样,我们可以根据自己的需求调整这些虚拟内存相关参数。在后面的例子中我们将会对这些值进行调整。
下图 8 给出了 ProductSection 的
ovf:Product ,实际上也就是虚拟镜像的命名。
图 8. ProductSection 之 ovf:Product
ovf:Product – 虚拟镜像的命名,这里是 cap10-32-136-62,就是我们在捕获时指定的虚拟镜像的名字,用户可以定制修改。
注意,如果在修改 OVF 文件后,不修改该值,那么将会产生一个同名的虚拟镜像。虽然和原先的虚拟镜像有不同 ApplianceID,VMControl 也可以区分识别,但为方便起见,建议在改完 OVF 文件之后,一并修改虚拟镜像名。
修改 OVF 文件中的重要参数对虚拟镜像的资源进行修改,并定制部署需要的虚拟机。