在 IBM 集成虛擬化管理器上進行 Linux 分區的 DLPAR 操作,第 3 部分

火星人 @ 2014-03-12 , reply:0


  
動態邏輯分區(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 操作

清單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 操作


清單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 操作。(責任編輯:A6)






[火星人 via ] 在 IBM 集成虛擬化管理器上進行 Linux 分區的 DLPAR 操作,第 3 部分已經有190次圍觀

http://www.coctec.com/docs/linux/show-post-68957.html