wiki.getshifting.com

--- Sjoerd Hooft's InFormation Technology ---

User Tools

Site Tools


aixstorage

AIX Storage

Summary: ALthough AIX is by now on version 7.3 I find these old pages so fascinating I decided to keep them. On this page I'll show you how to configure and work with storage on AIX. This page is for AIX 5.3 and AIX 6.1.
Date: Between 2010-2013
Refactor: 21 December 2024: Checked formatting. Translated from Dutch to English.

Overzicht AIX Storage

aixstorage.jpg


  1. Volume Group (VG)
    • A collection of disk accessible by one name.
  2. Volume Group Description Area (VGDA)
    • On each PV there is a minimum of 1 VGDA in which the data is kept of the entire VG.
  3. Physical Volume (PV)
    • A physical drive, can only be in one VG.
  4. Physical Partition (PP)
    • Each physical drive is devided into a number of PPs. All PPs in a VG have the same size.
  5. Logical Partition (LP)
    • Has the sime size as a PP, and each LP has at least one mapping to a PP, but there could be more (for example, with a mirror)
  6. Logical Volume (LV)
    • A mapping of a number of PPs. A filesystem is defined on a LV.

Other terminilogy

Filesystem: a directory stucture to save files in. The root of a filesystem always has the inode number 2 (for example /home is the root of hd1). Inodes are kept per filesystem. If you remove a filesystem or create a new one, the corresponding LV is also removed or created. If you remove or create a LV, you still have to remove or create the filesystem manually. Filesystems are kept in /etc/filesystems. Filesystems in this file can be mounted by giving the mountpoint. The mountpoint is also the name you refer to when you talk about a filesystem.

Default filesystems: During the installation of AIX, a default VG is created with the following filesystems:

  1. / (root) = /dev/hd4
    • Contains the OS files and the files needed for booting
  2. /usr = /dev/hd2
    • Commands, libraries, and application files.
  3. /var = /dev/hd9var
    • Spool, log, and mail files. Content is subject to frequent changes.
  4. /home = /dev/hd1
    • Home directories of users
  5. /tmp = /dev/hd3
  6. /opt = /dev/hd10opt
    • Intended for freeware and 3rd party software
  7. /proc = /proc
    • Special pseudo filesystem loaded into memory for threads and lightweight processes.

JFS: Journaled FileSystem, the standard filesystem for AIX. For more information, refer to the excellent page on Wikipedia: http://en.wikipedia.org/wiki/JFS2.

Inode extra info: The following story is a standard story for inodes under Unix and Linux. Small differences may occur per distribution: Understanding UNIX / Linux filesystem Inodes The inode (index node) is a fundamental concept in the Linux filesystem. Each object in the filesystem is represented by an inode. But what are the objects? Let us try to understand it in simple words. Each and every file under Linux (and UNIX) has the following attributes:

  • File type (executable, block special etc)
  • Permissions (read, write etc)
  • Owner
  • Group
  • File Size
  • File access, change and modification time (remember UNIX or Linux never stores file creation time, this is a favorite question asked in UNIX/Linux sys admin job interview)
  • File deletion time
  • Number of links (soft/hard)
  • Extended attribute such as append only or no one can delete file including root user (immutability)
  • Access Control List (ACLs)

All the above information is stored in an inode. In short, the inode identifies the file and its attributes (as above). Each inode is identified by a unique inode number within the file system. Inode is also known as index number.

How do I see file inode number?
> ls -i /etc/passwd
You can also use the stat command to find out the inode number and its attributes:
> stat /etc/passwd
Find and remove a file using the find command (necessary with special characters), type the command as follows:
> find . -inum 782263 -exec rm -i {} \;

What is a directory then: A directory is nothing more than a table with the names of the files it contains and a reference to the inode number of these files. If you do not have execute rights on a directory, you cannot make the jump to the inode table and retrieve the extra info of the files. To delete a file, you only need read and execute rights on the directory, no rights on the file itself.

Commands

