===== AIX multipathing commands =====
Which type of disk: DS3500
[root@nim]:/root # lsdev -Cc disk | grep hdisk0
hdisk0 Available C7-T1-01 MPIO DS3500 Disk
Which driver is used ? standard AIX MPIO driver for DS3500\\
For information if you install SDDPCM, it will substitute AIX MPIO driver for SVC, DS8k (so you won't find it in the following list)
[root@nim]:/root # manage_disk_drivers -l
Device Present Driver Driver Options
2810XIV AIX_AAPCM AIX_AAPCM,AIX_non_MPIO
DS4100 AIX_APPCM AIX_APPCM,AIX_fcparray
DS4200 AIX_APPCM AIX_APPCM,AIX_fcparray
DS4300 AIX_APPCM AIX_APPCM,AIX_fcparray
DS4500 AIX_APPCM AIX_APPCM,AIX_fcparray
DS4700 AIX_APPCM AIX_APPCM,AIX_fcparray
DS4800 AIX_APPCM AIX_APPCM,AIX_fcparray
DS3950 AIX_APPCM AIX_APPCM
DS5020 AIX_APPCM AIX_APPCM
DCS3700 AIX_APPCM AIX_APPCM
DS5100/DS5300 AIX_APPCM AIX_APPCM
DS3500 AIX_APPCM AIX_APPCM
XIVCTRL MPIO_XIVCTRL MPIO_XIVCTRL,nonMPIO_XIVCTRL
2107DS8K NO_OVERRIDE NO_OVERRIDE,AIX_AAPCM,AIX_non_MPIO
IBMFlash NO_OVERRIDE NO_OVERRIDE,AIX_AAPCM,AIX_non_MPIO
IBMSVC NO_OVERRIDE NO_OVERRIDE,AIX_AAPCM,AIX_non_MPIO
For IBM DS3000, DS4000, DS5000 you can get more information about the storage:
[root@nim]:/root # /usr/bin/mpio_get_config -Av
Frame id 1:
Storage Subsystem worldwide name: 60080e500017e6dc000000004b9f3000
Controller count: 2
Partition count: 1
Partition 0:
Storage Subsystem Name = 'DS3950'
hdisk# LUN # Ownership User Label
hdisk1 5 B (preferred) arwen_bckdb
hdisk10 3 A (preferred) arwen_stg1
hdisk11 4 B (preferred) arwen_stg2
hdisk12 0 A (preferred) arwen_luitlabesx1_01
hdisk13 1 B (preferred) arwen_luitlabesx1_02
hdisk14 2 A (preferred) arwen_luitlabesx1_03
Frame id 0:
Storage Subsystem worldwide name: 60080e50002ecb2c0000000050349b11
Controller count: 2
Partition count: 1
Partition 0:
Storage Subsystem Name = 'DS3524'
hdisk# LUN # Ownership User Label
hdisk0 11 A (preferred) arwen_b2
hdisk4 3 A (preferred) arwen_db2_1
hdisk5 4 B (preferred) arwen_db2_2
hdisk6 5 A (preferred) arwen_db2_3
hdisk7 6 B (preferred) arwen_db2_4
hdisk8 7 A (preferred) arwen_db2_archlog
hdisk9 8 A (preferred) arwen_db2_log
hdisk17 13 A (preferred) arwen_db2_archlog2
hdisk18 14 B (preferred) arwen_db2_log2
More information about the paths (lsmpio available in AIX6.1TL9 and AIX7.1TL3)
[root@nim]:/root # lsmpio -l hdisk0
name path_id status path_status parent connection
hdisk0 2 Enabled Sel,Act fscsi2 20440080e52ec702,b000000000000
hdisk0 3 Enabled Pas fscsi2 20450080e52ec702,b000000000000
hdisk0 6 Enabled Act fscsi3 20340080e52ec702,b000000000000
hdisk0 7 Enabled Pas fscsi3 20350080e52ec702,b000000000000
Or:
[root@nim]:/root # lspath -l hdisk0 -F 'name path_id status path_status parent connection'
hdisk0 2 Enabled Available fscsi2 20440080e52ec702,b000000000000
hdisk0 3 Enabled Available fscsi2 20450080e52ec702,b000000000000
hdisk0 6 Enabled Available fscsi3 20340080e52ec702,b000000000000
hdisk0 7 Enabled Available fscsi3 20350080e52ec702,b000000000000
List disk settings
[root@nim]:/root # lsattr -El hdisk0
DIF_prot_type none T10 protection type False
DIF_protection no T10 protection support True
PCM PCM/friend/otherapdisk Path Control Module False
PR_key_value none Persistant Reserve Key Value True+
algorithm fail_over Algorithm True+
autorecovery no Path/Ownership Autorecovery True
clr_q no Device CLEARS its Queue on error True
cntl_delay_time 90 Controller Delay Time True
cntl_hcheck_int 10 Controller Health Check Interval True
dist_err_pcnt 0 Distributed Error Percentage True
dist_tw_width 50 Distributed Error Sample Time True
hcheck_cmd inquiry Health Check Command True+
hcheck_interval 60 Health Check Interval True+
hcheck_mode nonactive Health Check Mode True+
location Location Label True+
lun_id 0xb000000000000 Logical Unit Number ID False
lun_reset_spt yes LUN Reset Supported True
max_coalesce 0x10000 Maximum Coalesce Size True
max_retry_delay 60 Maximum Quiesce Time True
max_transfer 0x40000 Maximum TRANSFER Size True
node_name 0x20040080e52ec702 FC Node Name False
pvid 000a97d8072eb88b0000000000000000 Physical volume identifier False
q_err yes Use QERR bit True
q_type simple Queuing TYPE True
queue_depth 10 Queue DEPTH True
reassign_to 120 REASSIGN time out value True
reserve_policy single_path Reserve Policy True+
rw_timeout 30 READ/WRITE time out value True
scsi_id 0xb0000 SCSI ID False
start_timeout 60 START unit time out value True
timeout_policy retry_path Timeout Policy True+
unique_id 3E21360080E50002ECB2C00000BC85063D37E0F1746 FAStT03IBMfcp Unique device identifier False
ww_name 0x20440080e52ec702 FC World Wide Name False
List available value for a setting:
[root@nim]:/root # lsattr -Rl hdisk0 -a algorithm
fail_over
round_robin
List available value for a setting (if needed add -P for change after reboot, for static settings):
[root@nim]:/root # chdev -l hdisk0 -a algorithm=round_robin
===== SDDPCM specific commands =====
When you install SDDPCM driver, install both package : devices.fcp.disk.ibm.mpio, devices.sddpcm.71 (specific for the AIX version). Once installed, SDDPCM is the default driver, but you can switch from standard MPIO to SDDPCM using this command (a reboot is also required)
manage_disk_drivers -d device -o
Which type of disk:
[root@nim]:/root # lsdev -Cc disk
hdisk0 Available 00-00-00 SAS Disk Drive
...
hdisk8 Available 05-01-02 MPIO FC 2145
More information about the paths
[root@nim]:/root # lspath -l hdisk8 -s available -F"path_id:connection:parent:path_status:status"
0:50050768050c0b2e,6000000000000:fscsi0:Available:Enabled
1:50050768050c0b2f,6000000000000:fscsi0:Available:Enabled
2:5005076805100b2e,6000000000000:fscsi1:Available:Enabled
3:5005076805100b2f,6000000000000:fscsi1:Available:Enabled
In this sample you can see on path ID 0 the controler WWPN 50050768050c0b2e
Or:
[root@nim]:/root # lspcmcfg | grep hdisk8
hdisk8 (Avail pv TSM01_SQLvg) 600507600089002A0800000000000019 = path0 (Enabled) path1 (Enabled) path2 (Enabled) path3 (Enabled)
Or:\\
Here you can see active path (all path with * are not in use)
[root@nim]:/root # pcmpath query device 8
DEV#: 8 DEVICE NAME: hdisk8 TYPE: 2145 ALGORITHM: Load Balance
SERIAL: 600507600089002A0800000000000019
==========================================================================
Path# Adapter/Path Name State Mode Select Errors
0* fscsi0/path0 OPEN NORMAL 0 0
1 fscsi0/path1 OPEN NORMAL 9 0
2* fscsi1/path2 OPEN NORMAL 0 0
3 fscsi1/path3 OPEN NORMAL 7 0
SDDPCM discovers the preferred SVC controller, as exported by the target using in-band commands.
On SVC you can switch to the second controler in the IO group
[root@nim]:/root # pcmpath chgprefercntl device 8
[root@nim]:/root # pcmpath query device 8
DEV#: 8 DEVICE NAME: hdisk8 TYPE: 2145 ALGORITHM: Load Balance
SERIAL: 600507600089002A0800000000000019
==========================================================================
Path# Adapter/Path Name State Mode Select Errors
0 fscsi0/path0 OPEN NORMAL 3 0
1* fscsi0/path1 OPEN NORMAL 9 0
2 fscsi1/path2 OPEN NORMAL 3 0
3* fscsi1/path3 OPEN NORMAL 7 0
Check if there is a persistent reservation on a disk (lock)
[root@nim]:/root # pcmquerypr -Vh /dev/hdisk8
connection type: fscsi1
open dev: /dev/hdisk8
Attempt to read reservation key...
Attempt to read registration keys...
Read Keys parameter
Generation : 0
Additional Length: 0
resrvpolicy= no_reserve
Reserve Key provided by current host = none (hex)f9240701
Not reserved.
Statistics on FC ports
[root@nim]:/root # pcmpath query port
Active TargetPorts :4
Port# Wwpn State Mode Select Errors Paths Active
0 50050768050c0b2e NORMAL ACTIVE 100034059 10 7 7
1 50050768050c0b2f NORMAL ACTIVE 19996787 9 7 7
2 5005076805100b2e NORMAL ACTIVE 99866807 14 7 7
3 5005076805100b2f NORMAL ACTIVE 18781185 6 7 7
[root@nim]:/root # pcmpath query adapter
Total Dual Active and Active/Asymmetric Adapters : 2
Adpt# Name State Mode Select Errors Paths Active
0 fscsi0 NORMAL ACTIVE 120030846 19 14 14
1 fscsi1 NORMAL ACTIVE 118647992 20 14 14
[root@nim]:/root # pcmpath query portstats
Port #: 0
=============
Total Read Total Write Active Read Active Write Maximum
I/O: 0 0 0 0 0
SECTOR: 0 0 0 0 0
Port #: 1
=============
Total Read Total Write Active Read Active Write Maximum
I/O: 0 0 0 0 0
SECTOR: 0 0 0 0 0
Port #: 2
=============
Total Read Total Write Active Read Active Write Maximum
I/O: 0 0 0 0 0
SECTOR: 0 0 0 0 0
Port #: 3
=============
Total Read Total Write Active Read Active Write Maximum
I/O: 0 0 0 0 0
SECTOR: 0 0 0 0 0