dropdown menu

SDD (subsystem device driver):    
It designed to support the multipath configuration in the ESS.
The software used to balance ESS I/O traffic across all adapters. It provides multiple access to data from the host.
when using sdd cfgmgr is run 3 times (cfgmgr -l fcs0, cfgmgr -l fcs1, cfgmgr (the third one builds the vpaths))   

3 policies exist for load balancing:
    -default: selecting the path with the least number of current I/O operations
    -round robin: choosing the path, that was not used for the last operation (alternating if 2 pathes exist)
    -failover: all I/O sent ove the most preferred path, until a failure is detected.

SDD has a server daemon running in the background: lssrc/stopsrc/startsrc -s sddsrv   
If sddsrv is stopped, the feature that automatically recovers failed paths disabled.

A logical disk defined in ESS and recognized by AIX. AIX uses vpath instead of hdisk as a unit of physical storage.
    root@aix40: /dev # lsattr -El vpath0
    active_hdisk  hdisk20/00527461/fscsi1          Active hdisk                 False
    active_hdisk  hdisk4/00527461/fscsi0           Active hdisk                 False
    policy        df                               Scheduling Policy            True    <-path selection policy
    pvid          0056db9a77baebb90000000000000000 Physical volume identifier   False
    qdepth_enable yes                              Queue Depth Control          True
    serial_number 00527461                         LUN serial number            False
    unique_id     1D080052746107210580003IBMfcp    Device Unique Identification False
    fo: failover only - all I/O operations sent to the same paths until the path fails
    lb: load balancing - the path is chosen by the number of I/O operations currently in process
    lbs: load balancing sequential - same as before with optimization for sequential I/O
    rr: round ropbin - path is chosen at random from the not used paths
    rrs: round robin sequential - same as before with optimization for sequential I/O
    df: default - the default policy is load balancing

    datapath set device N policy        change the SDD path selection policy dynamically

DPO (Data Path Optimizer):
it is a pseudo device (lsdev | grep dpo), which is the pseudo parent of the vpaths

    root@aix40: / # lsattr -El dpo
    SDD_maxlun      1200 Maximum LUNS allowed for SDD                  False
    persistent_resv yes  Subsystem Supports Persistent Reserve Command False


software requirements for SDD:
-host attachment for SDD (ibm2105.rte, devices.fcp.disk.ibm.rte) - this is the ODM extension
The host attachments for SDD add 2105 (ESS)/2145 (SVC)/1750 (DS6000)/2107 (DS8000) device information to allow AIX to properly configure 2105/2145/1750/2107 hdisks.
The 2105/2145/1750/2107 device information allows AIX to:
        - Identify the hdisk(s) as a 2105/2145/1750/2107 hdisk.
        - Set default hdisk attributes such as queue_depth and timeout values.
        - Indicate to the configure method to configure 2105/2145/1750/2107 hdisk as non-MPIO-capable devices
    ibm2105.rte: for 2105 devices
    devices.fcp.disk.ibm.rte: for DS8000, DS6000 and SAN Volume Controller)

-devices.sdd.53.rte - this is the driver (sdd)
    it provides the multipath configuration environment support


addpaths                  dynamically adds more paths to SDD vpath devices (before addpaths, run cfgmgr)
                          (running cfgmgr alone does not add new paths to SDD vpath devices)
cfgdpo                    configures dpo
cfgvpath                  configures vpaths
cfallvpath                configures dpo+vpaths
dpovgfix <vgname>         fixes a vg that has mixed vpath and hdisk physical volumes       
extenfvg4vp               this can be used insteadof extendvg (it will move pvid from hdisk to vpath)

datapath query version    shows sdd version
datapath query essmap     shows vpaths and their hdisks in a list
datapath query portmap    shows vpaths and ports
datapath query adapter    information about the adapters
        -Normal           adapter is in use.
        -Degraded         one or more paths are not functioning.
        -Failed           the adapter is no longer being used by SDD.

datapath query device     information about the devices 8datapath query device 0)
        -Open             path is in use
        -Close            path is not being used
        -Failed           due to errors path has been removed from service
        -Close_Failed     path was detected to be broken and failed to open when the device was opened
        -Invalid          path is failed to open, but the MPIO device is opened
datapath remove device X path Y   removes path# Y from device# X (datapath query device, will show X and Y)
datapath set device N policy      change the SDD path selection policy dynamically
datapath set adapter 1 offline

lsvpcfg                           list vpaths and their hdisks
lsvp -a                           displays vpath, vg, disk informations

lquerypr                          reads and releases the persistent reservation key
lquerypr -h/dev/vpath30           queries the persistent resrevation on the device (0:if it is reserved by current host, 1: if another host)
lquerypr -vh/dev/vpath30          query and display the persistent reservation on a device
lquerypr -rh/dev/vpath30          release the persisten reservation if the device is reserved by the current host
                                  (0: if the command succeeds or not reserved, 2: if the command fails)
lquerypr -ch/dev/vpath30          reset any persistent reserve and clear all reservation key registrations
lquerypr -ph/dev/vpath30          remove the persisten reservation if the device is reserved by another host

Removing SDD (after install a new one):
-umount fs on ESS
(if HACMP and RG is online on other host: vp2hd <vgname>) <--it converts vpaths to hdisks)
-rmdev -dl dpo -R                                         <--removes all the SDD vpath devices
-stopsrc -s sddsrv                                        <--stops SDD server
-if needed: rmdev -dl hdiskX                              <--removes hdisks
(lsdev -C -t 2105* -F name | xargs -n1 rmdev -dl)

-smitty remove -- devices.sdd.52.rte
-smitty install -- devices.sdd.53.rte (/mnt/Storage-Treiber/ESS/SDD-1.7)

Removing SDD Host Attachment:
-lsdev -C -t 2105* -F name | xargs -n1 rmdev -dl          <--removes hdisk devices
-smitty remove -- ibm2105.rte (devices.fcp.disk.ibm)

Change adapter settings (Un/re-configure paths):

-datapath set adapter 1 offline
-datapath remove adapter 1
-rmdev -Rl fcs0
(if needed: for i in `lsdev -Cc disk | grep -i defined | awk '{ print $1 }'`; do rmdev -Rdl $i; done)
-chdev -l fscsi0 -a dyntrk=yes -a fc_err_recov=fast_fail
-chdev -l fcs0 -a init_link=pt2pt
-cfgmgr; addpaths

Reconfigure vpaths:
-datapath remove device 2 path 0
-datapath remove device 1 path 0
-datapath remove device 0 path 0
-cfgmgr; addpaths
-rmdev -Rdl vpath0

Can't give pvid for a vpath:
root@aix40: / # chdev -l vpath6 -a pv=yes
Method error (/usr/lib/methods/chgvpath):
        0514-047 Cannot access a device.


# lquerypr -Vh /dev/vpath6          <--it will show the host key
# lquerypr -Vph /dev/vpath6         <--it will clear the reservation lock
# lquerypr -Vh /dev/vpath6          <--checking again will show it is OK now


  1. Could you please explain briefly about vpath and what is the difference between MPIO and vpath.


    1. Hi Siva,

      If you check a little above on this page, you will find a brief description about vpath.
      MPIO description can be found at my blog: Main Menu -> Storage -> MPIO