CommandoUitleg
lsvg List all volume groups
lsvg -o List all active volume groups
lsvg rootvg List info over rootvg
lsvg -p rootvg List PVs in de volume group rootvg
lsvg -l rootvg List LVs in de volume group rootvg
mkvg Create a volume group
extendvg Extend a volume group
reducevg Shrink a volume group
varyoffvg vg1Temporary turn off the volume group vg1
varyonvg vg1Turn on the volume group vg1
lsvg | lsvg -i Provides information on all volume groups
lsvg | lsvg -il Lists all logical volumes of all volume groups
lsvg | lsvg -ip Lists all physical volumes of all volume groups
df Display filesystems
df -m Display filesystems in MB
lsfs List all filesystems
du /home | sort -r -n Lists all folder's sizes, biggest one first
ls -l | sort +4b -nr Lists the biggest file in the current directory
defragfsDefrags the filesystem
fsckChecks the filesysteem
mount /tmp Mounts the filesysteem /tmp (/dev/hd3)
lspv List all physical volumes
lspv hdisk0 List info on hdisk0
lspv -l hdisk0 List all LVs on hdisk0 and their spreading on the disk
lspv -p hdisk0 List all PPs on hdisk0 and which LV is hosted on it
lslv hd1 List info on the logical volume hd1
lslv -l hd1List the policy compliance percentage of the LV
lslv -m hd1List the physical spread of the LV over the available disks
mklv Create a logical volume
extendlv hd1 2Extend the logical volume hd1 with 2 PPs
mklvcopy hd1 2 hdisk1Create a total of 2 copies of the logical volume hd1 and put the new copy on hdisk1
chlvChange a logical volume
rmlv hd1Remove the logical volume hd1
syncvg -l hd1 Sync the LV with its mirror (-p for PV and -v for VG)

Tasks

Remove a volume group and it's disks

bash-3.00# lsvg -p tempvg
tempvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk2            active            799         166         160..00..00..00..06

bash-3.00# reducevg tempvg hdisk2
0516-016 ldeletepv: Cannot delete physical volume with allocated
        partitions. Use either migratepv to move the partitions or
        reducevg with the -d option to delete the partitions.
0516-884 reducevg: Unable to remove physical volume hdisk2.

bash-3.00# reducevg -d tempvg hdisk2
0516-914 rmlv: Warning, all data belonging to logical volume
        fslv04 on physical volume hdisk2 will be destroyed.
rmlv: Do you wish to continue? y(es) n(o)?
y
rmlv: Logical volume fslv04 is removed.
ldeletepv: Volume Group deleted since it contains no physical volumes.

bash-3.00# rmdev -d -l hdisk2
hdisk2 deleted
  • rmdev
    • -d ; also remove the disk from the device database
    • -l ; the logical device you want to remove

Check the size of a physical volume

Option 1:

bash-3.00# lspv hdisk1
PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     sanvg
PV IDENTIFIER:      0001320a6935cee8 VG IDENTIFIER     0001320a0000d4000000011b6935e652
PV STATE:           active
STALE PARTITIONS:   0                        ALLOCATABLE:      yes
PP SIZE:            128 megabyte(s)          LOGICAL VOLUMES:  5
TOTAL PPs:          702 (89856 megabytes)    VG DESCRIPTORS:   2
FREE PPs:           4 (512 megabytes)        HOT SPARE:        no
USED PPs:           698 (89344 megabytes)    MAX REQUEST:      256 kilobytes
FREE DISTRIBUTION:  00..00..00..00..04
USED DISTRIBUTION:  141..140..140..140..137
The line TOTAL PPs provides the size of the disk in MBs

Option 2:

bash-3.00# bootinfo -s hdisk1
150528

As you can see, there is a difference between the two disks. The command below looks at the actual physical size of the disk, while the command above looks at the size of the disk as defined in the device database. To expand this, you need to perform the following task.

Increase available disk space of a SAN LUN

Info: In case you have a SAN volume, you can increase the size of the LUN on the SAN. With the following steps, you can then increase the size of the physical disk.

Increase physical disk:

# varyoffvg sanvg
# varyonvg sanvg
0516-1434 varyonvg: Following physical volumes appear to be grown in size.
        Run chvg command to activate the new space.
        hdisk1
# chvg -g sanvg
0516-1164 chvg: Volume group sanvg changed.  With given characteristics sanvg
        can include upto 16 physical volumes with 2032 physical partitions each.

You've now added the extra space from the SAN to thye hdisk.

Note: This is not supported for the rootvg!!!

Extend logical volume

# lsvg sanvg
VOLUME GROUP:       sanvg                    VG IDENTIFIER:  0001320a0000d4000000011b6935e652
VG STATE:           active                   PP SIZE:        128 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      1175 (150400 megabytes)
MAX LVs:            256                      FREE PPs:       473 (60544 megabytes)
LVs:                5                        USED PPs:       702 (89856 megabytes)
OPEN LVs:           2                        QUORUM:         2
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     32512
MAX PPs per PV:     2032                     MAX PVs:        16
LTG size (Dynamic): 256 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable

# lslv fslv03
LOGICAL VOLUME:     fslv03                 VOLUME GROUP:   sanvg
LV IDENTIFIER:      0001320a0000d4000000011b6935e652.4 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               jfs2                   WRITE VERIFY:   off
MAX LPs:            512                    PP SIZE:        128 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                476                    PPs:            476
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    32
MOUNT POINT:        /var/data              LABEL:          /var/data
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO

As you can see, you have 473 PP's available in the sanvg. You want to add these to the logical volume fslv03. This one can only have 512 PP's while it already has 476. The command below tells you this:

# chfs -a size=121472M /var/data
0516-787 extendlv: Maximum allocation for logical volume fslv03
        is 512.

You need to adjust the logical volume first:

# chlv -x 949 fslv03
# lslv fslv03
LOGICAL VOLUME:     fslv03                 VOLUME GROUP:   sanvg
LV IDENTIFIER:      0001320a0000d4000000011b6935e652.4 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               jfs2                   WRITE VERIFY:   off
MAX LPs:            949                    PP SIZE:        128 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                949                    PPs:            949
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       minimum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    32
MOUNT POINT:        /var/data              LABEL:          /var/data
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO

You can now extend the logical volume:

# chfs -a size=121472M /var/data
Filesystem size changed to 248774656

Create a new filesystem from a physical disk

Check the disks:

bash-3.00# lspv
hdisk0          0001320a5613aa33                    rootvg          active
hdisk1          0001320a6935cee8                    sanvg           active
hdisk2          none                                None

First create a new volume group:

bash-3.00# mkvg -y testvg hdisk2
0516-1254 mkvg: Changing the PVID in the ODM.
testvg

The disk now has a new PVID:

bash-3.00# lspv
hdisk0          0001320a5613aa33                    rootvg          active
hdisk1          0001320a6935cee8                    sanvg           active
hdisk2          0001320a37f02546                    testvg          active

Now we'll add a filesystem using smitty:

  • Smitty
    • System Storage Management (Physical & Logical Storage)
      • File Systems
        • Add / Change / Show / Delete File Systems
          • Enhanced Journaled File Systems
            • Add an Enhanced Journaled File System
            • Selecteer de juiste vg om een filesystem in te maken, in dit geval testvg, en vul de juiste gegevens in:
aixstorage-mkfs.jpg


Now you only need to mount it:

mount /iscsifc

Change mount properties of a filesystem

The properties of filesystems are kept in AIX in the file /etc/filesystems:

