在 PowerVM 虚拟化配置实施时,管理员经常要面对数十台物理服务器,数百个分区,如果采取手工配置与实施,工作量大、繁琐,且会造成大量的重复劳动。针对这种情况,IBM 系统科技实验室服务部推出了 PowerVM 分区快速划分与配置工具:PowerVM Provisioning Toolkit. 该工具提供在 Power6 与 Power7 服务器上快速部署 VIOS 与 LPAR 的功能。
使用 PowerVM Provisioning Toolkit 带来的益处
在 Power 服务器上配置实施 PowerVM(VIOS 与 LPAR)是一项十分复杂的工作,尤其是涉及到 SEA(shared Ethernet adapter)、VLAN、多个处理器资源池、NPIV、在线分区迁移(LPM)等虚拟化技术时。因此,IBM 系统科技实验室服务部(STG Lab Services & Training)开发了一套工具来完成基于 Power 服务器虚拟化的快速部署,该工具目前可以通过购买 license 来使用,支持所有基于 HMC 管理的 Power5 以上的 Power 服务器,该工具运行环境为 AIX 系统,且易于迁移到 Linux 上。更多请参考www.ibm.com/systems/services/labservices。
集中快速部署一到多台服务器主机。
一致性的管理与配置多台 VIOS 服务器分区与普通分区。
集中存放主机部署信息到配置文件,方便验证配置信息以及方便复制以备以后的部署。
快速的完成 VIOS 配置,包括网络(SEA,HEA)、存储(NPIV,VSCSI)。
更快更有效、标准化的、可重复的部署虚拟化到所有的 Power 服务器。
回页首
PowerVM Provisioning Toolkit 使用方法说明
PowerVM provisioning toolkit 为基于 ksh 编写的脚本工具集,有着使用方法简单、易于部署(不需要特殊的开发编译环境)、易于迁移的特性。
首先,该脚本在 NIM server 上运行,发送 HMC 命令完成 VIOS 分区的 profile 的创建,VIOS 的安装。
其次,该脚本在 VIOS 上运行,完成 VIOS 网络配置、I/O 的配置 ( 物理 I/O 属性设置,物理 I/O 到虚拟 I/O 的映射 )、普通分区磁盘配置等等。
最后,再次在 NIM Server 上运行该脚本,完成 client 分区的创建与安装。
该脚本完成以上三个步骤的运行之后,一个基于 Power 服务器的 PowerVM 虚拟化环境便完全配置实施完成,可以对外提供服务。
该工具基本语法如下:
关于分区的创建、配置与安装
buildframe �C p buildDefinitionFile �C f option [-n]
buildDefinitionFile 定义文件的名称
frame配置选项
validate执行definition文件检查
build执行validate, spp, carve, hea, nim,以及wwpn options
carve创建definitions文件中定义的分区
hea为分区配置HEA
nim执行定义文件中定义分区的lpar_netboot,安装系统
wwpn收集分区的WWPN信息(以后缀名为.csv的文件格式展现)
spp创建CPU共享资源池
vswitch配置虚拟交换机
关于 VIOS 的系统配置
buildframe.ksh -p buildDefinitionFile -v option [-n]
buildDefinitionFile 定义文件的名称
VIOS配置选项
build执行network, fcsattr, fscsiattr, vfcmap,以及mirror命令
network配置vio网络,包括SEA,网络属性等
fcsattr设置光纤卡属性Set FCS设备属性
fscsiattr设置fscsi设备属性Set FSCSI设备属性
mirror镜像VIOS的rootvg盘
vfcmap执行基于NPIV的映射(物理设备到虚拟设备映射)
validate执行验证操作
va 配置ITM_Premium monitoring agent
通过以上命令与使用方法,目前工具可以做到:
自动部署 VIOS 分区与普通分区(LPAR)
IO 的分配
Virtual fiber adapters 设备的生成与映射(NPIV)
VSCSI 设备的生成与映射
网络配置,包括 SEA、VLAN、HEA 等
NIM 的整合管理
FCS 设备与 FSCSI 属性的配置
VIOS rootvg 的镜像
虚拟光纤卡 WWPN 的收集
CPU 共享资源池的创建
回页首
PowerVM Provisioning Toolkit 典型的配置使用场景
该工具需要配合 NIM 使用,关于 NIM Server 的配置,请参考 IBM NIM 相关文档。为了让读者更加详细的理解该工具的使用方法,我们以为一台物理服务器划分两个 VIOS,两个普通分区为例,通过以下步骤介绍该工具的工作流程:
1. 在 NIM server 上创建一个目录,并将该工具脚本 buildframe.ksh 上传到该目录,我们假设目录为 /provision, 接着创建两个子目录 build_profiles 和 work_area。
2. 在 build_profiles 子目录创建两个后缀名为 .def 的文件,一个作为 VIOS 划分与配置使用,一个作为普通分区(LPAR)划分与配置使用。我们假设其分别为 vios.def 与 vioc.def。
vios.def 与 vioc.def 的定义是该工具使用的核心部分之一,所有的关于 PowerVM 的划分,包括分区个数、分区定义、VIOS 配置、IO 分配、CPU 分配、内存分配、网络配置等等都定义到这两个文件中,所以一定要保证这两个文件定义的正确性,下面我们分别详细的介绍介绍如何验证该文件的有效性,以及如何定义该文件。
文件定义完成以后,首先需要验证一下定义文件的正确性,以验证 vios.def 文件为例,运行如下命令:
buildframe.ksh -p vios -f validate
验证过程与输出结果如图 2、图 3(详细的日志可以到 work_area 文件夹下去查看,日志文件的名字以 vios、vioc 开头):
输入 HMC 的密码,进行验证:
由图 3 我们可以看到,对 vios.def,验证通过(return code 是 0)
其中vios.def文件的格式如下(# 开始表示该行为注释 ),该文件分为三个部分,第一部分为变量的定义,第二部分为 VIOS 配置的定义,包括 SEA 配置,FC 卡配置等,第三部分为分区的定义,包括分区占用的 CPU 资源、内存资源等:
# 变量的定义,这里会定义本属性文件所需要的变量,VIOS 的名称,服务器的 CEC,NIM 信息,虚拟交换机,VLAN 信,HMC 信息等。
# 定义两个 VIOS 分区名称
VARIABLES &VIO1.=55A_vios1,&VIO2.=55A_vios2
# 定义该服务器的 CEC
VARIABLES &CEC1.=DQD0457,&CEC2.=DQD194N
VARIABLES &NIMSPEED.=auto,&NIMDUPLEX.=auto
# 定义 NIM 服务器信息与所对应的 NIM 客户端
VARIABLES &NIMIPVIO1.=9.123.126.129,&NIMNMVIO1.=255.255.255.0,&NIMGWVIO1.=9.123.126.1
VARIABLES &NIMIPVIO2.=9.123.126.126,&NIMNMVIO2.=255.255.255.0,&NIMGWVIO2.=9.123.126.1
# 定义 PowerVM 虚拟交换机 vlan 信息
VARIABLES &PRODVLANS.=1
# 定义 VIOS1 的 IP
VARIABLES &PRODIPVLANVIO1.=9.123.126.129,NA,NA
定义 VIOS2 的 IP
VARIABLES &PRODIPVLANVIO2.=9.123.126.126,NA,NA
# 定义 VIOS 的网络掩码
VARIABLES &PRODNETMASK.=255.255.255.0,NA,NA
# 定义 VIOS 的网关
VARIABLES &PRODGATEWAY.=9.123.126.1,NA,NA
# 定义 NIM 服务器的 IP
VARIABLES &NIMIP.=9.123.126.127
# 定义 PowerVM 虚拟交换机
VARIABLES &PRODVSWITCH.=ETHERNET0
# 定义要自动划分分区的 Power 服务器,以及管理该服务器的 HMC 地址,以及 HMC 用户名
SERVERINFO servername=SVRP570-05-SN6530DED,buildhmc=9.123.126.116,builduser=hscroot
# 变量定义结束
# 这里会定义 VIOS 虚拟化配置信息,包括 VIOS 的 hostname,profile 名称,SEA 配置,FC 卡属性配置,FSCSI 属性等。
#
# VIO1
# 定义 VIOS1 的域名以及 profile 名称
VIO hostname=&VIO1.,profilename=default
# 定义 VIOS1 SEA 的的配置信息,该 SEA 作为主 SEA,其中物理网卡使用 CEC1.-P1-T6,通信虚拟网卡的 id 为 10,vlan 为 1,心跳 channel 使用的虚拟网卡 id 为 99,vlan 为 99,jumboframes,large_receive 都要打开。
SEA networkpriority=P,vlans=&PRODVLANS.,aggports=&CEC1.-P1-T6,trunkpriority=1,vswitch=& PRODVSWITCH.,seavirtid=10,1,seactlchnlid=99,99,virtidip=100,1,ip=&PRODIPVLANVIO1.,netmask=&PRODNETMASK., gateway=&PRODGATEWAY.,jumboframes=NO,lacp8023ad=NO,vlan8021q=NO,large_receive=YES
# 定义 FC adapter 的信息以及属性设置,物理卡为 CEC1.-P1-C2-T1,CEC2.-P1-C2-T2
FCSATTR port=&CEC1.-P1-C2-T1,&CEC2.-P1-C2-T2,max_xfer_size=0x200000,num_cmd_elems=2048
#FSCSI 的属性设置
FSCSIATTR port=&CEC1.-P1-C2-T1,&CEC2.-P1-C2-T2,fc_err_recov=fast_fail,dyntrk=yes
#
# VIO2
VIO hostname=&VIO2.,profilename=default
SEA networkpriority=P,vlans=&PRODVLANS.,aggports=&CEC2.-P1-T6,trunkpriority=2,vswitch=& PRODVSWITCH.,seavirtid=10,1,seactlchnlid=99,99,virtidip=100,1,ip=&PRODIPVLANVIO2.,netmask=& PRODNETMASK.,gateway=&PRODGATEWAY.,jumboframes=NO,lacp8023ad=NO,vlan8021q=NO,large_receive=YES
FCSATTR port=&CEC1.-P1-C3-T1,&CEC2.-P1-C3-T2,max_xfer_size=0x200000,num_cmd_elems=2048
FSCSIATTR port=&CEC1.-P1-C3-T1,&CEC2.-P1-C3-T2,fc_err_recov=fast_fail,dyntrk=yes
#VIOS 配置定义结束
#VIOS 分区定义开始,主要定义 VIOS 的分区信息,Partition Data。
# 一共定义 VIO1,VIO2 两个分区,VIO1 的分区 id 为 1,profile 名字为 default,cpu 模式为共享,物理 cpu 占用为 0.5,虚拟 cpu 个数为 2,模式为 uncap,权值为 255,内存大小为 4G。VIO2 的分区 id 为 2,profile 名字为 default,cpu 模式为共享,物理 cpu 占用为 0.5,虚拟 cpu 个数为 2,模式为 uncap,权值为 255,内存大小为 4G。
# 两个分区定义中都定义了对应的 NIM 服务器。
#
PARTITION name=&VIO1.,profile_name=default,lpar_id=1,lpar_env=vioserver,proc_mode=shared,min_proc_units=0.1,desired_proc_units=0.5,max_proc_units=1.0, min_procs=1,desired_procs=2,max_procs=4,sharing_mode=uncap,uncap_weight=255,min_mem=2048,desired_mem=4096,max_mem=6144, mem_mode=ded,max_virtual_slots=500,allow_perf_collection=1,all_resources=0,conn_monitoring=1,msp=1,"io_slots=&CEC1.-P1-T14/none/1, &CEC1.-P1-T6/none/1,&CEC1.-P1-T12/none/1,&CEC1.-P1-T15/none/1,&CEC2.-P1-T12/none/1",lpar_netboot=&NIMIP.,&VIO1., &NIMIPVIO1.,&NIMNMVIO1.,&NIMGWVIO1.,&CEC1.-P1-T6,&NIMSPEED.,&NIMDUPLEX.,NA
#
PARTITION name=&VIO2.,profile_name=default,lpar_id=2,lpar_env=vioserver,proc_mode=shared,min_proc_units=0.1,desired_proc_units=0.5,max_proc_units=1.0, min_procs=1,desired_procs=2,max_procs=4,sharing_mode=uncap,uncap_weight=255,min_mem=2048,desired_mem=4096,max_mem=6144,mem_mode=ded, max_virtual_slots=500,allow_perf_collection=1,all_resources=0,conn_monitoring=1,msp=1,"io_slots=&CEC2.-P1-T14/none/1,&CEC2.-P1-T6/none/1, &CEC2.-P1-T15/none/1,&CEC1.-P1-C1/none/1",lpar_netboot=&NIMIP.,&VIO1.,&NIMIPVIO2.,&NIMNMVIO2.,&NIMGWVIO2., &CEC2.-P1-T6,&NIMSPEED.,&NIMDUPLEX.,NA
vioc.def文件定义如下(# 开始表示该行为注释 ),该文件分为三个部分,第一部分仍然为变量定义,第二部分为 LPAR 与 VIOS 的对应关系定义,包括虚拟卡的创建与对应关系,包括 VFC 卡、VSCSI 卡等,第三部分为普通分区(LPAR)定义,包括 LPAR 占用的 CPU 资源、内存资源等:
# 变量定义,具体的变量定义细节请参考 vios.def 文件解释
VARIABLES &VIO1.=p570_vio1,&VIO2.=p570_vio2
VARIABLES &CEC1.=DQD0457,&CEC2.=DQD194N
VARIABLES &NIMSPEED.=auto,&NIMDUPLEX.=auto
VARIABLES &NIMIPVIO1.=9.123.126.129,&NIMNMVIO1.=255.255.255.0,&NIMGWVIO1.=9.123.126.1
VARIABLES &NIMIPVIO2.=9.123.126.126,&NIMNMVIO2.=255.255.255.0,&NIMGWVIO2.=9.123.126.1
VARIABLES &PRODVLANS.=1
VARIABLES &PRODIPVLANVIO1.=9.123.126.129,NA,NA
VARIABLES &PRODIPVLANVIO2.=9.123.126.126,NA,NA
VARIABLES &PRODNETMASK.=255.255.255.0,NA,NA
VARIABLES &PRODGATEWAY.=9.123.126.1,NA,NA
VARIABLES &NIMIP.=9.123.126.127
VARIABLES &PRODVSWITCH.=ETHERNET0
SERVERINFO servername=SVRP570-05-SN6530DED,buildhmc=9.123.126.116,builduser=hscroot
#LPAR 与 VIOS 对应关系定义,这里的定义主要用于虚拟卡的创建、虚拟卡的对应,包括 VIOS 与 LPAR 的 VFC 卡、VSCSI 卡等
# VIOS1
VIO hostname=&VIO1.,profilename=default
SEA networkpriority=P,vlans=&PRODVLANS.,aggports=&CEC1.-P1-T6,trunkpriority=1,vswitch=& PRODVSWITCH.,seavirtid=10,1,seactlchnlid=99,99,virtidip=100,1,ip=&PRODIPVLANVIO1.,netmask=&PRODNETMASK., gateway=&PRODGATEWAY.,jumboframes=NO,lacp8023ad=NO,vlan8021q=NO,large_receive=YES
# 光纤卡属性设置
FCSATTR port=&CEC.-P1-C2-T1,&CEC.-P1-C2-T2,max_xfer_size=0x200000,num_cmd_elems=2048
#FSCSI 属性设置
FSCSIATTR port=&CEC.-P1-C2-T1,&CEC.-P1-C2-T2,fc_err_recov=fast_fail,dyntrk=yes
# 虚拟光纤卡的创建与对应关系(VIOS server adapter 与 LPAR client adapter 的对应关系)设置
VFCGEN mapping=13:2-lpar_id,14:3-lpar_id
# 虚拟光纤卡与物理光纤卡的映射(相当于 vfcmap 命令)
VFCMAP port=&CEC.-P1-C2-T1,serveradapters=211,212,213,215,216
VFCMAP port=&CEC.-P1-C2-T2,serveradapters=311,312,313,315,316
# 虚拟 SCSI 卡的创建与对应关系(VIOS server adapter 与 LPAR client adapter 的对应关系)设置
VSCSIGEN mapping=11:1-lpar_id
#VIOS 盘到 SCSI 卡的映射(相当于 mkvdev -vdev hdisk 相关命令)
VSCSIMAP serveradapters=1>rootvg1-30720-NA,2>rootvg2-30720-NA
# VIOS2
VIO hostname=&VIO2.,profilename=default
SEA networkpriority=P,vlans=&PRODVLANS.,aggports=&CEC2.-P1-T6,trunkpriority=2,vswitch=& PRODVSWITCH.,seavirtid=10,1,seactlchnlid=99,99,virtidip=100,1,ip=&PRODIPVLANVIO2.,netmask=&PRODNETMASK., gateway=&PRODGATEWAY.,jumboframes=NO,lacp8023ad=NO,vlan8021q=NO,large_receive=YES
FCSATTR port=&CEC.-P1-C3-T1,&CEC.-P1-C3-T2,max_xfer_size=0x200000,num_cmd_elems=2048
FSCSIATTR port=&CEC.-P1-C3-T1,&CEC.-P1-C3-T2,fc_err_recov=fast_fail,dyntrk=yes
VFCGEN mapping=15:2-lpar_id,16:3-lpar_id
VFCMAP port=&CEC.-P1-C3-T1,serveradapters=211,212,213,215,216
VFCMAP port=&CEC.-P1-C3-T2,serveradapters=311,312,313,315,316
VSCSIGEN mapping=12:2-lpar_id
VSCSIMAP serveradapters=1>rootvg1-30720-NA,2>rootvg2-30720-NA
# 这里共定义两个分区,分别为 aix_lpar0、aix_lpar1。aix_lpar0 的分区 id 为 3,profile 名为 lpar0_default,CPU 模式为共享,占用物理 CPU 资源为 2,模式为 uncap,权值为 128,内存大小为 4G,及其对应的 NIM 服务器信息。aix_lpar1 的分区 id 为 4,profile 名为 default,CPU 模式为共享,占用物理 CPU 资源为 2,模式为 uncap,权值为 128,内存大小为 4G,机器对应的 NIM 服务器信息。
PARTITION name=aix_lpar0,lpar_id=3,profile_name=lpar0_default,lpar_env=aixlinux,proc_mode=shared,min_proc_units=0.1,desired_proc_units=2.0, max_proc_units=4.0,min_procs=1,desired_procs=2,max_procs=4,uncap_weight=128,min_mem=2048,desired_mem=4096,max_mem=6144,mem_mode=ded, allow_perf_collection=1,sharing_mode=uncap,max_virtual_slots=20,all_resources=0,conn_monitoring=1,lpar_netboot=&NIMIP., 9.123.126.123,255.255.255.0,9.123.126.1,NA,&NIMSPEED.,&NIMDUPLEX.,NA
PARTITION name=aix_lpar1,lpar_id=4,profile_name=default,lpar_env=aixlinux,proc_mode=shared,min_proc_units=0.1,desired_proc_units=2.0,max_proc_units=2.0, min_procs=1,desired_procs=2,max_procs=4,uncap_weight=128,min_mem=2048,desired_mem=4096,max_mem=6144, mem_mode=ded,allow_perf_collection=1,sharing_mode=uncap,max_virtual_slots=20,all_resources=0,conn_monitoring=1, lpar_netboot=&NIMIP.,9.123.126.124,255.255.255.0,9.123.126.1,NA,&NIMSPEED.,&NIMDUPLEX.,NA
这两个定义文件 (vios.def 与 vioc.def) 是我们通过该工具规划实施 PowerVM 的核心,所以我们进行了详细的描述,更详细的关于这两个文件的定义描述,请参考工具的发布文档。
3. 在 NIM 服务器上准备安装 VIOS 分区与普通分区所需的操作:
1)创建 VIOS 与普通分区的 mksysb(安装镜像)、spot NIM 资源。
2)将要安装的 VIOS 与普通分区(LPAR)加入到 /etc/hosts 文件中,如图 3
3)为要安装的 VIOS 与普通分区(LPAR)定义 NIM 客户端,定义好后如图 4,可以看到,共有四个 NIM client 分区定义已经完成,分别是两个 VIOS 分区,两个普通分区(LPAR)。
4. 运行该脚本工具 :
#buildframe.ksh �Cp vios �Cf build
等待 VIOS 分区完成划分与安装。
5. VIOS 安装完成以后,登陆到 VIOS 服务器,把脚本 buildframe.ksh 和 vios.def 传输到 VIOS 的 /tmp 目录,并且运行如下命令:
#buildframe.ksh �Cp vios �Cv build (该命令完成后将会重启 VIOS)
#buildframe.ksh �Cp vios �Cv validate (测试网络运行情况)
6. 至此,VIOS 配置与安装都已经完成。
7. 从 SAN 分配存储给 VIOS,作为普通 client 分区的 rootvg 盘。
8. 在 NIM Server,运行如下命令完成普通分区(LPAR)描述文件(profile)的创建与系统部署:
# buildframe.ksh �Cp vioclient �Cf build
完成所有分区的部署后,Virtual fiber adapters 的 WWPN 号可以在 work_area/vioclientwwpn.csv 找到,该文件收集的 WWPN 号用来在存储交换机划分 zone 时使用,存储交换机划分 zone 之后,SAN 端分配存储盘即可作为分区的数据盘。
以上步骤完成之后,一台基于 PowerVM 虚拟化的服务器所有分区已经划分完成,并且安装配置完成,可以直接登录系统使用。登录 HMC 查看如图 5:
登录已经安装配置完成的 VIOS1,如图 6
回页首
总结
在由多台 Power 服务器,每个 Power 服务器需要划分多个分区(LPAR)的虚拟化实施环境中,如果手工配置与实施,工作量大,对技术要求高,且会造成大量的重复劳动。PowerVM 分区快速划分配置工具(PowerVM Provisioning Toolkit)很好的解决了上述问题,通过将配置信息集中到配置文件中,能够很好的帮助管理人员、实施人员以及工程师做好实施前的规划,实施中的自动化部署与配置,实施后的统一管理。
通过本文典型的配置使用场景介绍,我们可以看到,对 PowerVM 的定义以及规划主要集中在两个配置文件中,我们对这两个文件的格式进行了详细的描述,一旦这两个配置文件完成,便可以通过简单的命令行运行该工具,完成 PowerVM 的实施与配置,且配置文件通过简单的修改,便可以继续应用于其他 Power 服务器,非常的方便。
参考资料
学习
PowerVM Virtualization on IBM System p: Introduction and Configuration Fourth Edition:Redbook 介绍 IBM Power 服务器上的 PowerVM 虚拟化技术。
IBM PowerVM Virtualization Managing and Monitoring:Redbook 介绍了 Power 服务器上的虚拟化管理技术。
Hardware Management Console V7 Handbook:Redbook 介绍了 Power 系统的管理平台 HMC。
AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
讨论
加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
关于作者
牛继宾,研究生毕业于华北电力大学计算机应用技术,目前为 IBM 实验室服务部系统工程师,主要从事虚拟化技术、云计算技术、Power 服务器的服务工作,包括咨询、实施等。