AIX Migrating from SDDPCM to AIXPCM (the easy way)

Migrating from SDDPCM to AIXPCM (the easy way)

For a while now, IBM have diverted their efforts in storage multipathing from SDDPCM to the default AIX PCM [1]. This brings a few advantages, but specifically for me, it means the driver is now updated as part of the AIX system maintenance, and is no longer something I need to maintain separately. All significant functionality that SDDPCM provides, can now be provided by the default AIX PCM driver.

For those currently using SDDPCM, removing the driver can be somewhat complicated, and even more so when the boot LUN (rootvg LUN) is being managed by SDDPCM. Buried deep in the Multipath Subsystem Device Driver User’s Guide is a command called manage_disk_drivers. The manage_disk_drivers command can be used to display a list of storage families, and the driver that manages or supports each family. This allows us to easily (with a reboot if you boot from an SDDPCM managed device) switch the driver from SDDPCM to AIXPCM (or vice versa).

Below I detail how to switch from SDDPCM to AIXPCM when using LUN’s presented to the host via SVC.

Existing driver manging IBMSVC.

From the man page for manage_disk_drivers

If the present driver attribute is set to NO_OVERRIDE, the AIX operating system selects an alternate path control module (PCM), such as Subsystem Device Driver Path Control Module (SDDPCM), if it is installed.

# manage_disk_drivers -l
Device              Present Driver        Driver Options
2810XIV             AIX_AAPCM             AIX_AAPCM,AIX_non_MPIO
DS4100              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4200              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4300              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4500              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4700              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4800              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS3950              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS5020              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DCS3700             AIX_APPCM             AIX_APPCM
DCS3860             AIX_APPCM             AIX_APPCM
DS5100/DS5300       AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
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

Switch to using AIXPCM (and reboot).

# manage_disk_drivers -d IBMSVC -o AIX_AAPCM
 ********************** ATTENTION *************************
  For the change to take effect the system must be rebooted

After reboot, you will now see AIX_AAPCM as the present driver being used.

# manage_disk_drivers -l
Device              Present Driver        Driver Options
2810XIV             AIX_AAPCM             AIX_AAPCM,AIX_non_MPIO
DS4100              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4200              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4300              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4500              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4700              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS4800              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS3950              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DS5020              AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
DCS3700             AIX_APPCM             AIX_APPCM
DCS3860             AIX_APPCM             AIX_APPCM
DS5100/DS5300       AIX_SDDAPPCM          AIX_APPCM,AIX_SDDAPPCM
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              AIX_AAPCM             NO_OVERRIDE,AIX_AAPCM,AIX_non_MPIO

From here, you can do one of two things. Leave the SDDPCM driver installed, as this will allow for easy rollback should you experience performance issues, or other driver related problems. Or completely remove the SDDPCM driver from the LPAR.

A few things to keep in mind.

  • If you’ve modified the queue_depth attribute on the hdisk, this will be reset to the AIXPCM default of 20. There is already a good write up on best practises and considerations when working with the default AIXPCM driver [2].
  • When using SDDPCM, you would have used the pcmpath command to display and manage devices. As above, someone has already written a good write up on resiliency and problem determination, and some common lsmpio commands you’ll want to know [3]

Taking the IBM recommendations into account, I’ll set the hdisk attributes accordingly.

# lsdev -Cc disk -F name | while read line; do chdev -l ${line} -a queue_depth=32 -a reserve_policy=no_reserve -a algorithm=shortest_queue -P; done
hdisk0 changed
hdisk1 changed

Another handy command, which isn’t related to the overall driver migration, is using chdef to change the default values of the predefined attributes in ODM. Any future LUN’s presented to the host will now have the queue_depth, reserve_policy, and algorithm set to the values I want.

# chdef -a queue_depth=32 -c disk -s fcp -t mpioosdisk
queue_depth changed
# chdef -a reserve_policy=no_reserve -c disk -s fcp -t mpioosdisk
reserve_policy changed
# chdef -a algorithm=shortest_queue -c disk -s fcp -t mpioosdisk
algorithm changed

Rollback

Should you need to go back to using SDDPCM as the driver, and haven’t removed it, you can use manage_disk_drivers to flip back and reboot.

# manage_disk_drivers -d IBMSVC -o NO_OVERRIDE
 ********************** ATTENTION *************************
 For the change to take effect the system must be rebooted

[1] – https://www-01.ibm.com/support/docview.wss?uid=ssg1S1010218
[2] – https://www.ibm.com/developerworks/aix/library/au-aix-mpio/index.html
[3] – https://www.ibm.com/developerworks/aix/library/au-aix-multipath-io-mpio/index.html

