AIX Administration Cheat Sheet

AIX 7.1 / 7.2 / 7.3 · Power Systems
Keine Treffer – Suchbegriff anpassen.

💻System- & LPAR-Informationen

oslevel -sGenauer OS-Level inkl. TL/SP, z. B. 7300-02-01-2346
oslevel -rRecommended-Maintenance-Level (nur TL)
instfix -i | grep MLPrüft, ob alle Filesets eines ML/TL komplett sind
uname -aKernel-Info: OS, Hostname, Version/Release, Maschinen-ID
uname -MMaschinenmodell, z. B. IBM,9009-42A
uname -LLPAR-ID und LPAR-Name
prtconfKomplette Hardware-Übersicht (CPU, RAM, Firmware, Devices)
prtconf -m / -c / -sNur Memory / CPU-Anzahl / CPU-Typ
lsconfÄhnlich prtconf, zusätzlich Netzwerk- und Paging-Details
lsattr -El sys0Systemweite Attribute (maxuproc, realmem, iostat …)
lsattr -El sys0 -a realmemPhysischer Speicher in KB
chdev -l sys0 -a maxuproc=8192Max. Prozesse pro User erhöhen (sofort aktiv)
lscfg -vp | grep -p PlatformFirmware-/Systemfirmware-Level
lparstat -iLPAR-Konfiguration: Typ, Entitled Capacity, VPs, Weight, SMT
lsdev -Cc processorVorhandene (logische) Prozessoren
smtctlSMT-Status anzeigen
smtctl -m off -w bootSMT dauerhaft ausschalten (-w now = sofort)
bindprocessor -qVerfügbare logische CPUs auflisten
date; uptimeZeit, Laufzeit, Load Average, angemeldete User
who -b / last rebootLetzter Bootzeitpunkt / Reboot-Historie
lslicenseAnzahl der Fixed-Lizenzen / Floating-Lizenzen
Praxis: Vor jeder Änderung Ist-Zustand sichern: prtconf > /tmp/prtconf_$(date +%F).txt und oslevel -s notieren.

ODM – Object Data Manager

odmget -q "name=hdisk0" CuDvODM-Eintrag eines Devices anzeigen
odmget CuAt | moreAlle geänderten (custom) Attribute
odmdelete -q "name=hdisk9" -o CuDvVerwaisten ODM-Eintrag löschen
synclvodm -v vgnameODM mit VGDA/LVM-Struktur synchronisieren
Achtung: odmdelete nur mit klarem Verständnis nutzen – falsche Einträge zu löschen kann das System unbootbar machen. Bevorzugt rmdev.

Boot, Shutdown & Bootlist

bootlist -m normal -oAktuelle Bootreihenfolge (Normal-Mode) anzeigen
bootlist -m normal hdisk0 hdisk1Bootreihenfolge setzen (Reihenfolge = Priorität)
bootlist -m service -oService-Bootliste (z. B. für NIM/CD-Boot)
bosboot -ad /dev/hdisk0Bootimage neu schreiben (nach LVM-/Kernel-Änderung nötig)
lslv -m hd5Auf welchen Platten liegt das Boot-LV hd5
shutdown -FrSofortiger Reboot ohne Grace-Period (Standard für Wartung)
shutdown -FSystem herunterfahren und ausschalten
shutdown -Fr +5 "Wartung"Reboot in 5 Minuten mit Meldung an alle User
alt_disk_copy -B -d hdisk1Klon von rootvg auf freie Platte (Rollback-Sicherheit)
alt_rootvg_op -W -d hdisk1altinst_rootvg aufwecken/mounten zur Kontrolle
alt_rootvg_op -X altinst_rootvgAlt-Disk-Klon wieder entfernen

Boot-Modi & SMS

1 (bei Boot-Piep)SMS-Menü (Bootreihenfolge, Netzwerk-Boot, Diagnose)
5 / 6Boot von Default- bzw. angegebener Liste, Service Mode
8Open-Firmware-Prompt (ok>)
Maintenance ModeBoot von DVD/NIM → „Access a Root Volume Group“ → Shell für Reparaturen

Runlevel & Init

who -rAktuellen Runlevel anzeigen
lsitab -aAlle Einträge aus /etc/inittab
mkitab "myapp:2:once:/usr/local/bin/start"Autostart-Eintrag anlegen
chitab / rmitab myappEintrag ändern bzw. entfernen
telinit qinittab neu einlesen ohne Reboot
Merke: Nach jeder Änderung an rootvg-LVs (mirrorvg, extendvg, Plattenwechsel) immer bosboot -ad /dev/hdiskX und danach bootlist prüfen.

📦Software: Filesets, installp, RPM & dnf

Abfragen

lslpp -L allAlle installierten Filesets mit Level und Status
lslpp -l "bos.mp64"Status eines bestimmten Filesets
lslpp -w /usr/bin/vmstatWelches Fileset besitzt diese Datei?
lslpp -f bos.rte.commandsAlle Dateien eines Filesets
lslpp -h bos.rteInstallations-/Update-Historie
lppchk -vKonsistenzprüfung: fehlen Requisites? (sollte leer sein)
lppchk -c bos.rteChecksummen der Dateien prüfen
instfix -ivk IV12345Prüfen, ob ein APAR installiert ist

Installieren & Updaten (installp)

inutoc .Im Fileset-Verzeichnis .toc erzeugen – immer zuerst!
installp -apXYgd . allPreview (Testlauf) – nichts wird geändert
installp -aXYgd . allInstallieren: a=apply X=FS erweitern Y=Lizenz g=Requisites
install_all_updates -d /mnt/tl03Empfohlener Weg für TL/SP-Updates
smitty update_allMenu-gestütztes Update aller installierten Filesets
installp -c allApplied → Committed (alte Version wird verworfen)
installp -r allReject: Applied-Update zurückrollen
installp -u fileset.nameFileset deinstallieren
emgr -lInstallierte Interim Fixes (ifixes) anzeigen
emgr -e IJ12345.epkg.ZInterim Fix installieren
emgr -r -L IJ12345Interim Fix entfernen
Applied vs. Committed: applied behält die Vorgängerversion und ist zurückrollbar (installp -r). Erst nach erfolgreichem Test commiten – committed belegt weniger Platz, lässt sich aber nicht mehr rejecten.

