動態邏輯分區(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 的圖形操作界面上也無法找到與這兩種虛擬適配器相關的設置界面,因此也就無法執行相應的操作。
$ 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 ~~~ 截斷無關部分 ~~~ |
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 操作。
$ 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 操作。
清單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所示)。該頁面列出了伺服器上所有的物理適配器,包括適配器的物理位置碼,適配器中所掛接的各種設備以及分配的分區等信息。
在一個出廠設置的 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 操作。
$ 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 $ |
圖形界面操作方式
從 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)。
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 概念相似,命令行界面也類似,但是它們的設計目標不同,圖形操作界面也風格迥異,兩者之間存在不少差異。
小結
本系列文章介紹了 IBM 集成虛擬化管理器 — IVM 上 Linux 邏輯分區的 DLPAR,本文是其中的第三部分,介紹了虛擬適配器和物理適配器的 DLPAR 操作,討論了 required 和 desired 屬性對適配器 DLPAR 操作的影響,並對比了 IVM 和 HMC 上 DLPAR 的不同之處。通過本系列文章的第二部分和本文,讀者能夠完整的認識理解 IVM 上三種主要資源類型 - 處理器、內存和適配器的 DLPAR 操作。(責任編輯:A6)
[火星人 ] 在 IBM 集成虛擬化管理器上進行 Linux 分區的 DLPAR 操作,第 3 部分已經有963次圍觀