- AIX Notes
1. AIX Notes
Lots of good information on AIX and RS/6000/pSeries systems is at
rootvg.net. I've put together an IbmGlossary for all the strange acronyms that IBM uses; it used to be here, but there's a lot of overlap with ../ZseriesNotes.
1.1. Questions (and Possibly Answers)
-
Q: Why are there a lot of extra routes in the routing table?
A: This is an artifact of path MTU discovery. Discovered path MTUs are stored in the routing table. These routes are temporary and usually have flags of UGHW.
1.2. Hints and Tips
Feel free to add to this list or fix mistakes.
1.2.1. Finding the Size of a Physical Volume
You can determine the size of a physical volume without first importing it into a volume group with the undocumented bootinfo command:# bootinfo -s <disk>
This returns the size in megabytes. It works for SCSI drives, VIO vSCSI volumes, SAN LUNs, etc.
1.2.2. LVM Commands
1.2.2.1. Determine which LVs are mirrored
lsvg -l <vgname>
Compare the counts of LPs to PPs. A mirrored LV will have 2 times as many PPs as LPs.
1.2.2.2. List logicial volumes in a volume group
lsvg -l <vgname>
1.2.3. Find a system's serial number
lscfg -pv |grep Cabinet
1.2.4. Info about ethernet devices
lscfg -vpl ent0
This shows MAC address, physical location, etc.
1.2.5. ODM-Configured Static Routes
Routes tend to be added to the ODM when added through SMIT but the cannot be likewise removed from the ODM with SMIT. To query the route entries in the ODM:# lsattr -El inet0 -a routeOr:
$ odmget -q "name=inet0" CuAt
CuAt:
name = "inet0"
attribute = "hostname"
value = "zeus.example.com"
type = "R"
generic = "DU"
rep = "s"
nls_index = 24
CuAt:
name = "inet0"
attribute = "route"
value = "net,-hopcount,0,,0,192.168.10.1"
type = "R"
generic = "DU"
rep = "s"
nls_index = 0
CuAt:
name = "inet0"
attribute = "route"
value = "net,-hopcount,0,-netmask,255.255.255.0,,,10.11.12.0,192.168.10.2"
type = "R"
generic = "DU"
rep = "s"
nls_index = 0
The entries with attribute = "route" are static routing table entries added automatically at boot. Routes can be deleted using the chdev command or by manipulating the ODM directly. Using chdev:
# chdev -l inet0 -a delroute=net,-hopcount,0,-netmask,255.255.255.0,,,10.11.12.0,192.168.10.2To delete an entry using the ODM, it must be identified by it's value seen in the odmget command above:
# odmdelete -o CuAt -q "name=inet0 and value=net,-hopcount,0,-netmask,255.255.255.0,,,10.11.12.0,192.168.10.2"
1.2.6. Upgrade firmware from floppy
(This might be incomplete or wrong. I don't remember; it's been a long time since I did it.)
restore /dev/fd0 /usr/lpp/diagnostics/bin/update_flash -f
1.2.7. Package Management
See PackageManagerCheatsheet1.3. OS Update
The "oslevel" command can be used to determine what filesets need to be installed to bring a system to a given technology level or service pack. This information is from the bos.rte.install fileset, although I have never actually find where it is listed; it may be in the binary itself. The -g option shows filesets newer than the requested level and the -l shows filesets that are older. To determine what is needed to upgrade from one technology level to another, use the -r option and the 6-digit technology level. For a service pack, use the -s and the 8-digit service pack level.
First, install the current bos.rte.install for the level you want to upgrade to. If your system is behind at the technology level, use "oslevel -rl 5300-0X" to show you what updates are required. Similarly, if your system requires service pack updates, use "oslevel -sl 5300-0X-0Y".
Here's an example from one of my recent upgrades, going from 5300-05-04 to 5300-05-05. First, check the current service pack level:$ oslevel -s 5300-05-04Then check what's newer than 5300-05-04:
$ oslevel -sg 5300-05-04 Fileset Actual Level Service Pack Level ----------------------------------------------------------------------------- bos.rte.install 5.3.0.55 5.3.0.54As you can see, I have already updated bos.rte.install. Now check what fileset versions are required for the service pack update:
$ oslevel -sl 5300-05-05 Fileset Actual Level Service Pack Level ----------------------------------------------------------------------------- bos.adt.include 5.3.0.53 5.3.0.54 bos.mp64 5.3.0.54 5.3.0.55 bos.mp 5.3.0.54 5.3.0.55 ...
These are particularly handy if you have applied updates but find that oslevel
Also, to determine which Technology Levels and Service Packs your oslevel command knows about, you can use the -q option:$ oslevel -sq Known Service Packs ------------------- 5300-05-05 5300-05-04 ... $ oslevel -rq Known Recommended Maintenance Levels ------------------------------------ 5300-05 5300-04 5300-03
1.4. ODM
1.4.1. ODM Object Classes
Ever wondered what all of those file names are you have to use with "odmget"? Here's a table from| PdDv | Predefined Devices |
| PdCn | Predefined Connection |
| PdAt | Predefined Attribute |
| Config_Rules | Configuration Rules |
| CuDv | Customized Devices |
| CuDep | Customized Dependency |
| CuAt | Customized Attribute |
| CuDvDr | Customized Device Driver |
| CuVPD | Customized Vital Product Data |
1.5. General
1.5.1. Maximum User Processes
AIX has a global hard limit on the number of processes an individual user may have, which can cause mysterious "fork: Resource temporarily unavailable" message when a user it. The limit even applies to root. You can find out what your limit is set to with "lsattr":$ lsattr -HEl sys0 -a maxuproc attribute value description user_settable maxuproc 128 Maximum number of PROCESSES allowed per user TrueIt can then be changed with "chdev":
# chdev -l sys0 -a maxuproc=200 sys0 changed
1.6. HMC Configuration
1.6.1. Enable Remote Syslog
Logged in to the HMC via SSH :$ chhmc -c syslog -s add -h loghost.example.com
1.6.2. Enable and Add NTP Servers
Logged in to the HMC via SSH :$ chhmc -c xntp -s add -h ntpserver.example.com
1.7. Undocumented Commands
1.7.1. lqueryvg
$ for X in $(perl -e 'for (a..z,A..Z){print $_," ";}'); do echo $X ":"; lqueryvg -t$X -g 00ce23da00004c00000001099df94648 2>&1; done
a :
Max LVs: 256
PP Size: 27
Free PPs: 4
LV count: 2
PV count: 3
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Conc Autovaryo 0
Varied on Conc 0
Total PPs: 239
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 1
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VG Type: 0
Max PPs: 32512
b :
SNAPSHOT VG: 0
c :
PV count: 3
d :
lqueryvg: illegal option -- d
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
e :
lqueryvg: illegal option -- e
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
f :
MAX PPs per PV 1016
g :
0516-010 lqueryvg: Volume group must be varied on; use varyonvg command.
h :
HOT SPARE: 0
i :
IS_PRIMARY VG: 0
j :
VG Type: 0
k :
Max PPs: 32512
l :
LTG size: 128
m :
MAX PVs: 32
n :
LV count: 2
o :
Total PPs: 239
p :
0516-082 lqueryvg: Unable to access a special device file.
Execute redefinevg and synclvodm to build correct environment.
q :
r :
VG version: 30
s :
PP Size: 27
t :
Max LVs: 256
PP Size: 27
Free PPs: 4
LV count: 2
PV count: 3
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Conc Autovaryo 0
Varied on Conc 0
Total PPs: 239
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 1
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VG Type: 0
Max PPs: 32512
u :
lqueryvg: illegal option -- u
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
v :
w :
lqueryvg: illegal option -- w
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
x :
Conc Autovaryo 0
y :
AUTO SYNC: 1
z :
lqueryvg: illegal option -- z
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
A :
Max LVs: 256
PP Size: 27
Free PPs: 4
LV count: 2
PV count: 3
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Conc Autovaryo 0
Varied on Conc 0
Logical: 00ce23da00004c00000001099df94648.3 installlv 1
00ce23da00004c00000001099df94648.4 fslv01 1
Physical: 00ce23da6409b93f 1 1
00ce23da6409bb88 1 1
00ce23daeca0fb0a 1 1
Total PPs: 239
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 1
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VARYON MODE: 0
VG Type: 0
Max PPs: 32512
B :
Max LVs: 256
PP Size: 27
Free PPs: 4
LV count: 2
PV count: 3
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Conc Autovaryo 0
Varied on Conc 0
Total PPs: 239
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 1
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VG Type: 0
Max PPs: 32512
C :
Varied on Conc 0
D :
Total VGDAs: 3
E :
lqueryvg: illegal option -- E
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
F :
Free PPs: 4
G :
lqueryvg: illegal option -- G
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
H :
VARYON MODE: 0
I :
lqueryvg: illegal option -- I
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
J :
lqueryvg: illegal option -- J
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
K :
lqueryvg: illegal option -- K
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
L :
Logical: 00ce23da00004c00000001099df94648.3 installlv 1
00ce23da00004c00000001099df94648.4 fslv01 1
M :
Max LVs: 256
PP Size: 128
Free PPs: 512
LV count: 2
PV count: 3
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Conc Autovaryo 0
Varied on Conc 0
Total PPs: 30592
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 1
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VG Type: 0
Max PPs: 32512
N :
Max LVs: 256
O :
lqueryvg: illegal option -- O
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
P :
Physical: 00ce23da6409b93f 1 1
00ce23da6409bb88 1 1
00ce23daeca0fb0a 1 1
Q :
lqueryvg: illegal option -- Q
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
R :
VG PERMISSION: 0
S :
VGDA size: 2098
T :
Time Stamp: 47cb69910d21db31
U :
lqueryvg: illegal option -- U
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
V :
W :
lqueryvg: illegal option -- W
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
X :
Conc Allowed: 0
Y :
lqueryvg: illegal option -- Y
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
Z :
lqueryvg: illegal option -- Z
Usage: lqueryvg [-g VGid | -p PVname] [-NsFncDaLPAvt]