Multipath Recommendations
The MPIO Policy defines how the host distributes IOs across the available paths to the storage. The Round Robin (RR)
policy distributes IOs evenly across all Active/Optimized paths. A newer MPIO policy, shortest_queue, is similar to round
robin in that IOs are distributed across all available Active/Optimized paths, however it provides some additional
benefits. The shortest_queue policy will bias IOs towards paths that are servicing IO quicker (paths with shorter
queues). In the event that one path becomes intermittently disruptive or is experiencing higher latency,
shortest_queue will prevent the utilization of that path reducing the effect of the problem path.
The shortest_queue option was added in AIX version 6.1, Technology Level 9, and in AIX version 7.1, Technology Level
3.
Our ODM defaults to "round-robin", so if you would like to take advantage of the shortest-queue setting, you will need to
run the following command:
chdev -l hdiskX -a algorithm=shortest_queue
Keep in mind that you will need to manually make this change anytime you overwrite the ODM (i.e. upgrading the
ODM).

Scanning for new LUNs on AIX
On AIX 7, use the command cfgmgr without arguments to rescan the HBA for new LUNs.
# cfgmgr
See which Pure disks are visible to the system:
root@hclaix:~# lsdev -c disk | grep PURE
hdisk2 Defined 03-00-01 PURE MPIO Drive (Fibre)
hdisk3 Defined 03-00-01 PURE MPIO Drive (Fibre)
hdisk4 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk5 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk6 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk7 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk8 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk9 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk10 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk11 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk12 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk13 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk14 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk15 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk16 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk17 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk18 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk19 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk20 Available 03-00-01 PURE MPIO Drive (Fibre)
©2018 Copyright Pure Storage. All rights reserved.
3
hdisk21 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk22 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk23 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk24 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk25 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk26 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk27 Available 03-00-01 PURE MPIO Drive (Fibre)
hdisk28 Available 03-00-01 PURE MPIO Drive (Fibre)
Use "odmget" to correlate the serial number to the volume on Pure:
root@hclaix:~# odmget -q "name=hdisk26 and attribute=unique_id" CuAt
CuAt:
name = "hdisk26"
attribute = "unique_id"
value = "3A213624A937018563310400CACD7000115F10AFlashArray04PUREfcp"
type = "R"
generic = ""
rep = "nl"
nls_index = 79
Run the following on the Pure Storage FlashArray to verify the serial number matches:
$ purevol list
Name Size Source Created Serial
support_test 100G - 2014-03-05 11:43:52 PST 18563310400CACD7000115F1
Configure Pure LUN's with AIX
Fast Fail and Dynamic Tracking
Fast Fail and Dynamic Tracking should be enabled for any HBA port zoned to a Pure FlashArray port.
# chdev -l fscsi0 -a fc_err_recov=fast_fail -P
fscsi0 changed
# chdev -l fscsi0 -a dyntrk=yes -P
fscsi0 changed
You can confirm these settings with lsattr:
# lsattr -l fscsi0 -E
attach switch How this adapter is CONNECTED False
dyntrk yes Dynamic Tracking of FC Devices True
fc_err_recov fast_fail FC Fabric Event Error RECOVERY Policy True
scsi_id 0x420d00 Adapter SCSI ID False
sw_fc_class 3 FC Class for Fabric True
©2018 Copyright Pure Storage. All rights reserved.
4
HBA max_xfer_size
Pure Storage supports a maximum read and write transfer size of 4MB. The Pure AIX ODM definition ensures hdisk
device max_xfer_size is configured at 4MB (0x400000).
It should be noted that the HBA max_xfer_size defaults to 1MB (0x100000) and will limit transfers larger than 1MB.
However, for optimal performance, you should ensure that the max_xfer_size for each HBA zoned to a Pure port is set
to 4MB, if supported by the HBA.
In the example below, we set the max_xfer_size to the AIX maximum of 4MB for the fcs0 device. Please repeat this for
all devices.
# chdev -l fcs0 -a max_xfer_size=0x400000 -P
fcs0 changed
You can run the following command to verify the HBA max_xfer_size:
/# lsattr -l fcs0 -E
DIF_enabled no DIF (T10 protection) enabled True
bus_intr_lvl Bus interrupt level False
bus_io_addr 0xff800 Bus I/O address False
bus_mem_addr 0xffe76000 Bus memory address False
bus_mem_addr2 0xffe78000 Bus memory address False
init_link auto INIT Link flags False
intr_msi_1 90645 Bus interrupt level False
intr_priority 3 Interrupt priority False
lg_term_dma 0x800000 Long term DMA True
max_xfer_size 0x400000 Maximum Transfer Size True
num_cmd_elems 500 Maximum number of COMMANDS to queue to the adapter True
pref_alpa 0x1 Preferred AL_PA True
sw_fc_class 2 FC Class for Fabric True
tme no Target Mode Enabled True
LUN Connectivity and MPIO Control
After running cfmgr, the following command can be used to validate LUN connectivity and MPIO control:
# lsdev -Cc disk
hdisk0 Available 00-08-00 SAS Disk Drive
hdisk1 Available 00-08-00 SAS Disk Drive
hdisk2 Available 03-00-01 PURE MPIO Drive (Fibre)
root@hclaix:/# lspath -l hdisk2 -F "status:name:path_id:parent:connection"
Please consult with IBM support before changing this setting, as changing this setting may break boot from
SAN if the HBA or system does not support the 4MB (0x400000) setting.
More information can be found here: AIX and VIOS Disk And Fibre Channel Adapter Queue Tuning