bash-3.00# cat /etc/filesystems
* @(#)filesystems @(#)29        1.22  src/bos/etc/filesystems/filesystems, cmdfs, bos530 9/8/00 13:57:45
* IBM_PROLOG_BEGIN_TAG
* This is an automatically generated prolog.
*
* bos530 src/bos/etc/filesystems/filesystems 1.22
*
* Licensed Materials - Property of IBM
*
* (C) COPYRIGHT International Business Machines Corp. 1985,1993
* All Rights Reserved
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
* IBM_PROLOG_END_TAG
*
* COMPONENT_NAME: CMDFS
*
* FUNCTIONS: none
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1985, 1993
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*
*
*
* This version of /etc/filesystems assumes that only the root file system
* is created and ready.  As new file systems are added, change the check,
* mount, free, log, vol and vfs entries for the appropriate stanza.
*

/:
        dev             = /dev/hd4
        vfs             = jfs2
        log             = /dev/hd8
        mount           = automatic
        check           = false
        type            = bootfs
        vol             = root
        free            = true

/home:
        dev             = /dev/hd1
        vfs             = jfs2
        log             = /dev/hd8
        mount           = true
        check           = true
        vol             = /home
        free            = false

/usr:
        dev             = /dev/hd2
        vfs             = jfs2
        log             = /dev/hd8
        mount           = automatic
        check           = false
        type            = bootfs
        vol             = /usr
        free            = false

/var:
        dev             = /dev/hd9var
        vfs             = jfs2
        log             = /dev/hd8
        mount           = automatic
        check           = false
        type            = bootfs
        vol             = /var
        free            = false

/tmp:
        dev             = /dev/hd3
        vfs             = jfs2
        log             = /dev/hd8
        mount           = automatic
        check           = false
        vol             = /tmp
        free            = false

/proc:
        dev       = /proc
        vol       = "/proc"
        mount     = true
        check     = false
        free      = false
        vfs       = procfs


/setup:
        dev             = /dev/fslv00
        vfs             = jfs2
        log             = /dev/hd8
        mount           = true
        account         = false


/opt:
        dev             = /dev/fslv01
        vfs             = jfs2
        log             = /dev/loglv00
        mount           = true
        check           = false
        options         = rw
        account         = false

/var/log:
        dev             = /dev/fslv02
        vfs             = jfs2
        log             = /dev/loglv00
        mount           = true
        check           = false
        options         = rw
        account         = false

/var/data:
        dev             = /dev/fslv03
        vfs             = jfs2
        log             = /dev/loglv00
        mount           = true
        check           = false
        options         = rw
        account         = false

This file is just a text file and can be edited as such. But changes made this way will not be saved if you export and import the volume group where the filesystems are in. If you want to make changes that will be saved you can do this with smitty or the “chfs” command. Below are a few options:

Change properties:

chfs -p rw /opt
chfs -p rw /var/data
chfs -p rw /var/log

Set automount:

chfs -A yes /opt
chfs -A yes /var/data
chfs -A yes /var/log

Change mountpoint

bash-3.2# chfs -m /var/data1 /var/data
bash-3.2# chfs -m /var/backup1 /var/backup
bash-3.2# chfs -m /var/dump1 /var/dump
bash-3.2# chfs -m /var/log1 /var/log

Change iSCSI disk to FC disk

This is how to change a connected iSCSI disk to FibreChannel. Of course the SAN will have to be able to do this. First you have to remove the volume group from the server, and after changing the access protocol you can import the volume group again.

  1. Umount /mountpoint
  2. Varyoffvg testvg
  3. exportvg testvg
  4. rmdev -dl hdisk2

Change the initiator group in the SAN from iSCSI to FC and:

  1. cfgmgr
  2. importvg -y testvg hdisk2
  3. varyonvg testvg
  4. mount /mountpoint

Mount an ISO

Because there is no direct way of mounting an ISO on AIX we'll have to use a workaround.

Create a filesystem

Make sure you have a volume group with enough free space. In this example that's rootvg:

bash-3.2# lsvg -p rootvg
rootvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk0            active            638         140         12..00..00..00..128

bash-3.2# lsvg rootvg
VOLUME GROUP:       rootvg                   VG IDENTIFIER:  000153ba0000d4000000011ffa8be3fb
VG STATE:           active                   PP SIZE:        32 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      638 (20416 megabytes)
MAX LVs:            256                      FREE PPs:       140 (4480 megabytes)
LVs:                10                       USED PPs:       498 (15936 megabytes)
OPEN LVs:           9                        QUORUM:         2
TOTAL PVs:          1                        VG DESCRIPTORS: 2
STALE PVs:          0                        STALE PPs:      0
ACTIVE PVs:         1                        AUTO ON:        yes
MAX PPs per VG:     32512
MAX PPs per PV:     1016                     MAX PVs:        32
LTG size (Dynamic): 256 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:          no                       BB POLICY:      relocatable

As you can see the rootvg consists of one physical disk with a total of 140 free PPs, and each PP is 32 MB big.

Then you can create a filesystem:

bash-3.2# mklv -y cdlv -s n -L /dev/cdlv rootvg 672M hdisk0
cdlv
  • -y LVname
  • -s Strict
  • -L Label

You'll need a size big enough to support the ISOs you're going to mount. Mine biggest ISO is about 650 MB big, so 672 should be big enough.

Create a pseudo device

Use the dd command to create a pseudo-device. Ensure that the partition has enough space for the pseudo-device. In the following example command, the pseudo-device is /dev/cdlv.

bash-3.2# dd if=/tmp/iso/u817522.v1.iso of=/dev/cdlv
1141312+0 records in
1141312+0 records out

Note that this command may take a long time (took me 2 hours) and will create two dd processes:

bash-3.2# ps -ef | grep dd
    root 545020 589994   0 09:38:52  pts/3  0:00 dd if=/tmp/iso/u817522.v1.iso of=/dev/cdlv
    root 630938 545020   1 09:38:52  pts/3  0:00 dd if=/tmp/iso/u817522.v1.iso of=/dev/cdlv

Mount the pseudo device

Mount the device like a CD-ROM in AIX. Ensure that the mount point exists.

bash-3.2# mount -v cdrfs -o ro /dev/cdlv /mnt/iso
bash-3.2# ls /mnt/iso/
.Version  RPMS      installp  usr

Now the iso is mounted.

Undo the mount

Unmount the iso:

bash-3.2# umount /mnt/iso/

Remove the logical volume

bash-3.2# rmlv cdlv
Warning, all data contained on logical volume cdlv will be destroyed.
rmlv: Do you wish to continue? y(es) n(o)?
y
rmlv: Logical volume cdlv is removed.

Source

Mount a CD-ROM

To mount a CD-ROM on AIX:

  1. Switch user to root:
    1. $ su - root
  2. If necessary, enter the a command similar to following to unmount the currently mounted CD-ROM, then remove it from the drive:
    1. # umount /cdrom
    2. In this example, /cdrom is the mount point directory for the CD-ROM drive.
  3. Insert the appropriate CD-ROM into the CD-ROM drive, then enter a command similar to the following to mount it:
    1. # /usr/sbin/mount -rv cdrfs /dev/cd0 /cdrom
    2. # /usr/sbin/mount -v cdrfs -o ro /dev/cd0 /cdrom
    3. In this example, /dev/cd0 is the device name of the CD-ROM drive and /cdrom is the mount point directory.
  4. If the Installer is displaying the Disk Location dialog box, enter the CD-ROM mount point directory path, for example:
    1. /cdrom

Move filespace to another PV / add disk to VG

Done and tested by a collegue of mine:

  1. add new hdisk to vgname
    1. extendvg <vgname> <new hdisk>
  2. move PP's
    1. migratepv <old hdisk> <new hdisk>
  3. check USED/FREE
    1. lspv -p <old hdisk>
  4. check used PP on old hdisk
    1. lslv -p <old hdisk> | grep USED
  5. remove old disk from vg
    1. reducevg <vgname> <old hdisk>

Change disk properties of disks in use

This is a scenario in which the disk properties of the disks in volume group testvg needed to change, but without losing the files (of course):

bash-3.00# cd /
bash-3.00# umount /test
bash-3.00# varyoffvg testvg
bash-3.00# exportvg testvg
bash-3.00# chdev -l hdisk9 -a queue_depth=1
hdisk9 changed
bash-3.00# chdev -l hdisk10 -a queue_depth=1
hdisk10 changed
bash-3.00# importvg -y testvg hdisk9
testvg
bash-3.00# varyonvg testvg
bash-3.00# mount /test
bash-3.00# ls /test
GroteBestanden   KleineBestanden  lost+found

Find LUN id and LUN info

Find manufacturer of LUN:

/home/root>lscfg -vl hdisk14
  hdisk14          U78A5.001.WIH0975-P1-C7-T2-W210000092B286179-L10000000000000  Other FC SCSI Disk Drive

        Manufacturer................IQSTOR
        Machine Type and Model......iQ2880
        ROS Level and ID............36313930
        Serial Number...............00586191
        Device Specific.(Z0)........000004125B005002
        Device Specific.(Z1)........110000790128

Find LUN id:

/home/root>lsattr -El hdisk14
clr_q         no                               Device CLEARS its Queue on error True
location                                       Location Label                   True
lun_id        0x10000000000000                 Logical Unit Number ID           False
max_transfer  0x40000                          Maximum TRANSFER Size            True
node_name     0x210000092b286179               FC Node Name                     False
pvid          000153caa9a979e40000000000000000 Physical volume identifier       False
q_err         yes                              Use QERR bit                     True
q_type        simple                           Queuing TYPE                     True
queue_depth   1                                Queue DEPTH                      True
reassign_to   120                              REASSIGN time out value          True
rw_timeout    30                               READ/WRITE time out value        True
scsi_id       0x11300                          SCSI ID                          False
start_timeout 60                               START unit time out value        True
ww_name       0x210000092b286179               FC World Wide Name               False

lun_id: 0x10000000000000
Remove the first two and the last 12 digits: 10 in hex is 16 in dec

Another example:

:/home/root>lsattr -El hdisk6
clr_q         no                               Device CLEARS its Queue on error True
location                                       Location Label                   True
lun_id        0xb000000000000                  Logical Unit Number ID           False
max_transfer  0x40000                          Maximum TRANSFER Size            True
node_name     0x290000092b286179               FC Node Name                     False
pvid          000153ca127112140000000000000000 Physical volume identifier       False
q_err         yes                              Use QERR bit                     True
q_type        simple                           Queuing TYPE                     True
queue_depth   1                                Queue DEPTH                      True
reassign_to   120                              REASSIGN time out value          True
rw_timeout    30                               READ/WRITE time out value        True
scsi_id       0x11300                          SCSI ID                          False
start_timeout 60                               START unit time out value        True
ww_name       0x290000092b286179               FC World Wide Name               False

lun_id: 0xb000000000000
Remove the first two and the last 12 digits: b in hex is 11 in dec

Find Open Files

root@aixbox:/>fuser -uc /
/:        0c(root)       1c(root)   90252c(root)  131230(root)  164004c(sjoerd)  233714(root)  286778c(root)  376888c(root)  381030(root)  426112c(sjoerd)  446480c(root)  512200(user5)  671846c(root)  692428c(root)   53604(root)   82320c(root)   86428c(root)  102864(root)  106858c(root)  123262c(root)  143796(root)  147916(root)  151818c(sjoerd)  213476(root)  229634(root)  598380c(user5)  606488c(sjoerd)  635164(root)  778542c(root)  782650c(sjoerd)  795126c(root)
root@aixbox:/>fuser -uc /var
/var:   233714c(root)   53604c(root)  102864c(root)  143796c(root)  147916c(root)  213476c(root)  229634c(root)

MPIO

MPIO is a way to connect to a SAN with multiple paths. This way you can have a redundant connection to the SAN. AIX has a native MPIO driver, but you can also use the IBM SDD driver. The SDD driver is a bit more advanced and has more options. The native driver is a bit more simple and is easier to use.

Show SAN luns

With a NetApp SAN:

root@sanserver:/home/root>sanlun lun show
controller:         lun-pathname        device filename  adapter  protocol          lun size         lun state
    netapp2:  /vol/sanserver_boot/boot  hdisk0           fcs0     FCP         29.9g (32144097280)    GOOD

Set Path Priority

First query:

root@sanserver:/home/root>dotpaths -q
hdisk5 (path 0): Unoptimized path - Default priority is 1
hdisk5 (path 1): Optimized path - Default priority is 1
hdisk5 (path 2): Optimized path - Default priority is 1
hdisk5 (path 3): Unoptimized path - Default priority is 1

Than set:

Not prioritized yet:

root@sanserver:/home/root>dotpaths -v
hdisk0 (path 0): Unoptimized path - Current priority of 1 is correct
hdisk0 (path 1): Optimized path - Setting priority to 255
hdisk0 (path 2): Optimized path - Setting priority to 255
hdisk0 (path 3): Unoptimized path - Current priority of 1 is correct
Path priority set and/or verified for 1 disks, 2 total paths.

Already prioritized:

root@sanserver:/home/root>dotpaths -v
hdisk0 (path 0): Optimized path - Current priority of 255 is correct
hdisk0 (path 1): Optimized path - Current priority of 255 is correct
Path priority set and/or verified for 1 disks, 2 total paths.

See Number of Paths

root@sanserver:/home/root>lspath
Enabled hdisk0 fscsi0
Enabled hdisk0 fscsi1

See SAN Data

root@sanserver:/home/root>sanlun lun show -p
ONTAP_PATH: netapp2:/vol/sanserver_boot/boot
LUN: 0
LUN Size:  29.9g (32144097280)
Host Device: hdisk0
LUN State: GOOD
Controller_CF_State: Cluster Enabled
Controller Partner: netapp1
Multipath Provider: AIX Native
Multipathing Algorithm: round_robin

--------- ----------- ------ ------ ----------- ----------
MPIO      Controller  AIX           Controller  AIX MPIO
path      path        MPIO   host   target HBA  path
status    type        path   HBA    port        priority
--------- ----------- ------ ------ ----------- ----------
Enabled       primary path0  fcs0       0b         255
Enabled       primary path1  fcs1       0d         255

Enable Failed Paths

When paths have gone wrong they stay in a disabled state until the operator enables them again: See failed paths:

root@aixbox:/home/root>lspath -l hdisk0
Enabled  hdisk0 fscsi0
Failed   hdisk0 fscsi0
Enabled  hdisk0 fscsi1
Failed   hdisk0 fscsi1

Enable the failed paths:

root@aixbox:/home/root>chpath -l hdisk0  -s enable
paths Changed
root@aixbox:/home/root>lspath -l hdisk0
Enabled  hdisk0 fscsi0
Enabled  hdisk0 fscsi0
Enabled  hdisk0 fscsi1
Enabled  hdisk0 fscsi1

You can also do that per adapter:

root@aixbox:/home/root>chpath -l hdisk0 -p fscsi1 -s enable
aixstorage.txt · Last modified: by 127.0.0.1