分享

在 IBM 集成虚拟化管理器上进行 Linux 分区的 DLPAR 操作,第 3 部分

 soulhiking 2012-05-18

在 IBM 集成虚拟化管理器上进行 Linux 分区的 DLPAR 操作,第 3 部分

适配器 DLPAR

龚 颉 (gongjie@cn.ibm.com), 软件工程师, IBM

简介: 动态逻辑分区(DLPAR)是 IBM System p 服务器上的一种虚拟化特性,该特性允许用户在分区运行的时候动态调整分区的资源分配,使得系统资源得到更为有效的利用,并且不影响应用或者服务的正常运行。集成虚拟化管理器(IVM)是一种与 HMC 类似的用于管理 System p 服务器的平台,也同样支持 DLPAR,不过与 HMC 上的 DLPAR 存在不少差异。本系列文章介绍 IVM 上 Linux 逻辑分区的 DLPAR,分成四个部分。本文是第三部分,介绍了 IVM 对物理适配器的支持和适配器(包括虚拟适配器和物理适配器)的 DLPAR 操作,并对比了 IVM 和 HMC 上的 DLPAR。

本文是介绍 IVM 上 Linux 分区 DLPAR 操作这一系列文章的第三部分。在前面两部分内容中,我们介绍了 IVM 上 Linux 分区 DLPAR 的一些背景知识,并讨论了处理器和内存的 DLPAR 操作。本文介绍适配器的 DLPAR 操作,包括虚拟适配器和物理适配器的 DLPAR 操作。在完整的认识了 IVM 上三种主要的资源类型 - 处理器、内存和适配器的 DLPAR 操作后,本文对比了 IVM 和 HMC 上的 DLPAR 操作,使读者能够更好的理解 System p 服务器上的 DLPAR 操作。同上一部分文章一样,本文也基于第一部分文章中“Linux 分区 DLPAR 环境的准备”一节所介绍的 SLES10 SP2 实验环境来讲解各部分内容。

虚拟适配器 DLPAR 操作

与管理了 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 操作

图形界面操作方式

进行虚拟以太网适配器 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 操作
通过图形界面进行虚拟以太网适配器 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

物理适配器 DLPAR 操作

IVM 对物理适配器的支持

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 操作
通过图形界面进行物理适配器 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

适配器的 required 和 desired 属性

在 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

IVM 和 HMC 上 DLPAR 的比较

与 HMC 一样,IVM 也能够对处理器、内存和适配器等资源进行 DLPAR 操作,IVM 的命令行界面也与 HMC 的命令行界面保持兼容。这让用户能够通过相同的命令在两种不同的服务器管理平台上进行 DLPAR 操作。虽然 IVM 和 HMC 上的 DLPAR 概念相似,命令行界面也类似,但是它们的设计目标不同,图形操作界面也风格迥异,两者之间存在不少差异。

  1. Profile:在 HMC 上,profile 主要用来描述分区所期望获得的资源,对 profile 的修改不影响分区当前所分配的资源,用户必须关闭分区然后重新激活分区来应用 profile;同样,使用 DLPAR 操作对分区当前所分配的资源进行调节也不影响 profile 所描述的内容,这种资源调节在分区关闭后失效。在 IVM 上不存在 profile 这个概念,命令 chsyscfg 或 chhwres 直接修改分区的资源分配(或者修改处理器或内存的暂挂值,然后由 DLPAR Manager 完成同步),这些修改在分区关闭后仍然有效。
  2. 图形界面:IVM 和 HMC 图形界面的截然不同,DLPAR 操作过程也存在很大差异。
  3. DLPAR 命令:在 HMC 上,chhwres 用于任何资源的 DLPAR 操作。在 IVM 上,不仅可以使用 chhwres 进行各种资源的 DLPAR,还可以使用 chsyscfg(对于适配器,还需要在分区上执行 vary on/off 操作)。
  4. 处理器和内存 DLPAR 的同步:IVM 通过 DLPAR Manager 来同步处理器和内存的当前值和暂挂值,而 HMC 中不存在这个守护进程。
  5. DLPAR 移动:在 HMC 上,chhwres 提供 DLPAR 移动选项将处理器、内存和物理适配器等资源从一个分区移动到另外一个分区。IVM 不支持该选项,需要组合 DLPAR 删除和增加操作来实现相同的功能。
  6. 处理器和内存的最小值和最大值:在 HMC 上,处理器和内存 DLPAR 受限于这组值,可以通过修改 profile 来改变这些值。在 IVM 上,最小值、已分配和最大值都具有当前和暂挂两种类型的值,在 chsyscfg 或 chhwres 执行过程中所有暂挂值必须遵循与 HMC 相同的限制,在 DLPAR Manager 进行同步的过程中所有当前值也必须遵循这些限制。
  7. 适配器的 required 和 desired 属性:在 HMC 上,具有 required 属性的适配器不能进行 DLPAR 操作,用户必须通过图形界面或命令行界面把它修改成 desired 属性。IVM 也提供这些属性,但是它们对 DLPAR 操作不起限制作用,图形界面不提供对 required 和 desired 属性的控制选项,用户只能通过命令行来修改,而且只能在资源 vary off 的状态下才能进行。
  8. 虚拟 SCSI 适配器和虚拟串口适配器:在 HMC 上,用户可以在 profile 中或者通过 DLPAR 操作增加或者删除这些类型的适配器。在 IVM 上,这些类型的适配器在创建分区的时候默认生成,此后不能修改。

小结

本系列文章介绍了 IBM 集成虚拟化管理器 — IVM 上 Linux 逻辑分区的 DLPAR,本文是其中的第三部分,介绍了虚拟适配器和物理适配器的 DLPAR 操作,讨论了 required 和 desired 属性对适配器 DLPAR 操作的影响,并对比了 IVM 和 HMC 上 DLPAR 的不同之处。通过本系列文章的第二部分和本文,读者能够完整的认识理解 IVM 上三种主要资源类型 - 处理器、内存和适配器的 DLPAR 操作。

声明:本文仅代表作者个人之观点,不代表 IBM 公司之观点。

IBM 和 System p 是国际商业机器公司在美国和/或其他国家或地区的商标或注册商标。


参考资料

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多