RPM / Open Source (AIX Toolbox)

rpm -qa | grep -i bashInstallierte RPMs suchen
rpm -ivh paket.rpmRPM installieren (-Uvh = Upgrade)
rpm -e paketRPM entfernen
dnf search / install / update nmonAIX Toolbox über dnf verwalten (ab AIX 7.2)
dnf list installedAlle über dnf verwalteten Pakete

🔌Devices, Disks & MPIO

lsdev -CAlle Devices aus der ODM-Customized-Datenbank
lsdev -Cc diskAlle Platten mit Status (Available/Defined)
lsdev -Cc adapterAlle Adapter (FC, Ethernet, SCSI …)
lsdev -p fscsi0Alle Kind-Devices eines FC-Adapters
cfgmgr -vNeue Hardware erkennen und konfigurieren (verbose)
cfgmgr -l fcs0Nur einen Adapter neu scannen (schneller, schonender)
rmdev -dl hdisk5Device entfernen inkl. ODM-Definition
rmdev -Rl fcs0Adapter + alle Kinder auf Defined setzen
mkdev -l hdisk5Defined-Device wieder verfügbar machen
lsattr -El hdisk0Attribute einer Platte (queue_depth, reserve_policy …)
chdev -l hdisk0 -a queue_depth=32 -PAttribut ändern, -P = erst nach Reboot aktiv
lscfg -vpl hdisk0Details: Hersteller, Modell, Serien-/WWN, Microcode
bootinfo -s hdisk0Plattengröße in MB
lsattr -El hdisk0 -a unique_idEindeutige LUN-ID (Mapping zum Storage)
chdev -l hdisk3 -a pv=yesPVID auf Platte schreiben
lspvAlle Platten mit PVID und VG-Zuordnung
lsdev -Cc disk -S dNur Devices im Status Defined (häufig Leichen)

MPIO / Multipathing

lspathAlle Pfade mit Status (Enabled/Failed/Missing)
lspath -l hdisk3 -F "status parent connection"Pfade einer LUN detailliert
chpath -l hdisk3 -p fscsi0 -s disablePfad deaktivieren (z. B. vor SAN-Wartung)
chpath -l hdisk3 -p fscsi0 -s enablePfad wieder aktivieren
rmpath -dl hdisk3 -p fscsi1Toten Pfad entfernen
lsattr -El hdisk3 -a algorithmLoad-Balancing-Algorithmus (round_robin / fail_over / shortest_queue)
chdev -l hdisk3 -a algorithm=shortest_queue -a reserve_policy=no_reserveTypische Einstellung für SAN-/Cluster-LUNs
lsmpio -l hdisk3MPIO-Status und Pfadstatistik (AIX 7.2+)
lsmpio -qeStorage-Identifikation aller MPIO-Disks

FC-Adapter & WWPN

lscfg -vpl fcs0 | grep NetworkWWPN des FC-Adapters ermitteln (für Zoning)
fcstat fcs0FC-Statistik: Fehler, Link-Failures, Durchsatz
fcstat -e fcs0Erweiterte Statistik inkl. Adapter-Queue-Auslastung
lsdev -Cc driver | grep fcpFC-Protokoll-Devices prüfen
Neue LUN einbinden: Zoning/Mapping im SAN → cfgmgr -l fcs0 und cfgmgr -l fcs1lspvlspath prüfen → Attribute setzen → extendvg oder mkvg.

🗃LVM – Physical Volumes & Volume Groups

Physical Volumes

lspvÜbersicht aller PVs mit PVID und VG
lspv hdisk1Details: VG, PP-Größe, FREE PPs, USED PPs, Status
lspv -l hdisk1Welche LVs liegen auf dieser Platte
lspv -p hdisk1Belegungskarte (Region: outer edge … inner edge)
lspv -M hdisk1PP-zu-LP-Mapping der Platte
getconf DISK_SIZE /dev/hdisk1Plattengröße in MB
migratepv hdisk1 hdisk2Alle Daten online auf andere Platte verschieben
migratepv -l lv01 hdisk1 hdisk2Nur ein LV verschieben

Volume Groups

lsvgAlle bekannten VGs
lsvg -oNur aktive (varied on) VGs
lsvg rootvgPP-Größe, Total/Free PPs, Quorum, VG-Typ, Max LVs
lsvg -l rootvgAlle LVs der VG mit Typ, LPs/PPs, Mountpoint
lsvg -p rootvgAlle PVs der VG mit freien PPs
lsvg -M datavgKomplettes PP/LP-Mapping der VG
mkvg -S -y datavg -s 128 hdisk2 hdisk3Scalable VG anlegen, PP-Size 128 MB
mkvg -B -y bigvg -s 64 hdisk4Big VG (-C = Enhanced Concurrent für PowerHA)
extendvg datavg hdisk5Platte zur VG hinzufügen (-f erzwingt)
reducevg datavg hdisk5Platte aus VG entfernen (muss leer sein)
reducevg -df datavg hdisk5Erzwingen, wenn Platte defekt/weg ist
varyonvg datavg / varyoffvg datavgVG aktivieren / deaktivieren
importvg -y datavg hdisk5VG auf anderem System importieren
exportvg datavgVG-Definition aus ODM entfernen (Daten bleiben)
chvg -a y datavgAuto-Varyon beim Boot einschalten (-a n für Cluster)
chvg -Q n datavgQuorum abschalten (bei 2-Platten-Mirror sinnvoll)
chvg -g datavgVG-Größe nach LUN-Vergrößerung neu einlesen
syncvg -v datavgStale Partitions synchronisieren
lsvg datavg | grep STALEAuf stale PPs prüfen (muss 0 sein)
redefinevg -d hdisk2 datavgVG-Definition aus VGDA rekonstruieren
VG-Typen: Normal VG (max. 32 PVs, 255 LVs), Big VG (128 PVs, 512 LVs), Scalable VG (1024 PVs, 4096 LVs, LVM-Metadaten dynamisch). Neuanlagen immer als mkvg -S (Scalable) – spätere Konvertierung erfordert Varyoff.
PP-Size: Max. 1016 PPs pro PV bei Faktor 1. Bei 1 TB-LUN also mindestens 1024 MB PP-Size wählen oder Scalable VG nutzen.

