与管理了 VIOS 的 HMC 类似,IVM 上的虚拟适配器也包括虚拟以太网适配器、虚拟 SCSI 适配器和虚拟串口适配器等。但是与 HMC 不同的是,IVM 不能通过修改分区属性或者 DLPAR 来改变分区的虚拟 SCSI 适配器和虚拟串口适配器的配置。清单1中,IVM 命令 chsyscfg 和 chhwres 分别支持虚拟适配器选项 virtual_eth_adapters 和 --rsubtype eth,却不支持 HMC 上提供的选项 virtual_scsi_adapters、virtual_serial_adapters、--rsubtype scsi 和 --rsubtype serial(见清单2)。用户在 IVM 的图形操作界面上也无法找到与这两种虚拟适配器相关的设置界面,因此也就无法执行相应的操作。
清单1:IVM 命令 chsyscfg 和 chhwres
$ chsyscfg Usage: chsyscfg -r lpar | prof | sys [-m <managed system>] -f <configuration file> | -i "<configuration data>" [--help] ~~~ 截断无关部分 ~~~ -r prof required: name | lpar_id | lpar_name optional: new_name, min_mem, desired_mem, max_mem, ~~~ 截断无关部分 ~~~ virtual_eth_adapters(slot_num/ieee_virtual_eth/ port_vlan_id/addl_vlan_ids/is_trunk/is_required), ~~~ 截断无关部分 ~~~ $ chhwres Usage: chhwres -r io | mem | proc | virtualio | hea [--rsubtype slot | taggedio | eth | hsl | virtualopti] ~~~ 截断无关部分 ~~~ --rsubtype - the subtype of hardware resources to be changed: slot - I/O slot taggedio - tagged I/O eth - virtual ethernet hsl - HSL OptiConnect virtualopti - virtual OptiConnect vasi - Virtual Asynchronous Services Interface ~~~ 截断无关部分 ~~~ |
清单2:HMC 命令 chsyscfg 和 chhwres
hscroot@sqh11lte:~> chsyscfg Usage: chsyscfg -r lpar | prof | sys | sysprof | frame -m <managed system> | -e <managed frame> -f <configuration file> | -i "<configuration data>" [--help] ~~~ 截断无关部分 ~~~ -r prof required: name, lpar_id | lpar_name optional: new_name, min_mem, desired_mem, max_mem, ~~~ 截断无关部分 ~~~ virtual_eth_adapters (slot_num/ieee_virtual_eth/ port_vlan_id/addl_vlan_ids/trunk_priority/ is_required), virtual_scsi_adapters (slot_num/adapter_type/ remote_lpar_id/remote_lpar_name/ remote_slot_num/is_required), virtual_serial_adapters (slot_num/adapter_type/ supports_hmc/remote_lpar_id/remote_lpar_name/ remote_slot_num/is_required), ~~~ 截断无关部分 ~~~ hscroot@sqh11lte:~> chhwres Usage: chhwres -r io | mem | proc | virtualio [--rsubtype slot | iopool | taggedio | eth | scsi | serial | hsl | virtualopti] ~~~ 截断无关部分 ~~~ --rsubtype - the subtype of hardware resources to be changed: slot - I/O slot iopool - I/O pool taggedio - tagged I/O eth - virtual ethernet scsi - virtual SCSI serial - virtual serial hsl - HSL OptiConnect virtualopti - virtual OptiConnect ~~~ 截断无关部分 ~~~ hscroot@sqh11lte:~> |
既然如此,那么用户如何为分区配置虚拟 SCSI 适配器和虚拟串口适配器呢?清单3中,在创建分区的时候,即使不指定虚拟 SCSI 和串口适配器的配置信息,IVM 也会默认创建这些资源:包括两个虚拟串口适配器,虚拟插槽号分别是0和1;以及一个虚拟 SCSI 适配器,虚拟插槽号为2,该客户分区端的适配器映射到 VIOS 分区 uli14 上的虚拟 SCSI 适配器 vhost2,vhost2 是分区创建过程中在 VIOS 上创建的一个新的服务器端虚拟适配器。由于 IVM 不允许用户虚拟 SCSI 和串口适配器的配置,因此本文就不再继续讨论了,这里仅介绍虚拟以太网适配器的 DLPAR 操作。
清单3:IVM 在创建分区时默认创建虚拟 SCSI 和串口适配器
$ lsdev -virtual | grep vhost vhost0 Available Virtual SCSI Server Adapter vhost1 Available Virtual SCSI Server Adapter $ mksyscfg -r lpar -i lpar_id=4,name=tmp,lpar_env=aixlinux,work_group_id=none, shared_proc_pool_util_auth=1,boot_mode=norm,auto_start=1,max_virtual_slots=10, min_mem=128,desired_mem=128,max_mem=128,proc_mode=shared, min_proc_units=0.1,desired_proc_units=0.1,max_proc_units=2.0, sharing_mode=uncap,uncap_weight=128,min_procs=1,desired_procs=1,max_procs=2, virtual_eth_adapters=4/0/1//0/0 |
IVM 默认为分区创建了虚拟串口适配器和虚拟 SCSI 适配器,其中虚拟 SCSI 适配器与 uli14 上虚拟插槽15中的适配器相对应。
$ lssyscfg -r prof --filter "lpar_names=tmp" name=tmp,lpar_name=tmp,lpar_id=4,os_type=aixlinux,all_resources=0,min_mem=128, desired_mem=128,max_mem=128,proc_mode=shared,min_proc_units=0.10, desired_proc_units=0.10,max_proc_units=2.00,min_procs=1,desired_procs=1, max_procs=2,sharing_mode=uncap,uncap_weight=128,io_slots=none, lpar_io_pool_ids=none,max_virtual_slots=10, "virtual_serial_adapters=0/server/1/any//any/1,1/server/1/any//any/1", virtual_scsi_adapters=2/client/1/uli14/15/1,virtual_eth_adapters=4/0/1//0/0, boot_mode=norm,conn_monitoring=0,auto_start=1,power_ctrl_lpar_ids=none, lhea_logical_ports=none,lhea_capabilities=none,lpar_proc_compat_mode=default $ lsdev -virtual | grep vhost vhost0 Available Virtual SCSI Server Adapter vhost1 Available Virtual SCSI Server Adapter vhost2 Available Virtual SCSI Server Adapter $ lsdev -dev vhost2 -vpd vhost2 U7998.60X.100E7DA-V1-C15 Virtual SCSI Server Adapter Hardware Location Code......U7998.60X.100E7DA-V1-C15 |
图形界面操作方式
进行虚拟以太网适配器 DLPAR,首先需要在 IVM 管理界面中打开分区属性,然后选择“以太网”标签,就可以看到如图1所示的页面。该页面包括3个区域:主机以太网适配器、虚拟以太网适配器和物理以太网适配器。主机以太网适配器即 Host Ethernet Adapter(HEA),普通的以太网适配器只能以整个物理适配器为单位进行 DLPAR,而 HEA 则允许用户将其划分成若干个逻辑以太网适配器分配给多个分区来使用。HEA 和后续讨论的物理适配器 DLPAR 类似,这里就不单独讨论了。由于物理以太网适配器包含在“物理适配器”标签中,因此“以太网”标签中没有列出具体的信息,只是提示用户切换到“物理适配器”标签。本节仅介绍虚拟以太网适配器的 DLPAR 操作,对物理适配器的讨论留到后续章节中进行。
图中,虚拟以太网适配器配置区域包括若干个以太网适配器和“创建适配器”按钮。默认情况下,每个分区最多有两个虚拟以太网适配器,如果用户需要更多的适配器,可以点击“创建适配器”按钮。在本文的实验环境中,DLPAR 之前分区 uli13lp2 上只有一个虚拟以太网适配器,连接到 VLAN(虚拟以太网)1。要使用 DLPAR 功能动态增加虚拟以太网适配器,我们从适配器2对应的下拉列表中选择一个 VLAN(比如 VLAN 1),然后点击“确定”按钮进行 DLPAR 操作。
图1:通过图形界面进行虚拟以太网适配器 DLPAR 操作
清单4和5分别显示了上述 DLPAR 操作前后 Linux 分区 uli13lp2 上虚拟以太网适配器的信息。命令 lsslot 是 DLPAR 工具包中的一个命令,能够列出虚拟适配器信息。虚拟以太网适配器1的位置代码为 U7998.60X.100E7DA-V3-C4,在 Linux 上的名称为30000004;DLPAR 操作增加了适配器2,其位置代码为 U7998.60X.100E7DA-V3-C5,Linux 名称为30000005。增加网络适配器意味着增加网络接口,使用 ifconfig 命令,我们可以看到 DLPAR 后增加了 eth1,该接口正是对应到位置代码为 U7998.60X.100E7DA-V3-C5 的适配器2。与处理器和内存类似,open firmware 设备树和 sysfs 文件系统也存储了与虚拟以太网适配器相关的信息。在设备树中,虚拟资源的信息存储在 /proc/device-tree/vdevice/ 目录下,子目录 l-lan@30000004 对应的是 Linux 名称为30000004的适配器1,DLPAR 操作后增加的子目录 l-lan@30000005 对应的是适配器2。在 sysfs 文件系统中,虚拟资源的信息存储在 /sys/devices/vio/ 目录下,适配器的 Linux 名称就是子目录的名称,通过检查这些信息,我们能够确认 DLPAR 成功增加了适配器2。
清单4:虚拟以太网适配器 DLPAR 前
用 lsslot 查看:
uli13lp2:~ # rpm -qf `which lsslot` powerpc-utils-papr-1.1.1.8-0 uli13lp2:~ # lsslot -c slot # Slot Description Linux Name Device(s) U7998.60X.100E7DA-V3-C0 Virtual I/O Slot 30000000 vty U7998.60X.100E7DA-V3-C2 Virtual I/O Slot 30000002 v-scsi U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan |
用 ifconfig 查看:
uli13lp2:~ # ifconfig –a | grep eth eth0 Link encap:Ethernet HWaddr 2E:B5:4B:53:D9:04 uli13lp2:~ # rpm -qf `which lscfg` lsvpd-1.4.0-1 uli13lp2:~ # lscfg -vp | grep eth0 eth0 U7998.60X.100E7DA-V3-C4-T1 |
在 open firmware 设备树中查看:
uli13lp2:~ # ls /proc/device-tree/vdevice/ #address-cells ibm,drc-names linux,phandle #interrupt-cells ibm,drc-power-domains name #size-cells ibm,drc-types nvram@4002 IBM,sp@4000 ibm,max-virtual-dma-size rtc@4001 compatible ibm,phandle v-scsi@30000002 device_type interrupt-controller vty@30000000 gscsi@4004 interrupt-ranges ibm,drc-indexes l-lan@30000004 |
在 sysfs 中查看:
uli13lp2:~ # ls /sys/devices/vio/ 30000000 30000002 30000004 4000 4001 4002 4004 bus uevent uli13lp2:~ # ls /sys/devices/vio/30000004 bus devspec driver name net:eth0 pool0 pool1 pool2 pool3 pool4 uevent |
清单5:虚拟以太网适配器 DLPAR 后
用 lsslot 查看:
uli13lp2:~ # lsslot -c slot # Slot Description Linux Name Device(s) U7998.60X.100E7DA-V3-C0 Virtual I/O Slot 30000000 vty U7998.60X.100E7DA-V3-C2 Virtual I/O Slot 30000002 v-scsi U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan U7998.60X.100E7DA-V3-C5 Virtual I/O Slot 30000005 l-lan |
用 ifconfig 查看:
uli13lp2:~ # ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr 2E:B5:4B:53:D9:04 eth1 Link encap:Ethernet HWaddr 2E:B5:4B:53:D9:05 uli13lp2:~ # lscfg -vp | grep eth1 在 DLPAR 后重启 vpdupdater 服务以便重新获取 VPD 信息,其中包含新增加的适配器信息 uli13lp2:~ # /etc/init.d/vpdupdater restart uli13lp2:~ # lscfg -vp | grep eth1 eth1 U7998.60X.100E7DA-V3-C5-T1 |
在 open firmware 设备树中查看:
uli13lp2:~ # ls /proc/device-tree/vdevice/ #address-cells ibm,drc-names l-lan@30000005 #interrupt-cells ibm,drc-power-domains linux,phandle #size-cells ibm,drc-types name IBM,sp@4000 ibm,max-virtual-dma-size nvram@4002 compatible ibm,phandle rtc@4001 device_type interrupt-controller v-scsi@30000002 gscsi@4004 interrupt-ranges vty@30000000 ibm,drc-indexes l-lan@30000004 |
在 sysfs 中查看:
uli13lp2:~ # ls /sys/devices/vio/ 30000000 30000002 30000004 30000005 4000 4001 4002 4004 bus uevent uli13lp2:~ # ls /sys/devices/vio/30000005 bus devspec driver name net:eth1 pool0 pool1 pool2 pool3 pool4 uevent |
成功增加了虚拟以太网适配器后,就可以配置并使用该适配器来进行网络通信。要删除适配器,需要执行与上述过程相反的操作。首先在 Linux 操作系统上使用 ifdown 或 ifconfig 等命令停止使用该适配器;其次打开图1所示的页面,把该适配器所对应的虚拟以太网设置成“无”;最后点击“确定”按钮完成 DLPAR 删除操作。与 HMC 类似,IVM 也不支持在不同分区之间移动虚拟适配器,因为虚拟适配器只属于某个分区,不是系统范围内的全局资源。
命令行操作方式
除了上述图形方式外,用户也可以使用命令 chhwres 进行虚拟以太网适配器的 DLPAR 操作。清单6显示了一个使用该命令进行适配器增加和删除的例子,两种操作所使用的命令行参数很相似,不同点在于增加操作使用“-o a”选项并提供“-a”选项来指定虚拟以太网适配器的属性。
清单6:使用命令 chhwres 进行虚拟以太网适配器 DLPAR 操作
DLPAR 前分区只有一个虚拟以太网适配器:
$ lshwres -r virtualio --rsubtype eth --level lpar --filter "lpar_names=uli13lp2" lpar_name=uli13lp2,lpar_id=3,slot_num=4,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=0,mac_addr=2EB54B53D904 $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0" 用 chhwres 增加虚拟以太网适配器: $ chhwres -r virtualio --rsubtype eth -o a -p uli13lp2 -s 5 -a ieee_virtual_eth=0,port_vlan_id=1,is_trunk=0,trunk_priority=0 |
DLPAR 后分区有两个虚拟以太网适配器:
$ lshwres -r virtualio --rsubtype eth --level lpar --filter "lpar_names=uli13lp2" lpar_name=uli13lp2,lpar_id=3,slot_num=4,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=0,mac_addr=2EB54B53D904 lpar_name=uli13lp2,lpar_id=3,slot_num=5,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=0,mac_addr=2EB54B53D905 $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0,5/0/1//0/0" |
用 chhwres 删除虚拟以太网适配器:
$ chhwres -r virtualio --rsubtype eth –o r -p uli13lp2 -s 5 |
DLPAR 后分区只有一个虚拟以太网适配器:
$ lshwres -r virtualio --rsubtype eth --level lpar --filter "lpar_names=uli13lp2" lpar_name=uli13lp2,lpar_id=3,slot_num=4,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=0,mac_addr=2EB54B53D904 $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0" |
回顾本系列文章第一部分中的“DLPAR 的基本过程”一节,我们知道可以使用命令 chsyscfg 来动态调整适配器资源的分配,只不过需要手工执行 vary on/off 操作。清单7显示了这样一个例子,当分区正在使用虚拟以太网适配器的时候,chsyscfg 不能将其从分区属性中删除,用户必须事先在 Linux 分区上使用 DLPAR 工具包提供的命令 drslot_chrp_slot 来执行 vary off 操作。在分区上 vary off 该设备后,用户就可以将它从分区属性中删除,这样就实现了 DLPAR 删除操作。与之相反,用户可以使用 chsyscfg 在分区属性中增加虚拟以太网适配器,然后在 Linux 分区上使用命令 drslot_chrp_slot 来 vary on 该设备,这样就可以在分区上看到新增的设备了。
清单7:使用命令 chsyscfg 增删虚拟以太网适配器
在 vary off 之前,chsyscfg 不能删除正在使用中的适配器:
$ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0,5/0/1//0/0" $ chsyscfg -r prof -i "lpar_name=uli13lp2,virtual_eth_adapters-=5/0/1//0/1" [VIOSE03000147-0281] Virtual adapter defined for virtual slot number 5 is in use and can cannot be removed. |
在分区 uli13lp2 上使用 drslot_chrp_slot 来 vary off 插槽 U7998.60X.100E7DA-V3-C5 中的适配器:
uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan U7998.60X.100E7DA-V3-C5 Virtual I/O Slot 30000005 l-lan uli13lp2:~ # drslot_chrp_slot -c slot -s U7998.60X.100E7DA-V3-C5 -r uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan |
在 IVM 上使用命令 chsyscfg 删除虚拟以太网适配器:
$ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0,5/0/1//0/0" $ chsyscfg -r prof -i "lpar_name=uli13lp2,virtual_eth_adapters-=5/0/1//0/0" $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters 4/0/1//0/0 |
在 IVM 上使用命令 chsyscfg 增加虚拟以太网适配器:
$ chsyscfg -r prof -i "lpar_name=uli13lp2,virtual_eth_adapters+=5/0/1//0/0" $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0,5/0/1//0/0" |
chsyscfg 操作后在分区 uli13lp2 上看不到新增的适配器:
uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan |
在分区 uli13lp2 上使用 drslot_chrp_slot 来 vary on 插槽 U7998.60X.100E7DA-V3-C5 中的适配器,之后便可看到新增的适配器:
uli13lp2:~ # drslot_chrp_slot -c slot -s U7998.60X.100E7DA-V3-C5 -a uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan U7998.60X.100E7DA-V3-C5 Virtual I/O Slot 30000005 l-lan |
IVM 从 VIOS 版本1.5开始支持客户分区上物理适配器的分配,包括静态分配和 DLPAR。为了管理物理适配器,IVM 增加了“查看/修改物理适配器”功能(如图2所示)。该页面列出了服务器上所有的物理适配器,包括适配器的物理位置码,适配器中所挂接的各种设备以及分配的分区等信息。
图2:查看/修改物理适配器
在一个出厂设置的 System p 服务器上安装完 IVM 后,所有的物理设备都被默认分配给 IVM 所在的 VIOS 分区(如图2中“分配的分区”一栏所示)。如果要把某个物理适配器分配给客户分区来使用,首先必须停止 VIOS 对该适配器的使用,然后把该适配器从 VIOS 中删除。清单8中,总线 PHB 512 上的 PCI-X266 Planar 3Gb SAS 适配器(物理位置码为 U78A5.001.WIH1106-P1-T5)中的磁盘 hdisk13 没有被使用,我们使用 rmdev 命令直接删除该适配器及其所有子设备的定义。要将它从 VIOS 中删除,首先在图2所示的页面中选择该适配器,点击“修改分区分配”按钮,然后在图3所示的页面中将“新分区”设置成“无”,点击“确认”按钮后 IVM 就会从分区中删除该适配器。下面将以该适配器为例讲解物理适配器的 DLPAP 操作。
清单8:从 VIOS 中删除物理适配器的定义
$ lspv -free NAME PVID SIZE(megabytes) hdisk13 none 70006 $ oem_setup_env # lsslot -c phb PHB Name Description Device(s) PHB 512 Logical PCI Host Bridge pci0 sissas0 PHB 513 Logical PCI Host Bridge pci1 usbhc0 usbhc1 PHB 514 Logical PCI Host Bridge pci2 ati0 PHB 515 Logical PCI Host Bridge pci3 fcs0 fcs1 # rmdev -l sissas0 -R ses0 Defined hdisk13 Defined sas0 Defined sata0 Defined sissas0 Defined # exit $ lspv -free $ |
图3:删除物理适配器的分区分配
从 VIOS 中删除物理适配器后,就可以在分区属性页面的“物理适配器”标签中看到该空闲的适配器(如图4所示)。要在 Linux 分区 uli13lp2 上执行物理适配器的 DLPAR 增加操作,首先选择要添加的空闲适配器 U78A5.001.WIH1106-P1-T5,然后点击“确定”按钮。DLPAR 之前,Linux 分区 uli13lp2 上没有任何 PCI 适配器,有一个磁盘 sda(见清单9);DLPAR 之后,物理位置码 U78A5.001.WIH1106-P1-T5 中的 SAS 适配器被加入该分区,这样 uli13lp2 分区就拥有了该适配器中的磁盘 sdb(见清单10)。
图4:通过图形界面进行物理适配器 DLPAR 操作
清单9:增加物理适配器之前
uli13lp2:~ # lspci uli13lp2:~ # lsscsi [0:0:6:0] disk AIX VDASD 0001 /dev/sda |
清单10:增加物理适配器之后
增加了一个 PCI 适配器和一个磁盘:
uli13lp2:~ # lspci 00:01.0 RAID bus controller: IBM Obsidian chipset SCSI controller (rev 02) uli13lp2:~ # lsscsi [0:0:6:0] disk AIX VDASD 0001 /dev/sda [1:7:0:0] disk IBM-ESXS CBRBA073C3ETS0 N C2B0 /dev/sdb [1:8:0:0] enclosu IBM VSBPD1BB SAS 02 - [1:255:255:255]no dev IBM 57D0001SISIOA 0150 - |
找到该适配器在 sysfs 中的路径:
uli13lp2:~ # find /sys/devices/ -name "*00:01.0*" /sys/devices/pci0000:00/0000:00:01.0 文件 devspec 的内容指明了该适配器在 /proc/device-tree/ 中的相对路径: uli13lp2:~ # cat /sys/devices/pci0000:00/0000:00:01.0/devspec; echo /pci@800000020000200/pci1014, 02BD@1 |
proc 中的 ibm,loc-code 文件存储了该适配器所在的物理位置码:
uli13lp2:~ # cat /proc/device-tree/pci@800000020000200/pci1014,02BD@1/ibm,loc-code; echo U78A5.001.WIH1106-P1-T5 |
磁盘 sdb 挂接在新增的 PCI 适配器中:
uli13lp2:~ # /etc/init.d/vpdupdater restart uli13lp2:~ # lscfg -vp | grep sdb sg1 sdb 1:7:0:0 U78A5.001.WIH1106-P1-T5-D5 |
物理适配器的 DLPAR 删除操作同样简单:首先在 Linux 分区中停止使用该适配器,然后在图4所示的图形界面中取消对该适配器的选择,并点击“确定”按钮。物理适配器的 DLPAR 移动操作则可以在“查看/修改物理适配器”页面中进行:首先在图2所示的页面中选择要移动适配器,点击“修改分区分配”按钮,然后在图3所示的页面中将“新分区”修改成目标分区,点击“确认”按钮。
用户也可以使用命令 chhwres 进行物理适配器 DLPAR 操作。清单11中,增加适配器之前 U78A5.001.WIH1106-P1-T5 不属于任何分区,DLPAR 操作之后该适配器被分配给了分区 uli13lp2。要执行 DLPAR 删除操作,首先在 Linux 分区中停止使用该适配器,然后在 IVM 的命令行界面中使用带有“-o r”选项的 chhwres。与 HMC 不同的是,IVM 上的 chhwres 命令并不提供移动选项。为了实现上述图形界面中所执行的物理适配器移动操作,IVM 首先在源分区中通过 DLPAR 删除适配器,然后再把该适配器通过 DLPAR 增加到目标分区。
清单11:使用命令 chhwres 进行物理适配器 DLPAR 操作
增加物理适配器:
$ lshwres -r io --rsubtype slot -F drc_name,lpar_name,drc_index U78A5.001.WIH1106-P1-T5,null,21010200 U78A5.001.WIH1106-P1-T1,uli14,21010201 U78A5.001.WIH1106-P1-C9,uli14,21010202 U78A5.001.WIH1106-P1-C10,uli14,21010203 $ chhwres -r io --rsubtype slot -o a -p uli13lp2 -l 21010200 $ lshwres -r io --rsubtype slot -F drc_name,lpar_name,drc_index | grep U78A5.001.WIH1106-P1-T5 U78A5.001.WIH1106-P1-T5,uli13lp2,21010200 |
删除物理适配器:
$ chhwres -r io --rsubtype slot -o r -p uli13lp2 -l 21010200 $ lshwres -r io --rsubtype slot -F drc_name,lpar_name,drc_index | grep U78A5.001.WIH1106-P1-T5 U78A5.001.WIH1106-P1-T5,null,21010200 |
与虚拟以太网适配器类似,命令 chsyscfg 也可以用于物理适配器的 DLPAR 操作(见清单12)。由于所操作的适配器 U78A5.001.WIH1106-P1-T5 是 PHB 设备(如清单8所示),因此这里在 Linux 分区上使用 DLPAR 工具包所提供的命令 drslot_chrp_phb 来执行 vary on/off 操作。此外还有两个类似的命令 drslot_chrp_pci 和 drslot_chrp_hea,显而易见,drslot_chrp_pci 用于操作 PCI 总线上的设备,而 drslot_chrp_hea 则用于操作 HEA。
清单12:使用命令 chsyscfg 进行物理适配器 DLPAR 操作
使用 chsyscfg 增加物理适配器:
$ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F io_slots none $ chsyscfg -r prof -i "lpar_name=uli13lp2,io_slots+=21010200/none/0" $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F io_slots 21010200/none/0 |
在分区上使用 drslot_chrp_phb 来 vary on PHB 总线上的适配器:
uli13lp2:~ # lspci uli13lp2:~ # drslot_chrp_phb -c phb -s "PHB 512" -a uli13lp2:~ # lspci 00:01.0 RAID bus controller: IBM Obsidian chipset SCSI controller (rev 02) |
在分区上使用 drslot_chrp_phb 来 vary off PHB 总线上的适配器:
uli13lp2:~ # drslot_chrp_phb -c phb -s "PHB 512" –r uli13lp2:~ # lspci uli13lp2:~ # |
使用 chsyscfg 删除物理适配器:
$ chsyscfg -r prof -i "lpar_name=uli13lp2,io_slots-=21010200/none/0" $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F io_slots none |
在 HMC 上,虚拟适配器和物理适配器的 DLPAR 受限于 required 和 desired 属性,当适配器的属性为 required 时不允许执行 DLPAR 操作,因此在 DLPAR 操作之前必须将属性修改成 desired。在上面章节中,我们并未提及这些属性对适配器 DLPAR 的影响,那么,在 IVM 上是否也存在这些属性,它们在适配器 DLPAR 操作过程中是否也起到相同的作用呢?事实上,IVM 的图形操作界面并未显示任何与适配器相关的 required 或者 desired 属性。这是否意味着 IVM 不支持这些属性,而且适配器 DLPAR 不需要遵循 HMC 上的限制呢?清单13以虚拟以太网适配器为例进行讨论,讨论的结果同样适用于其它类型的适配器。
从清单13中 lssyscfg 和 lshwres 的输出可见,IVM 支持适配器的 required 和 desired 属性,chsyscfg 可以指定这些属性来增加适配器。由于 chhwres 不能指定 required 属性,我们首先用 chsyscfg 增加一个带有 required 属性的适配器,然后在 Linux 分区上 vary on 该适配器。接着,我们尝试使用 chhwres 删除这个新增的适配器。与 HMC 不同,IVM 上的 DLPAR 操作能够删除带有 required 属性的适配器。这是因为:虽然 IVM 提供了这些属性,chsyscfg 在增加适配器的过程中也向 Hypervisor 传递了这些属性,但是 IVM 并不提供基于 required 和 desired 属性的逻辑去控制适配器的 DLPAR 操作,因此这些属性实际上并不起任何作用,图形界面也不提供相应的选项。如果非要透过 required 和 desired 属性去理解 IVM 上的适配器 DLPAR 操作的话,那么我们可以理解为适配器总是带着 desired 属性。
清单13:虚拟以太网适配器的 required 和 desired 属性
分区拥有一个属性为 desired 的虚拟以太网适配器:
$ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters 4/0/1//0/0 |
使用命令 chsyscfg 增加第2个虚拟以太网适配器,属性为 required:
$ chsyscfg -r prof -i "lpar_name=uli13lp2,virtual_eth_adapters+=5/0/1//0/1" $ lssyscfg -r prof --filter "lpar_names=uli13lp2" -F virtual_eth_adapters "4/0/1//0/0,5/0/1//0/1" |
在分区 uli13lp2 上 vary on 第 2 个虚拟以太网适配器:
uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan uli13lp2:~ # drslot_chrp_slot -c slot -s U7998.60X.100E7DA-V3-C5 -a uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan U7998.60X.100E7DA-V3-C5 Virtual I/O Slot 30000005 l-lan |
使用命令 chhwres 来 DLPAR 删除第2个虚拟以太网适配器,结果显示为成功:
$ lshwres -r virtualio --rsubtype eth --level lpar --filter "lpar_names=uli13lp2" lpar_name=uli13lp2,lpar_id=3,slot_num=4,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=0,mac_addr=2EB54B53D904 lpar_name=uli13lp2,lpar_id=3,slot_num=5,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=1,mac_addr=2EB54B53D905 $ chhwres -r virtualio --rsubtype eth -o r -p uli13lp2 -s 5; echo $? 0 $ lshwres -r virtualio --rsubtype eth --level lpar --filter "lpar_names=uli13lp2" lpar_name=uli13lp2,lpar_id=3,slot_num=4,state=1,ieee_virtual_eth=0, port_vlan_id=1,addl_vlan_ids=none,is_trunk=0,trunk_priority=0, is_required=0,mac_addr=2EB54B53D904 |
在分区 uli13lp2 上仅剩下1个虚拟以太网适配器:
uli13lp2:~ # lsslot -c slot | grep l-lan U7998.60X.100E7DA-V3-C4 Virtual I/O Slot 30000004 l-lan |
与 HMC 一样,IVM 也能够对处理器、内存和适配器等资源进行 DLPAR 操作,IVM 的命令行界面也与 HMC 的命令行界面保持兼容。这让用户能够通过相同的命令在两种不同的服务器管理平台上进行 DLPAR 操作。虽然 IVM 和 HMC 上的 DLPAR 概念相似,命令行界面也类似,但是它们的设计目标不同,图形操作界面也风格迥异,两者之间存在不少差异。
- Profile:在 HMC 上,profile 主要用来描述分区所期望获得的资源,对 profile 的修改不影响分区当前所分配的资源,用户必须关闭分区然后重新激活分区来应用 profile;同样,使用 DLPAR 操作对分区当前所分配的资源进行调节也不影响 profile 所描述的内容,这种资源调节在分区关闭后失效。在 IVM 上不存在 profile 这个概念,命令 chsyscfg 或 chhwres 直接修改分区的资源分配(或者修改处理器或内存的暂挂值,然后由 DLPAR Manager 完成同步),这些修改在分区关闭后仍然有效。
- 图形界面:IVM 和 HMC 图形界面的截然不同,DLPAR 操作过程也存在很大差异。
- DLPAR 命令:在 HMC 上,chhwres 用于任何资源的 DLPAR 操作。在 IVM 上,不仅可以使用 chhwres 进行各种资源的 DLPAR,还可以使用 chsyscfg(对于适配器,还需要在分区上执行 vary on/off 操作)。
- 处理器和内存 DLPAR 的同步:IVM 通过 DLPAR Manager 来同步处理器和内存的当前值和暂挂值,而 HMC 中不存在这个守护进程。
- DLPAR 移动:在 HMC 上,chhwres 提供 DLPAR 移动选项将处理器、内存和物理适配器等资源从一个分区移动到另外一个分区。IVM 不支持该选项,需要组合 DLPAR 删除和增加操作来实现相同的功能。
- 处理器和内存的最小值和最大值:在 HMC 上,处理器和内存 DLPAR 受限于这组值,可以通过修改 profile 来改变这些值。在 IVM 上,最小值、已分配和最大值都具有当前和暂挂两种类型的值,在 chsyscfg 或 chhwres 执行过程中所有暂挂值必须遵循与 HMC 相同的限制,在 DLPAR Manager 进行同步的过程中所有当前值也必须遵循这些限制。
- 适配器的 required 和 desired 属性:在 HMC 上,具有 required 属性的适配器不能进行 DLPAR 操作,用户必须通过图形界面或命令行界面把它修改成 desired 属性。IVM 也提供这些属性,但是它们对 DLPAR 操作不起限制作用,图形界面不提供对 required 和 desired 属性的控制选项,用户只能通过命令行来修改,而且只能在资源 vary off 的状态下才能进行。
- 虚拟 SCSI 适配器和虚拟串口适配器:在 HMC 上,用户可以在 profile 中或者通过 DLPAR 操作增加或者删除这些类型的适配器。在 IVM 上,这些类型的适配器在创建分区的时候默认生成,此后不能修改。
本系列文章介绍了 IBM 集成虚拟化管理器 — IVM 上 Linux 逻辑分区的 DLPAR,本文是其中的第三部分,介绍了虚拟适配器和物理适配器的 DLPAR 操作,讨论了 required 和 desired 属性对适配器 DLPAR 操作的影响,并对比了 IVM 和 HMC 上 DLPAR 的不同之处。通过本系列文章的第二部分和本文,读者能够完整的认识理解 IVM 上三种主要资源类型 - 处理器、内存和适配器的 DLPAR 操作。
声明:本文仅代表作者个人之观点,不代表 IBM 公司之观点。
IBM 和 System p 是国际商业机器公司在美国和/或其他国家或地区的商标或注册商标。
- IBM 红皮书《Integrated Virtualization Manager on IBM System p5》:http://www.redbooks.ibm.com/abstracts/redp4061.html?Open
- Redhat 官方文档:http://www./docs/manuals/enterprise/
- Novell/SuSE 官方文档:http://www./documentation/index.html?sourceidint=hdr_support_doc
- HMC 上 DLPAR 的介绍:http://www.ibm.com/developerworks/cn/linux/l-pow-dynamic/
- 在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。
- 在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。