©2018 Copyright Pure Storage. All rights reserved.
5
Enabled:hdisk2:0:fscsi0:21000024ff391bbf,100000000<wbr/>0000
Enabled:hdisk2:1:fscsi0:21000024ff3855bd,100000000<wbr/>0000
Enabled:hdisk2:2:fscsi1:21000024ff385093,100000000<wbr/>0000
Enabled:hdisk2:3:fscsi1:21000024ff385009,100000000<wbr/>0000
Enabled:hdisk2:4:fscsi2:21000024ff391bbe,100000000<wbr/>0000
Enabled:hdisk2:5:fscsi2:21000024ff3855bc,100000000<wbr/>0000
Enabled:hdisk2:6:fscsi3:21000024ff385092,100000000<wbr/>0000
Enabled:hdisk2:7:fscsi3:21000024ff385008,100000000<wbr/>0000
The command output from the above displays the following:
• 8 logical paths for hdisk2 (this AIX system has 4 dual-port HBAs)
• The connection is the array target port wwpn and host LUN ID
• Example: 21000024ff391bbf,1000000000000 (host LUN ID = 1 as set in GUI/CLI)
Run the following command to check disk attributes set by the Pure ODM definition:
# lsattr -El hdisk2
PCM PCM/friend/Pure Path Control Module False
PR_key_value none Reserve Key True
algorithm round_robin Algorithm True
clr_q no Device CLEARS its Queue on error True
hcheck_cmd inquiry Health Check Command True
hcheck_interval 10 Health Check Interval True
hcheck_mode nonactive Health Check Mode True
location Location Label True
lun_id 0x1000000000000 Logical Unit Number ID False
lun_reset_spt yes SCSI LUN reset True
max_transfer 0x400000 Maximum Transfer Size True
node_name 0x20000024ff391bbf Node Name False
pvid none Physical Volume ID False
q_err yes Use QERR bit False
q_type simple Queue TYPE True
queue_depth* 256 Queue DEPTH True
reassign_to 120 REASSIGN time out True
reserve_policy no_reserve Reserve Policy True
rw_timeout 60 READ/WRITE time out True
scsi_id 0x10f00 SCSI ID False
start_timeout 60 START UNIT time out True
ww_name 0x21000024ff391bbf FC World Wide Name False
* NOTE: The 256 queue depth setting in the ODM should be treated as a possible starting point, and may need to be
adjusted based on host environment variables.

 

0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
AIX Errpt - Diag - Alog
Viewed 3596 times since Wed, Mar 20, 2019
Create jfs2 logical volume on AIX
Viewed 4774 times since Thu, Feb 21, 2019
AIX - How to get Memory infomation
Viewed 9996 times since Fri, Jun 8, 2018
AIX: Script to create a file with commands to remove missing & failed paths
Viewed 3168 times since Tue, Jun 12, 2018
AIX 6/7 Script to create a file with commands to remove missing and failed paths
Viewed 3354 times since Tue, Jun 14, 2022
How to Configure Sendmail not to Look up MX records
Viewed 3589 times since Fri, Apr 19, 2019
Using the AIX splitvg command
Viewed 4203 times since Mon, Jun 3, 2019
Aix: How to assign a specific PVID
Viewed 7261 times since Fri, Feb 1, 2019
AIX Undocumented AIX command lquerypv
Viewed 3561 times since Tue, Jul 17, 2018
ILMT Procedure - ILMT / TAD4D / SUA / BFI
Viewed 10151 times since Fri, Jul 5, 2019