使用 VMControl 实现 OVF 文件定制部署 Power 虚拟机

作为 IBM Systems Director 的高级管理插件,VMControl 可以实现对当前 Power 服务器上虚拟机(LPAR)进行捕获(Capture)、创建虚拟镜像(Virtual Appliance)、并统一部署(Deploy)到任意管理的 Power 服务器上。但在当前的 VMControl 版本中,被捕捉的虚拟机资源(虚拟机内存,processor,硬盘...显示全部
作为 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 信息,可以通过 lsreposlscapsrv 命令行获得这些信息。                         
# 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 文件中的重要参数对虚拟镜像的资源进行修改,并定制部署需要的虚拟机。收起
参与4

查看其它 2 个回答eric的回答

ericeric系统运维工程师某金融单位
在上面的章节,我们对 OVF 文件一些常用单元项进行解析,如何使用修改 OVF 的方法进行定制部署,我们下面的例子给出了具体的步骤。
首先,基于原先的 OVF 文件,我们按照下表 1 对 OVF 文件进行修改,以满足新的定制部署要求,并把修改后的 OVF 文件另存为 image1.ovf。
表 1.对 OVF 单元参数进行修改以满足定制要求







定制部署要求OVF 各单元参数定制(黑体标注行为修改后值)
在部署时创建并使用 30G 硬盘。注意,这里单位是字节,所以,30GB=30*1024*1024*1024B=32212254720BDisk Section

ovf:capacityAllocationUnits="byte"
ovf:diskId="disk1" ovf:fileRef="file1"
ovf:format="http://www.ibm.com/xmlns/ovf/diskformat/power.aix.mksysb"
ovf:populatedSize="3299069952"/>
在部署时使得虚拟 Processor 满足以下要求:
Processing Units
Maximum: 0.5
Assigned: 0.4
Minimum: 0.1

Virtual Processors
Maximum: 2
Assigned: 2
Minimum: 1

percent
Processor Allocation
3
ProcessorAllocation
Allocation of2virtual processors, 0.4processing units.
1
50
10
3
2
127
2
1
40
uncap
在部署时使得虚拟内存满足以下要求:
Dedicated Memory
Maximum:1G
Assigned:1G
Minimum:256M

byte 2^10
Memory Allocation
2
Memory Allocation
Allocation of 1024 MB of dedicated memory.

2
4
1048576
1048576
262144
去掉绝对路径,使得该 OVF 可以被重新导入识别。

ovf:id="file1" ovf:size="1974016000"/>
重新命名定制的虚拟镜像为 cap10-32-136-62-mod_ovf
This product section provides information about the entire package.
cap10-32-136-62-mod_ovf

2.4.1


第二步,把修改后的 OVF 文件和原先的 mksysb 文件复制 Director Server 可以访问到的文件夹下,本例中,把这两个文件放在 NIM Master 系统 /opt/tmp/appliance 文件夹下,并通过 NFS 共享的方式,让 Director Server 挂载该共享文件夹 /opt/tmp/ 到本地硬盘。
第三步,通过 importva 命令重新导入该 OVF 镜像文件到 VMControl 数据库中。由于在前面 OVF 文件中,我们指定了虚拟镜像名为 cap10-32-136-62-mod_ovf ,在下面 importva 命令行中无需再为虚拟镜像指定名字。[table=98%]
# smcli importva -v -F /opt/tmp/appliance/image1.ovf -r 21516


第四步,导入成功后,在 Director Server 端通过 lsva 命令查看这个新虚拟镜像的 OID 信息。[table=98%]
# smcli lsva -q "name = cap10-32-136-62-mod_ovf” -o  cap10-32-136-62-mod_ovf, 25022 (0x61be)


最后,使用 VMControl 通过图形界面或者 deployva 命令行,基于新的虚拟镜像定制部署虚拟机系统。[table=98%]
# smcli deployva -v -g 20598 -V 25022 -m -5683253612005284779_00 \ -a deploy_new -A virtualnetworks[Discovered-320-0]=hostVnet:ETHERNET0/320 ,\  product.vs0.com.ibm.ovf.vmcontrol.system.networking.hostname=ip10-32-136-63,\  product.vs0.com.ibm.ovf.vmcontrol.adapter.networking.ipv4addresses.5=10.32.136.63,\  product.vs0.com.ibm.ovf.vmcontrol.system.networking.hostname=ip10-32-136-63,\  product.vs0.com.ibm.ovf.vmcontrol.adapter.networking.ipv4netmasks.5=255.255.255.0,\  product.vs0.com.ibm.ovf.vmcontrol.system.networking.ipv4defaultgateway=10.32.136.1,\  product.vs0.com.ibm.ovf.vmcontrol.system.networking.dnsIPaddresses=10.20.0.2,\  product.vs0.com.ibm.ovf.vmcontrol.system.networking.domainname=pokprv.stglabs.ibm.com \  -n ip10-32-136-63


这里需要注意,在上例中,我们使用命令行部署虚拟机到 Power 服务器池,需要指定网络配置信息和部署计划 ID(deploymentplanid)值,可以通过 lscu stomization 命令获取,其中 -5683253612005284779_00ETHERNET0/320 就是我们获取到的必要信息值,参考下面命令。[table=98%]
# smcli lscustomization -a deploy_new -V 25022 -g  20598 -H  false


如果想部署虚拟机到特定 Power 服务器,就需要用户指定存储类型,如本地硬盘还是 SAN 存储,同样也可以使用 lscu stomization 命令获取可选存储信息。
定制部署后虚拟机的资源配置情况
在部署完成后,通过下面命令行我们可以看到,定制部署的虚拟机完全符合表 1 所提出的各项定制部署要求,黑色标注出虚拟机的虚拟内存,Processor 和硬盘信息。[table=98%]
# smcli lsvrtsys -l -n ip10-32-136-63  ip10-32-136-63:         Maximum Processors : 2         Maximum Processing Units : 0.5         Shared Processor Pool : System         Dynamic Processor Change Capable : TRUE         Maximum Memory Size (MB) : 1024         Utility Virtual Server : FALSE         Processing Mode : Shared         Host Type : HMC         Environment : AIX or Linux         Minimum Processors : 1                                  Assigned Processors : 2         Minimum Processing Units : 0.1         Assigned Processing Units : 0.4         Assigned Share Priority : Other( 127 )         Dynamic Memory Change Capable : TRUE         Assigned Memory Size (MB) : 1024         Minimum Memory Size (MB) : 256  # lspv hdisk0  PHYSICAL VOLUME:    hdisk0                   VOLUME GROUP:     rootvg  PV IDENTIFIER:      000e061129707983 VG IDENTIFIER     000e06110000d9000000013629707a31  PV STATE:           active  STALE PARTITIONS:   0                        ALLOCATABLE:      yes  PP SIZE:            32 megabyte(s)           LOGICAL VOLUMES:  11  TOTAL PPs:          959 (30688 megabytes)  VG DESCRIPTORS:   2  FREE PPs:           794 (25408 megabytes)    HOT SPARE:        no  USED PPs:           165 (5280 megabytes)     MAX REQUEST:      256 kilobytes  FREE DISTRIBUTION:  191..168..51..192..192  USED DISTRIBUTION:  01..24..140..00..00  MIRROR POOL:        None


显然,只要修改 OVF 文件,使之同时符合 VMControl 的 OVF 定义规范,我们完全可以满足不同的部署要求。   
总结
通过修改 OVF 文件,可以实现 Power 服务器上虚拟机(LPAR)的定制部署。对于使用基于 NIM 的 VMControl 管理环境的系统管理员,了解和掌握这一技巧,无疑会使得 Power 虚拟化的部署管理变得轻松灵活,发挥出 VMControl 的部署管理的效率和功能。
保险 · 2013-01-06
浏览3292

回答者

eric
eric61938
系统运维工程师某金融单位
擅长领域: 云计算服务器私有云

eric 最近回答过的问题

回答状态

  • 发布时间:2013-01-06
  • 关注会员:1 人
  • 回答浏览:3292
  • X社区推广