This article goes over our recommended settings for AIX on Pure Storage. AIX has been tested to work well with logical partitions (LPAR) and the Pure Storage array.
Installing the Pure ODM File
The AIX ODM definition is attached. Please install this on all AIX initiators connecting to Pure Storage. This ODM was created by Pure Storage using IBM's supported method of ODM creation to comply with their supported standards. You will want to load the AIX ODM fileset into the AIX kernel. This can be performed manually or the System Manager Interface Tool (SMIT) can be used.
It is Best Practice to load the Pure ODM before attaching any PURE LUN's. If you do not, you may need to manually clean up the "Other FC Drive" devices that were created before loading the ODM. After installing the ODM you will be prompted to reboot.
We have two ODM definition files
Version 184.108.40.206 - Updated July 10, 2014
Version 220.127.116.11 - Updated August 8, 2014
- Zone only one Pure controller port to one HBA port on AIX.
- You will only have one hdisk to install on to.
- Install AIX on hdisk
- You will see:
-bash-4.3# lsdev -Cc disk hdisk0 Available 00-00-00 SAS Disk Drive hdisk1 Available 00-00-00 SAS Disk Drive hdisk2 Available 05-00-01 Other FC SCSI Disk Drive
- You can then install the PURE ODM definition.
- Reboot, as prompted by the tool.
- PURE will have replaced the Other FC drive
-bash-4.3# lsdev -Cc disk hdisk0 Available 00-00-00 SAS Disk Drive hdisk1 Available 00-00-00 SAS Disk Drive hdisk2 Available 05-00-01 PURE MPIO Drive (Fibre)
- It is possible a SCSI Reservation still exists on the Pure array. Versions prior to AIX 6.1TL7 will need to clear these reservations using their preferred method.
AIX 6.1TL7+ ONLY: If you are running this version, run the following to clear the reservation from AIX before proceeding:
bash-4.3# devrsrv -f -c release -l hdisk2 Device Reservation State Information ================================================== Device Name : hdisk2 Device Open On Current Host? : YES ODM Reservation Policy : NO RESERVE Device Reservation State : NO RESERVE Device is currently Open on this host by a process. Do you want to continue y/n:y The command was successful.
- You can now continue adding your subsequent zoned paths and LUN's.
Checking the Current ODM Version
You can run the current command to check which version of the Pure ODM file you are currently running:
# lslpp -l | grep -i pure devices.fcp.disk.pure.flasharray.mpio.rte 18.104.22.168 COMMITTED AIX MPIO Support for PURE
Upgrading the ODM
In order to upgrade to the latest version of the ODM you will need to first remove the old one. This will require a reboot on the initiator, and the steps are as follows:
- Remove the current ODM file.
- Reboot the host.
- Install the new ODM file
- Reboot the host.
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 shorest-queue option is available as of the following AIX versions:
- AIX Version 7.1 with Service Pack 3, or later
- AIX Version 6.1 with the 6100-06 Technology Level, and Service Pack 5, or later
- AIX Version 6.1 with the 6100-05 Technology Level, and Service Pack 6, or later
- AIX Version 6.1 with the 6100-04 Technology Level, and Service Pack 10, or later
- AIX Version 5.3 with the 5300-12 Technology Level and Service Pack 4, or later
- AIX Version 5.3 with the 5300-11 Technology Level and Service Pack 7, or later
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) 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
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 xoned to a Pure port is set to 4MB, if supported by the HBA.
Please consult with IBM support before changing this setting. More information can be found here: http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/TD105745
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" 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)
- 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.
If you want to set the reserve_policy to "PR_shared" or "PR_exclusive" you will first need to set a PR_key_value. What you set it to will need to be unique, you can set this value to "0x1" for example.
NOTE: Our Purity 2.x implementation of AIX support does not include auto-contingency allegiance (ACA) that is required by AIX. Lacking this support, AIX will not allow a queue depth greater than 1 for Pure LUN's. ACA is supported starting in Purity 3.x.