🧩LVM – Logical Volumes & Mirroring

lslv lv01LV-Details: Typ, LPs, Copies, Policy, Mountpoint
lslv -l lv01Auf welchen PVs liegt das LV, Verteilung
lslv -m lv01LP-zu-PP-Mapping inkl. Mirror-Kopien
mklv -y lv01 -t jfs2 datavg 50LV mit 50 LPs anlegen
mklv -y lv01 -t jfs2 -c 2 -s s datavg 50 hdisk2 hdisk3Gespiegeltes LV (2 Kopien, strict) auf 2 Platten
mklv -y loglv01 -t jfs2log datavg 1Separates JFS2-Log-LV anlegen
logform /dev/loglv01Log-LV formatieren – Pflicht vor der Nutzung
extendlv lv01 20LV um 20 LPs vergrößern
rmlv lv01LV löschen (Filesystem vorher entfernen)
chlv -x 2048 lv01Max. LPs erhöhen (bei „exceeds maximum“-Fehler)
cplv -v datavg -y lvneu lvaltLV kopieren (z. B. für Testkopie)

Mirroring

mirrorvg -S rootvg hdisk1Komplette VG spiegeln, Sync im Hintergrund
mirrorvg -c 3 datavg hdisk4 hdisk5Dreifach-Spiegel
unmirrorvg rootvg hdisk1Spiegel wieder auflösen
mklvcopy -s n lv01 2 hdisk3Einzelnes LV spiegeln
rmlvcopy lv01 1 hdisk3Mirror-Kopie eines LV entfernen
syncvg -p hdisk3Synchronisation einer Platte anstoßen
#  rootvg spiegeln - kompletter Ablauf
extendvg rootvg hdisk1
mirrorvg -S rootvg hdisk1        # -S = Background-Sync
lsvg rootvg | grep STALE         # warten bis STALE PPs = 0
bosboot -ad /dev/hdisk0
bosboot -ad /dev/hdisk1
bootlist -m normal hdisk0 hdisk1
bootlist -m normal -o            # kontrollieren
Nicht vergessen: Nach mirrorvg rootvg zwingend bosboot auf beide Platten und bootlist anpassen – sonst bootet das System beim Ausfall der ersten Platte nicht.

📁Filesystems (JFS2)

df -gBelegung in GB (-m MB, -k KB)
df -g /usrEinzelnes Filesystem
lsfsAlle Filesystems mit LV, Typ, Größe, Optionen
lsfs -q /dataDetailinfos inkl. Blockgröße, Inodes, ea-Format
mount / mount -aGemountete FS anzeigen / alle aus /etc/filesystems mounten
mount /dataEinzelnes FS mounten
umount /dataAushängen (fuser -kxuc /data falls busy)
crfs -v jfs2 -g datavg -m /data -a size=20G -A yesFS anlegen, LV wird automatisch erzeugt, Automount an
crfs -v jfs2 -d lv01 -m /data -A yesFS auf bestehendem LV anlegen
chfs -a size=+10G /dataOnline vergrößern (relativ – sicherste Variante)
chfs -a size=50G /dataAuf absolute Größe setzen
chfs -a size=-2G /dataJFS2 online verkleinern (Vorsicht, Backup!)
chfs -A yes /dataAutomount beim Boot aktivieren
rmfs -r /dataFS inkl. LV und Mountpoint löschen
fsck -y /dev/lv01FS prüfen und reparieren (nur im umounted Zustand!)
defragfs -q /dataFragmentierung prüfen (defragfs /data = defragmentieren)
mount -o rw,remount /dataMountoption ohne Aushängen ändern
mount -o cio /dataConcurrent I/O (typisch für Oracle/DB2-Datenfiles)

Platz & Analyse

du -sm /var/* | sort -rn | head -20Größte Unterverzeichnisse in MB
find /var -xdev -size +100000c -ls | sort -k7 -rn | headGroße Dateien, ohne Mount-Grenzen zu überschreiten
df -i /varInode-Auslastung (100 % = „voll“ trotz freiem Platz)
fuser -cu /dataWer benutzt das Filesystem (PID + User)
fuser -kxuc /dataAlle Zugriffe hart beenden, dann umount
lsof +D /dataOffene Dateien im Pfad (falls lsof installiert)
Volles Filesystem, aber du zeigt wenig? Meist hält ein Prozess eine gelöschte Datei offen – mit fuser -dV /data bzw. lsof /data | grep deleted finden und den Prozess neu starten.

Snapshots (JFS2)

snapshot -o snapfrom=/data /dev/snaplvExternen Snapshot erzeugen
snapshot -q /dataVorhandene Snapshots anzeigen
rollback -s /dev/snaplv /dataFS auf Snapshot zurückrollen
snapshot -d /dev/snaplvSnapshot löschen

📈Paging Space

lsps -aAlle Paging Spaces mit Größe und Auslastung
lsps -sSumme aller Paging Spaces und Gesamtauslastung
mkps -a -n -s 8 -t lv datavg hdisk3Neuen PS anlegen (8 LPs, sofort aktiv, Autostart)
chps -s 4 paging00Um 4 LPs vergrößern (online möglich)
chps -d 2 paging00Um 2 LPs verkleinern (dynamisch, kann dauern)
chps -a y paging00Beim Boot automatisch aktivieren
swapon /dev/paging00Paging Space aktivieren
swapoff /dev/paging00Deaktivieren (muss vor rmps erfolgen)
rmps paging00Paging Space löschen
vmstat 2 5 | awk '{print $5,$6,$7,$8}'Paging-Aktivität: fre, pi, po beobachten
Faustregel: hd6 (Standard-PS in rootvg) nicht löschen. Auslastung dauerhaft > 50 % oder anhaltendes pi/po > 0 deutet auf zu wenig RAM hin – mehr Paging Space löst das Problem nicht, sondern verzögert es nur.

Prozesse, Jobs & Subsysteme

ps -efAlle Prozesse, Full-Format
ps aux | head -20Nach CPU sortierte Top-Prozesse
ps -ef | grep -v grep | grep sshdProzess gezielt suchen
ps gv | head -1; ps gv | egrep -v RSS | sort +6b -7 -n -r | headSpeicherhungrigste Prozesse
ps -eo pid,ppid,user,pcpu,vsz,argsEigene Spaltenauswahl
ps -T <pid>Prozessbaum ab PID
ps -mo THREAD -p <pid>Threads eines Prozesses
kill -15 <pid> / kill -9 <pid>Sauber beenden / hart abschießen
nice -n 10 cmd / renice -n 5 -p <pid>Priorität beim Start / nachträglich setzen
svmon -P <pid> -O unit=MBDetaillierte Speichernutzung eines Prozesses
procstack <pid>Aktuellen Stack-Trace ausgeben (Hang-Analyse)
procfiles <pid>Offene File Descriptors eines Prozesses
procwdx <pid>Arbeitsverzeichnis eines Prozesses
nohup cmd > /tmp/log 2>&1 &Job abgekoppelt im Hintergrund starten
jobs / fg %1 / bg %1Shell-Jobverwaltung

SRC – System Resource Controller

lssrc -aAlle Subsysteme mit Status
lssrc -s sshdStatus eines Subsystems
lssrc -g tcpipAlle Subsysteme einer Gruppe
startsrc -s sshd / stopsrc -s sshdSubsystem starten / stoppen
refresh -s sshdKonfiguration neu einlesen ohne Neustart
stopsrc -cs inetdHart stoppen (-c = cancel)
mkssys / rmssysEigenes Subsystem im SRC registrieren / entfernen

Zeitgesteuerte Jobs

crontab -l / -eEigene Crontab anzeigen / bearbeiten
crontab -l -u oracleCrontab eines anderen Users lesen
/var/spool/cron/crontabs/Speicherort der Crontabs (Backup nicht vergessen)
at now + 2 hoursEinmaligen Job planen (mit Ctrl-D beenden)
atq / at -r <job>Geplante at-Jobs listen / löschen
/var/adm/cron/logCron-Protokoll bei Problemen prüfen
Cron-Falle: Cron startet mit minimalem Environment (kein .profile). Immer absolute Pfade nutzen und benötigte Variablen (PATH, ORACLE_HOME, LIBPATH) im Skript selbst setzen.

📊Performance-Analyse

Schnellüberblick

topasInteraktiver Gesamtüberblick (CPU, RAM, Disk, Netz, Top-Prozesse)
topas -LLPAR-Ansicht (Shared Pool, Entitlement)
topas -DDisk-Detailansicht
nmonInteraktiv: c=CPU m=Memory d=Disk n=Netz t=Top
nmon -f -s 60 -c 1440 -m /tmp24 h aufzeichnen im Minutentakt (Auswertung mit nmon-Analyser)
vmstat 2 1010 Messungen im 2-Sekunden-Takt
vmstat -Iwt 2Erweiterte Ausgabe mit Threads und Zeitstempel
vmstat -vWichtige VMM-Kennzahlen (pending disk I/O blocked, fsbufwaitcnt)
mpstat 2 5Auslastung pro logischer CPU
sar -u 2 5 / sar -P ALL 2 3CPU-Nutzung gesamt / je Prozessor

CPU & LPAR

lparstat 2 5Physische CPU-Nutzung, Entitlement, %entc, lbusy
lparstat -h 2 5Zusätzlich Hypervisor-Zeiten
mpstat -s 2 2SMT-Thread-Verteilung pro Core
curt -i trace.out -o curt.outDetaillierte CPU-Analyse aus Trace
%entc > 100: Die LPAR nutzt mehr als ihr Entitlement aus dem Shared Pool – das ist normal, solange app (available physical processors) im Pool > 0 ist.

Memory

svmon -G -O unit=GBGlobale Speicherübersicht in GB
svmon -P -O sortseg=pgsp -t 10Top-10-Prozesse nach Paging-Space-Nutzung
svmon -U -O unit=MBSpeicher nach User gruppiert
vmo -a | moreAlle VMM-Tunables anzeigen
vmo -o minperm%=3 -o maxperm%=90 -pTunable dauerhaft setzen (-p = perm)
vmo -L lru_file_repageBeschreibung und Grenzwerte eines Tunables

Disk-I/O

iostat 2 5Disk-Auslastung, tps, KB/s pro hdisk
iostat -D 2 3Erweitert: avgserv, avgtime, avgwqsz (Queue-Wartezeit!)
iostat -a 2 2Auslastung pro Adapter
iostat -m 2 2Statistik je MPIO-Pfad
filemon -o /tmp/fmon.out -O all -T 2000000; trcstopDetaillierte I/O-Analyse (kurz laufen lassen!)
fileplace -pv /pfad/dateiPhysische Verteilung/Fragmentierung einer Datei
ioo -a | moreI/O-Tunables anzeigen
lvmstat -e -v datavg; lvmstat -v datavgStatistik je LV aktivieren und auslesen
Faustwerte: iostat -Davgserv bei SAN-LUNs sollte < 10 ms sein; avgwqsz deutlich > 0 heißt: queue_depth der hdisks oder num_cmd_elems des FC-Adapters zu klein.

Netzwerk-Performance

netstat -v ent0 | moreAdapter-Statistik, Errors, Speed, Flow Control
entstat -d ent0Detaillierte Ethernet-Statistik
netstat -inPakete/Fehler pro Interface
no -a | moreNetzwerk-Tunables anzeigen
no -p -o tcp_sendspace=262144Tunable dauerhaft setzen
netstat -mmbuf-Nutzung, Failed-Allocations prüfen

Perfstat / Reporting

topasrec -L -s 300 -R 1 -o /tmp/topas.recKontinuierliche Aufzeichnung im Binärformat
topasout -R detailed /etc/perf/daily/xxxtopas-Recording auswerten
/etc/perf/daily/Automatische topas-Aufzeichnungen (falls aktiv)

🌐Netzwerk – TCP/IP

ifconfig -aAlle Interfaces mit IP, Netmask, Status
netstat -inKompakte Interface-Übersicht (numerisch)
lsdev -Cc ifKonfigurierte Interfaces (en0, et0, lo0 …)
lsattr -El en0IP-Attribute des Interface
lsattr -El ent0Adapter-Attribute (media_speed, jumbo_frames, chksum_offload)
mktcpip -h aixsrv -a 10.0.0.10 -m 255.255.255.0 -i en0 -g 10.0.0.1 -A noGrundkonfiguration in einem Schritt
chdev -l en0 -a netaddr=10.0.0.10 -a netmask=255.255.255.0 -a state=upIP dauerhaft ändern
chdev -l en0 -a mtu=9000MTU setzen (Jumbo Frames – Switch muss mitspielen)
ifconfig en0 alias 10.0.0.11 netmask 255.255.255.0Zweite IP (Alias) temporär hinzufügen
chdev -l en0 -a alias4=10.0.0.11,255.255.255.0Alias dauerhaft (bootpersistent)
ifconfig en0 down / up / detachInterface deaktivieren / aktivieren / komplett lösen
netstat -rnRouting-Tabelle (numerisch)
route add default 10.0.0.1Default-Route temporär setzen
chdev -l inet0 -a route=net,-hopcount,0,,0,10.0.0.1Default-Route dauerhaft in ODM
route add -net 192.168.5.0 -netmask 255.255.255.0 10.0.0.254Statische Route hinzufügen
netstat -an | grep LISTENLauschende Ports
netstat -Aan | grep 22Verbindungen zu Port 22 inkl. PCB-Adresse
rmsock <pcb> tcpcbProzess zu einem Socket/Port ermitteln
arp -a / arp -d 10.0.0.5ARP-Cache anzeigen / Eintrag löschen
ping -c 3 host / traceroute hostErreichbarkeit / Pfad prüfen
iptrace -a -i en0 /tmp/ip.tracePaketmitschnitt starten – Stop mit stopsrc -s iptrace
ipreport /tmp/ip.trace > /tmp/ip.txtMitschnitt lesbar aufbereiten
tcpdump -i en0 -s 0 -w /tmp/dump.pcapMitschnitt für Wireshark (falls installiert)

EtherChannel / Link Aggregation

lsdev -Cc adapter | grep entPhysische und virtuelle Ethernet-Adapter
mkdev -c adapter -s pseudo -t ibm_ech -a adapter_names=ent0,ent1 -a mode=8023adEtherChannel (LACP) anlegen
lsattr -El ent4EtherChannel-Attribute (mode, backup_adapter, netaddr)
entstat -d ent4 | grep -i activeAktiven Kanal / Failover-Status prüfen
/usr/lib/methods/ethchan_config -f ent4Manuelles Failover auf Backup-Adapter erzwingen
Wichtige Dateien: /etc/hosts, /etc/resolv.conf, /etc/netsvc.conf (Reihenfolge Namensauflösung), /etc/services, /etc/inetd.conf, /etc/rc.tcpip.

📡NFS, Namensauflösung & Remote-Zugriff

NFS – Server

lssrc -g nfsStatus aller NFS-Subsysteme
mknfsexp -d /export/data -t rw -BExport anlegen, sofort und dauerhaft aktiv
exportfs -a / exportfs -u /export/dataAlle Exporte aktivieren / einen zurücknehmen
exportfs -vAktive Exporte mit Optionen anzeigen
rmnfsexp -d /export/data -BExport entfernen
showmount -aWelche Clients haben gemountet

NFS – Client

showmount -e nfsserverVerfügbare Exporte eines Servers anzeigen
mount nfssrv:/export/data /mntTemporär mounten
mknfsmnt -f /mnt -d /export/data -h nfssrv -A -t rw -w bgDauerhaften NFS-Mount anlegen (Autostart)
mount -o vers=3,hard,intr,bg nfssrv:/data /mntMount mit typischen Optionen
nfsstat -c / -sClient-/Server-Statistik (Retransmits prüfen)
rpcinfo -p nfssrvRPC-Dienste des Servers prüfen (portmapper, nfs, mountd)

DNS & Zeit

host aixsrv / nslookup aixsrvNamensauflösung testen
cat /etc/resolv.confNameserver und Suchdomains
cat /etc/netsvc.confReihenfolge: hosts = local, bind
lssrc -s xntpd; ntpq -pNTP-Status und Peers
ntpdate -d timeserverZeitabgleich testen (ohne zu setzen)
chtz / echo $TZZeitzone prüfen/ändern (/etc/environment)

SSH & Dateitransfer

lssrc -s sshd; stopsrc -s sshd; startsrc -s sshdSSH-Daemon verwalten
ssh-keygen -t rsa -b 4096Schlüsselpaar erzeugen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keysPublic Key hinterlegen (Rechte 600 / .ssh 700!)
scp -p datei user@host:/pfad/Datei kopieren mit Zeitstempel
rsync -avz --progress /src/ user@host:/dst/Inkrementell synchronisieren (falls installiert)
sftp user@hostInteraktiver, verschlüsselter Transfer

👤User, Gruppen & Berechtigungen

lsuser -a id home shell ALLAlle User mit ausgewählten Attributen
lsuser -f reneAlle Attribute eines Users im Klartext
mkuser -a id=5001 pgrp=staff home=/home/rene shell=/usr/bin/ksh reneUser anlegen
chuser groups=staff,dba reneGruppenmitgliedschaften setzen
chuser login=false account_locked=true reneAccount sperren
chuser fsize=-1 nofiles=10240 oracleLimits setzen (unbegrenzte Dateigröße, mehr FDs)
rmuser -p reneUser samt Security-Einträgen löschen (Home bleibt)
passwd rene / pwdadm renePasswort setzen (pwdadm ohne Kenntnis des alten)
pwdadm -c reneFlag ADMCHG löschen (kein Zwangswechsel beim Login)
chuser maxage=13 minage=1 minlen=8 histsize=8 renePasswort-Policy je User
lsgroup ALL / lsgroup -f dbaGruppen anzeigen
mkgroup -a id=2001 users=rene,oracle dbaGruppe anlegen mit Mitgliedern
chgroup users=rene,tom dba / rmgroup dbaMitglieder ändern / Gruppe löschen
id / groups / whoamiEigene IDs und Gruppen
su - oracleBenutzerwechsel mit vollem Environment
usrck -y ALL; grpck -y ALL; pwdck -y ALLKonsistenzprüfung der Security-Dateien
chsec -f /etc/security/login.cfg -s usw -a logindelay=5Systemweite Login-Einstellungen ändern

Rechte, ACLs & RBAC

chmod 750 datei / chmod g+s dirRechte setzen / SetGID auf Verzeichnis
chown user:group dateiEigentümer und Gruppe ändern (-R rekursiv)
umask 022Standardrechte für neue Dateien
aclget datei / acledit dateiAIXC-ACL anzeigen / bearbeiten
aclput -i acl.txt dateiACL aus Datei setzen
setsecattr / lssecattr -c ALLRBAC: Kommando-Berechtigungen
lsrole ALL; mkrole; chuser roles=isso reneRBAC-Rollen verwalten und zuweisen
swrole issoIn eine Rolle wechseln
visudo / sudo -lsudo-Konfiguration (AIX Toolbox), eigene Rechte prüfen

Anmeldeüberwachung

who / w / usersAktuell angemeldete User
last | head -20Letzte Anmeldungen
lastlogin / lsuser -a time_last_login ALLLetzter Login je User
who /etc/security/failedloginFehlgeschlagene Anmeldeversuche
>/etc/security/failedloginFailedlogin-Datei leeren (wächst sonst unbegrenzt)
audit start / audit query / audit shutdownAIX-Audit-Subsystem steuern
Security-Dateien: /etc/passwd, /etc/group, /etc/security/passwd, /etc/security/user, /etc/security/limits, /etc/security/login.cfg. Änderungen möglichst über die ch*-Kommandos, nicht per Editor.

🚨Fehleranalyse: errpt, Logs & Dumps

errptFehlerübersicht, neueste zuerst
errpt -a | moreDetaillierte Einträge mit Beschreibung und Empfehlung
errpt -aj <IDENTIFIER>Details zu einem konkreten Fehlereintrag
errpt -s 0818000026Ab Zeitpunkt MMTTHHMMJJ (hier: 18.08. 00:00, 2026)
errpt -d HNur Hardware-Fehler (-d S = Software)
errpt -T PERMNur permanente Fehler (PERM/TEMP/PEND/PERF/INFO/UNKN)
errpt -N hdisk3Nur Einträge einer Ressource
errclear 30Einträge älter als 30 Tage löschen (errclear 0 = alle)
errlogger "Wartung Change 12345 abgeschlossen"Eigene Meldung ins Errorlog schreiben
/usr/lib/errdemon -lKonfiguration des Error-Daemon (Logdatei, Größe)
/usr/lib/errdemon -s 4194304Errorlog auf 4 MB vergrößern
Erste Schritte bei Störungen: errpt | head -30errpt -a für die auffälligen IDs → alog -o -t bootlspath/lsvg -o/df -gtopas.

Logs

alog -o -t bootBoot-Log lesen (Fehler beim Systemstart)
alog -o -t consoleConsole-Log
alog -LAlle verfügbaren alog-Typen
tail -50 /var/adm/ras/errlog.bakGesicherte Errorlog-Kopie
cat /var/adm/ras/bootlogRohes Boot-Log
tail -f /var/log/syslogSyslog live (Pfad je /etc/syslog.conf)
refresh -s syslogdsyslog.conf neu einlesen
/smit.log /smit.scriptProtokoll aller SMIT-Aktionen (im Home des Users)
/var/adm/ras/conslogKonsolenausgaben

Diagnose & Dumps

diagInteraktive Hardware-Diagnose (Menu)
diag -d hdisk1 -cDiagnose eines Devices im Batch-Modus
sysdumpdev -lDump-Konfiguration (primary/secondary Device, Dumpdir)
sysdumpdev -eGeschätzte Dumpgröße – muss ins Dump-LV passen
sysdumpdev -LInfo zum letzten Systemdump
sysdumpdev -P -p /dev/lg_dumplvPrimary Dump Device dauerhaft setzen
sysdumpstart -pDump manuell erzeugen (System startet neu!)
snap -gcSupport-Datensammlung erzeugen → /tmp/ibmsupt/snap.pax.Z
snap -rAlte snap-Daten löschen (vorher aufräumen!)
snap -aAlles sammeln (groß, benötigt viel Platz in /tmp)
trace -a -o /tmp/trc; trcstop; trcrpt /tmp/trcSystemtrace aufzeichnen und auswerten
dbx -a <pid>An laufenden Prozess anhängen (Analyse von Hängern)
Vor dem IBM-Call: snap -gc ausführen, oslevel -s, errpt -a-Auszug und die betroffene Ressource bereithalten. /tmp braucht dafür mehrere hundert MB frei.

💾Backup & Restore

mksysb – rootvg-Systemsicherung

mksysb -i /backup/mksysb_$(hostname)_$(date +%F)Bootfähiges Systemimage in Datei (-i = image.data neu)
mksysb -ieX /dev/rmt0Auf Band, e = Exclude-Liste beachten, X = /tmp erweitern
/etc/exclude.rootvgAuszuschließende Pfade (regex, z. B. ^./tmp/)
lsmksysb -f /backup/mksysb.imgInhalt eines mksysb-Images prüfen
restorevgfiles -f /backup/mksysb.img ./etc/hostsEinzelne Datei aus mksysb zurückholen
mkszfileErzeugt /image.data (LVM-Struktur für Restore)

savevg – Daten-VGs

savevg -if /backup/datavg.img datavgKomplette VG sichern
savevg -ief /backup/datavg.img datavgMit Exclude-Datei /etc/exclude.datavg
restvg -f /backup/datavg.img hdisk5VG auf Zielplatte wiederherstellen
restvg -r -f /backup/datavg.imgNur LVM-Struktur anlegen, keine Daten
listvgbackup -f /backup/datavg.imgInhalt eines savevg-Images anzeigen

Dateien & Verzeichnisse

tar -cvf /backup/etc.tar /etctar-Archiv erzeugen (-xvf entpacken, -tvf listen)
find /data -print | backup -ivqf /dev/rmt0Backup by name
backup -0 -uf /dev/rmt0 /dataBackup by inode, Level 0 (Vollsicherung)
restore -xvqf /dev/rmt0 ./data/dateiSelektiver Restore
restore -Tvf /backup/imgInhaltsverzeichnis eines Archivs
find /data | cpio -ovC512 > /backup/data.cpiocpio-Sicherung
cpio -idmvC512 < /backup/data.cpiocpio-Restore mit Verzeichnisstruktur
pax -wvf /backup/a.pax /datapax-Archiv (Standard bei AIX-Fixes)
dd if=/dev/lv01 of=/backup/lv01.dd bs=1mRaw-Kopie eines LV

Bandlaufwerke

tctl -f /dev/rmt0 rewindBand zurückspulen
tctl -f /dev/rmt0 statusStatus/Position des Bands
tctl -f /dev/rmt0.1 fsf 1Ein Filemark vorspulen (.1 = no rewind)
tctl -f /dev/rmt0 offlineBand auswerfen
Backup-Routine: Wöchentlich mksysb auf NIM/NFS, täglich savevg der Daten-VGs, vor jedem Change zusätzlich alt_disk_copy von rootvg als schneller Rollback. Restore mindestens einmal jährlich testen – ein ungetestetes Backup ist kein Backup.

🖥NIM – Network Installation Manager

Auf dem NIM-Master

lsnimAlle NIM-Objekte (Master, Clients, Ressourcen)
lsnim -t standaloneAlle Client-Maschinen
lsnim -l aixsrv01Alle Attribute eines Objekts inkl. Cstate
lsnim -c resourcesAlle Ressourcen (lpp_source, spot, mksysb, bosinst_data)
nim -o define -t standalone -a platform=chrp -a netboot_kernel=64 \
  -a if1="netz aixsrv01 0" aixsrv01
Client definieren
nim -o remove aixsrv01Objekt entfernen
nim -o define -t lpp_source -a source=/dev/cd0 -a location=/export/lpp/aix73 lpp_aix73lpp_source anlegen
nim -o define -t spot -a source=lpp_aix73 -a location=/export/spot spot_aix73SPOT (Boot-Image) erzeugen
nim -o check spot_aix73Ressource prüfen und Boot-Images neu bauen

Installation & Wartung

nim -o bos_inst -a source=rte -a lpp_source=lpp_aix73 -a spot=spot_aix73 aixsrv01Netzinstallation vorbereiten
nim -o bos_inst -a source=mksysb -a mksysb=mksysb_srv01 -a spot=spot_aix73 aixsrv01Restore aus mksysb über Netz
nim -o cust -a lpp_source=lpp_aix73 -a fixes=update_all aixsrv01TL/SP-Update über NIM verteilen
nim -o cust -a lpp_source=lpp_aix73 -a filesets="openssh.base" aixsrv01Einzelne Filesets installieren
nim -o define -t mksysb -a server=master -a location=/export/mksysb/srv01 mksysb_srv01mksysb als NIM-Ressource registrieren
nim -o reset -F aixsrv01; nim -Fo deallocate -a subclass=all aixsrv01Hängenden Client zurücksetzen und Ressourcen freigeben
nim -o showlog -a log_type=boot aixsrv01Boot-/Installations-Log des Clients
nim -o lslpp aixsrv01Fileset-Stand eines Clients remote abfragen
nimadm -c aixsrv01 -s spot_aix73 -l lpp_aix73 -d hdisk1 -YMigration per alt_disk mit minimaler Downtime

Auf dem NIM-Client

niminit -a name=aixsrv01 -a master=nimmaster -a pif_name=en0Client beim Master registrieren
lsnim -l masterMaster-Definition auf dem Client prüfen
nimclient -l -LZugewiesene Ressourcen anzeigen
nimclient -o cust -a lpp_source=lpp_aix73 -a fixes=update_allUpdate vom Client aus anfordern
Cstate/Mstate: Vor jeder Aktion lsnim -l client prüfen – steht Cstate nicht auf „ready for a NIM operation“, zuerst nim -o reset -F und deallocate ausführen.

🔗PowerHA / SystemMirror (Basics)

clmgr query clusterCluster-Konfiguration anzeigen (modernes Interface)
clmgr query node / clmgr query resource_groupKnoten bzw. Resource Groups auflisten
clmgr -v query rg RG_DBDetails einer Resource Group
clRGinfo -vRG-Status je Knoten (ONLINE/OFFLINE) – wichtigster Check
lssrc -ls clstrmgrESCluster-Manager-Status (ST_STABLE ist gut)
clstat -oCluster-Übersicht (benötigt clinfoES)
cldumpSnapshot des aktuellen Cluster-Zustands
cltopinfoTopologie: Knoten, Netze, Interfaces, Repository Disk
clmgr move rg RG_DB node=node2Resource Group auf anderen Knoten schwenken
clmgr online rg RG_DB / clmgr offline rg RG_DBRG starten / stoppen
clmgr start node node1 / clmgr stop node node1Cluster-Services eines Knotens starten/stoppen
clmgr stop node node1 WHEN=now MANAGE=unmanageCluster-Services stoppen, Ressourcen online lassen
clmgr verify clusterVerify & Synchronize (immer nach Änderungen)
clmgr add snapshot mysnapKonfigurations-Snapshot sichern
lscluster -m / -i / -dCAA: Knoten / Interfaces / Repository-Disk
smitty sysmirrorMenügeführte PowerHA-Administration
/var/hacmp/log/hacmp.outWichtigstes Log für Event-/Script-Fehler
/var/hacmp/adm/cluster.logZusammenfassung der Cluster-Events
Regel: In einem Cluster niemals VGs/Filesystems direkt mit varyonvg/mount anfassen – immer über PowerHA (C-SPOC bzw. clmgr), sonst droht Datenkorruption durch Doppelzugriff.

🧮Virtualisierung: LPAR, DLPAR, WPAR & VIOS

DLPAR & Ressourcen

lparstat -i | grep -E "Memory|Processor|Capacity"Zugewiesene Ressourcen und Grenzwerte (min/desired/max)
cfgmgrNach DLPAR-Zuweisung neuer Adapter erforderlich
rmcstat / lssrc -a | grep rsctRMC-Status prüfen – Voraussetzung für DLPAR von der HMC
/usr/sbin/rsct/bin/rmcctrl -z; rmcctrl -A; rmcctrl -pRMC neu starten (häufigste DLPAR-Störung)
lsrsrc IBM.ManagementServerVerbundene HMCs anzeigen
chdev -l mem0 -a ...Memory-DLPAR erfolgt von der HMC, nicht aus AIX

WPAR – Workload Partitions

lswpar / lswpar -L wpar1WPARs auflisten / Details
mkwpar -n wpar1 -N address=10.0.0.20 interface=en0System-WPAR anlegen
startwpar wpar1 / stopwpar wpar1WPAR starten / stoppen
clogin wpar1In die WPAR-Konsole wechseln
rmwpar -F wpar1WPAR entfernen
chwpar -R active=yes -R CPU=10%-30%,50% wpar1Ressourcenlimits setzen

VIOS (padmin-Shell)

ioslevelVIOS-Version anzeigen
lsmap -allAlle vSCSI-Mappings (vhost → hdisk → Client)
lsmap -all -npivNPIV-Mappings (vfchost → fcs)
lsdev -virtualVirtuelle Devices des VIOS
mkvdev -vdev hdisk10 -vadapter vhost2 -dev vtd_srv01Platte an Client-LPAR mappen
rmvdev -vtd vtd_srv01Mapping entfernen
vfcmap -vadapter vfchost0 -fcp fcs1NPIV-Adapter an physischen FC-Port binden
lsnportsNPIV-fähige Ports und freie Kapazität
viosbr -backup -file /home/padmin/viosbr_$(date +%F)VIOS-Konfiguration sichern
updateios -commit; updateios -accept -install -dev /mntVIOS-Update einspielen
oem_setup_envAus padmin in die root-Shell wechseln (nur wenn nötig)
Dual-VIOS-Regel: Immer nur einen VIOS warten. Vorher auf dem Client lspath prüfen – alle Pfade über den zweiten VIOS müssen Enabled sein.

📄Wichtige Dateien & Verzeichnisse

/etc/filesystemsMount-Definitionen (statt fstab)
/etc/inittabStartreihenfolge, Autostart-Einträge
/etc/rc.tcpipStart der Netzwerkdienste
/etc/environmentSystemweite Umgebungsvariablen (TZ, LANG, PATH)
/etc/profile, /etc/security/.profileLogin-Umgebung für alle User
/etc/motdBegrüßungstext nach dem Login
/etc/hosts, /etc/resolv.conf, /etc/netsvc.confNamensauflösung
/etc/security/limitsRessourcen-Limits je User (fsize, nofiles, data)
/etc/security/userUser-Attribute und Passwort-Policies
/etc/exclude.rootvgAusschlussliste für mksysb
/var/adm/ras/errlogBinäres Errorlog (nur über errpt lesen)
/var/adm/ras/bootlog, /var/adm/ras/conslogBoot- und Konsolen-Log
/var/spool/cron/crontabs/Crontabs aller User
/var/hacmp/log/hacmp.outPowerHA-Eventlog
/usr/lpp/<produkt>Installationsverzeichnis von Filesets
/dev/hdiskX, /dev/rhdiskXBlock- bzw. Raw-Device einer Platte
~/smit.log, ~/smit.scriptSMIT-Protokoll und generierte Kommandos

Standard-LVs in rootvg

hd5Boot Logical Volume (BLV)
hd6Primärer Paging Space
hd8JFS2-Log der rootvg
hd4 / hd2 / hd9var / hd3 / hd1 / hd10opt / hd11admin/ · /usr · /var · /tmp · /home · /opt · /admin
lg_dumplvDump Logical Volume

🔧SMIT, Shell-Tipps & Praxis-Workflows

SMIT

smittyASCII-Menüoberfläche (empfohlen gegenüber smit)
smitty lvm / fs / tcpip / user / installpDirekt in den passenden Fastpath springen
smitty mksysb / chfs / mkvg / update_allHäufig genutzte Fastpaths
F6 im DialogZeigt das Kommando, das SMIT ausführen würde – ideal zum Lernen
F3 / F10 / F4Zurück / Beenden / Auswahlliste
grep -v "^#" ~/smit.scriptSMIT-Aktionen als Kommandos nachlesen und skripten

Shell & Textwerkzeuge

set -o vivi-Editiermodus in der ksh (Esc + k für History)
which cmd / whence -v cmd / type cmdPfad und Typ eines Kommandos
man -k begriffManpages nach Stichwort durchsuchen
grep -n -i "muster" dateiSuche mit Zeilennummern, ohne Groß-/Kleinschreibung
sed -e 's/alt/neu/g' datei > neu.txtTextersetzung
awk '{print $1, $5}' dateiSpalten extrahieren
for i in $(lsvg -o); do lsvg -l $i; doneSchleife über alle aktiven VGs
nohup script.sh > /tmp/out 2>&1 &Langlaufende Skripte abgekoppelt starten
script /tmp/session.logKomplette Terminalsitzung protokollieren (für Change-Nachweis)
tee -a /tmp/logAusgabe gleichzeitig anzeigen und mitschreiben
compress / uncompress / gzip -9Komprimieren (AIX-Fixes nutzen meist .Z)

Workflow: Neues Filesystem auf neuer LUN

cfgmgr -l fcs0 && cfgmgr -l fcs1     # LUN einlesen
lspv | grep None                     # neue Platte finden -> hdisk7
lspath -l hdisk7                     # alle Pfade Enabled?
chdev -l hdisk7 -a algorithm=shortest_queue -a reserve_policy=no_reserve \
                -a queue_depth=32
extendvg datavg hdisk7               # oder: mkvg -S -y newvg -s 128 hdisk7
crfs -v jfs2 -g datavg -m /data2 -a size=100G -A yes
mount /data2 && df -g /data2

Workflow: Filesystem ist voll

df -g                                        # betroffenes FS
du -sm /var/* | sort -rn | head              # Verursacher finden
fuser -dV /var                               # geloeschte, offene Dateien?
lsvg datavg | grep "FREE PPs"                # ist Platz in der VG?
chfs -a size=+5G /var                        # online erweitern
df -g /var

Workflow: Change-Vorbereitung (Standard)

oslevel -s > /tmp/pre_change.txt
lppchk -v >> /tmp/pre_change.txt        # muss leer sein
errpt | head -30 >> /tmp/pre_change.txt
lsvg -o; lsvg rootvg | grep STALE       # STALE PPs = 0
df -g; lsps -a
mksysb -i /backup/mksysb_pre_change     # oder alt_disk_copy -B -d hdisk1
bootlist -m normal -o                   # Bootreihenfolge dokumentieren
Merksatz: Auf AIX ist fast alles über die ODM abgebildet. Temporäre Änderungen (ifconfig, mount) sind nach dem Reboot weg – dauerhaft wird es erst über chdev, chfs, mktcpip oder SMIT.