Keine Treffer – Suchbegriff anpassen.
💻System- & Hardware-Informationen
| uname -a | Alles auf einmal: OS, Hostname, Release, Maschinentyp |
| uname -r | OS-Release: B.11.31 = 11i v3, B.11.23 = 11i v2, B.11.11 = 11i v1 |
| uname -m | Architektur: ia64 (Integrity) oder 9000/800 (PA-RISC) |
| uname -i | Numerische Maschinen-ID (Lizenz-/Support-Bindung) |
| model | Hardware-Modell, z. B. ia64 hp server rx2660 |
| machinfo | Nur Integrity: CPUs, Cores, RAM, Firmware, Seriennummer, Zellen |
| machinfo | grep -i -e memory -e "Number of" | Schnell RAM-Größe und CPU-Anzahl ablesen |
| /opt/ignite/bin/print_manifest | Kompletter Systemsteckbrief (HW, OS, Patches, LVM, Netz) |
| getconf MACHINE_MODEL | Modellbezeichnung wie model, skriptfreundlich |
| getconf KERNEL_BITS | Kernel 32/64 Bit (HW_CPU_SUPP_BITS = was die CPU kann) |
| getconf CPU_VERSION | CPU-Typ als Zahl (Itanium/PA-RISC-Generation) |
| swlist -l bundle | grep -i -e HPUX -e OE | Installiertes Operating-Environment-Bundle (BOE/VSE/DCOE/HPUX11i…) |
| ioscan -fn | Komplette Hardware-Inventur mit Gerätedateien |
| ioscan -kfn | Nur aus dem Kernel-Cache lesen – schnell, kein Bus-Scan |
| ioscan -funC disk | Alle Platten (Legacy-Sicht) mit Gerätedateien |
| ioscan -funC tape / -funC lan / -funC fc | Bänder / Netzwerkkarten / FC-Adapter |
| ioscan -m dsf | 11.31: Zuordnung persistent DSF ↔ Legacy-DSF |
| ioscan -N -funC disk | 11.31: agile Sicht (/dev/disk/diskX) |
| setboot | Primärer/alternativer Bootpfad, Autoboot-Flags |
| bdf | Filesystem-Belegung (HP-UX-Pendant zu df -k) |
| swapinfo -tam | Swap-Übersicht in MB inkl. Summenzeile |
| lanscan | Netzwerkkarten mit PPA, MAC, Interface-Name |
| who -r / who -b | Aktueller Runlevel / letzter Bootzeitpunkt |
| uptime; date | Laufzeit, Load Average, Systemzeit |
| cat /etc/issue; cat /etc/motd | Pre-Login-Banner und Begrüßungstext |
| hostname; uname -n | Hostname (dauerhaft über set_parms hostname) |
11i v2 abweichend: machinfo existiert nur auf Integrity.
Auf PA-RISC-Systemen (11.11/11.23) RAM über
grep -i Physical /var/adm/syslog/syslog.log oder
echo "phys_mem_pages/D" | adb -k /stand/vmunix /dev/kmem (Wert × 4 KB) ermitteln.
Praxis: Vor jedem Change einen Steckbrief ziehen:
print_manifest > /tmp/manifest_$(date +%F).txt plus
swlist -l bundle, bdf, vgdisplay -v und setboot wegsichern.
⏻Boot, Shutdown & Runlevel
Bootpfade & Bootbereich
| setboot | Zeigt PRIMARY / HA ALTERNATE / ALTERNATE Bootpfad und Flags |
| setboot -p 0/1/1/0.0x0 | Primären Bootpfad setzen (Hardware-Pfad der Bootplatte) |
| setboot -a 0/1/1/0.0x1 | Alternativen Bootpfad setzen (Mirror-Platte!) |
| setboot -b on / -b off | Autoboot ein-/ausschalten |
| setboot -s on | Autosearch ein-/ausschalten (PA-RISC) |
| setboot -v | Ausführliche Ausgabe inkl. EFI-Bootoptionen (Integrity) |
| lifls -l /dev/rdsk/c0t0d0 | Inhalt des LIF-Bereichs einer PA-RISC-Bootplatte listen |
| mkboot /dev/rdsk/c1t2d0 | Bootbereich (LIF/EFI) auf Platte schreiben |
| mkboot -a "hpux" /dev/rdsk/c1t2d0 | AUTO-Datei setzen (Default-Bootstring) |
| mkboot -a "hpux -lq" /dev/rdsk/c1t2d0 | Boot auch ohne Quorum erlauben (2-Platten-Mirror in vg00) |
| lvlnboot -v /dev/vg00 | Boot-/Root-/Swap-/Dump-LV-Zuordnung der vg00 prüfen |
| lvlnboot -R /dev/vg00 | BDRA neu aufbauen – nach jeder Änderung an vg00 Pflicht |
| lvlnboot -b /dev/vg00/lvol1 | LV als Boot-LV (/stand) eintragen |
| lvlnboot -r /dev/vg00/lvol3 | Root-LV eintragen |
| lvlnboot -s /dev/vg00/lvol2 | Swap-LV eintragen (-d = Dump-LV) |
| lvrmboot -d /dev/vg00/lvol2 | Eintrag (hier Dump) wieder entfernen |
Shutdown & Reboot
| shutdown -ry 0 | Sofortiger Reboot ohne Rückfrage (Standard bei Wartung) |
| shutdown -hy 0 | Herunterfahren und anhalten/ausschalten |
| shutdown -ry 600 "Wartung" | Reboot in 600 Sekunden mit Meldung an alle User |
| shutdown 0 | In den Single-User-Modus wechseln (Runlevel s) |
| reboot -h / reboot -q | Direkter Reboot ohne shutdown-Skripte (nur im Notfall) |
| cat /etc/shutdownlog | Wer hat wann und warum neu gestartet – erste Anlaufstelle |
Runlevel, init & Startskripte
| who -r | Aktueller Runlevel (Standard-Multiuser = 3) |
| init 3 / init s | Runlevel wechseln / Single-User |
| /etc/inittab | Default-Runlevel (init:3:initdefault:) und Gettys |
| init q | inittab neu einlesen ohne Reboot |
| /sbin/init.d/ | Start-/Stop-Skripte aller Dienste |
| /sbin/init.d/nfs.server start|stop | Dienst manuell starten/stoppen |
| /sbin/rc0.d … /sbin/rc4.d | Symlinks je Runlevel: S###name = Start, K###name = Kill |
| /etc/rc.config.d/ | Konfigurationsvariablen der Dienste (z. B. NFS_SERVER=1) |
| grep -i xntpd /etc/rc.config.d/netdaemons | Autostart eines Dienstes prüfen/ändern |
| cat /var/adm/rc.log | Protokoll aller Startskripte – wichtigstes Boot-Log! |
| /stand/vmunix, /stand/system | Laufender Kernel und Kernel-Konfigurationsdatei |
| /stand/bootconf | Bootplatte für Ignite/Update (l /dev/dsk/c0t0d0s2) |
Firmware-Prompt: EFI (Integrity) und BCH (PA-RISC)
| Shell> fs0: | EFI: auf die Bootplatte wechseln, dann cd \EFI\HPUX |
| fs0:\EFI\HPUX> hpux | Normaler Bootvorgang von der EFI-Shell |
| hpux -is | Boot in den Single-User-Modus (Root-Passwort vergessen, fsck) |
| hpux -lq | Boot ohne LVM-Quorum (eine Mirror-Hälfte fehlt) |
| hpux -lm | Boot in den LVM-Maintenance-Modus (vg00 nicht aktiviert) |
| hpux /stand/vmunix.prev | Alten Kernel booten, wenn der neue nicht startet |
| Shell> map -r | EFI: Geräte-Mapping neu aufbauen (map = anzeigen) |
| BCH> SEA | PA-RISC: bootfähige Geräte suchen |
| BCH> PATH | Bootpfade anzeigen (PATH PRI <pfad> = setzen) |
| BCH> BO PRI | Vom primären Pfad booten; „Interact with IPL? Y“ für ISL |
| ISL> hpux -is | PA-RISC: Single-User-Boot vom ISL-Prompt |
| Ctrl-B | Von der Konsole zum MP/GSP wechseln (co = Konsole, sl = Logs) |
Root-Passwort vergessen: Single-User booten (hpux -is),
danach mount -a, passwd root, sync, shutdown -ry 0.
Bei Trusted Systems zusätzlich /tcb/files/auth/r/root beachten.
Nach jeder vg00-Änderung: lvlnboot -R /dev/vg00,
lvlnboot -v /dev/vg00 kontrollieren, bei neuer/getauschter Bootplatte zusätzlich
mkboot und setboot -a – sonst bootet der Mirror nicht.
📦Software Distributor (SD-UX) & Patches
Abfragen
| swlist | Installierte Produkte/Bundles auf oberster Ebene |
| swlist -l bundle | Nur Bundles (OE, Quality Pack, Patch Bundles) |
| swlist -l product | Alle Produkte einzeln |
| swlist -l fileset OnlineJFS | Filesets eines Produkts |
| swlist -l file OnlineJFS | Alle Dateien eines Produkts |
| swlist -l patch | Alle installierten Patches (PHKL/PHCO/PHNE/PHSS) |
| swlist -l patch | grep PHKL_43xxx | Ist ein bestimmter Patch installiert? |
| swlist -a revision -l product Base-VXFS | Version eines Produkts gezielt abfragen |
| swlist -l fileset -a state | grep -v configured | Nicht konfigurierte Filesets aufspüren |
| swlist -a description -l patch PHSS_12345 | Kurzbeschreibung eines Patches |
| swlist -d -s /var/depot | Inhalt eines Depots anzeigen (ohne Installation) |
| swlist -s /dev/rdisk/disk3 -d | Inhalt eines Tape-/Geräte-Depots listen |
| swverify \* | Integrität aller installierten Produkte prüfen |
| swverify OnlineJFS | Einzelnes Produkt prüfen (Dateien, Rechte, Abhängigkeiten) |
Installieren & Entfernen
| swinstall | Interaktive TUI – gut zum Blättern in Depots |
| swinstall -p -s /var/depot/patches.depot \* | Preview! -p ändert nichts, schreibt aber das Log |
| swinstall -s /var/depot/patches.depot \* | Alles aus dem Depot installieren |
| swinstall -s srv:/depot/qpk1131 -x autoreboot=true \* | Von Netz-Depot installieren, Reboot automatisch |
| swinstall -s /depot -x patch_match_target=true \* | Nur Patches, die zur installierten Software passen |
| swinstall -s /depot -x autoreboot=true -x mount_all_filesystems=false \* | Ohne mount -a installieren (Cluster, NFS-Probleme) |
| swinstall -s /depot -x reinstall=true PHKL_12345 | Bereits installierten Patch erneut einspielen |
| swremove PHKL_12345 | Patch zurücknehmen (Original wird wiederhergestellt) |
| swremove -x autoreboot=true PHKL_12345 | Kernel-Patch entfernen inkl. Reboot |
| swremove -d \* @ /var/depot | Depot-Inhalt (nicht das System!) leeren |
| swcopy -s /dev/dsk/c0t0d0 \* @ /var/depot | Medium/Depot in lokales Depot kopieren |
| swreg -l depot /var/depot | Depot registrieren, damit Clients es sehen |
| swreg -u -l depot /var/depot | Registrierung aufheben |
| swjob | SD-Jobs auflisten (auch abgebrochene) |
| swjob -a log <jobid> | Log eines Jobs ansehen – hier steht die echte Fehlerursache |
| swacl -l host | Zugriffsrechte für SD anzeigen (-M zum Ändern) |
| /usr/sbin/swagentd -r | SD-Daemon neu starten (bei „cannot connect“-Fehlern) |
| update-ux -s /depot/1131 HPUX11i-DC-OE | OS-Update auf neuen Release-Stand (nicht swinstall!) |
Patch-Verwaltung
| show_patches | Übersichtliche Patchliste (aus den Patch-Tools) |
| cleanup -p | Preview: welche superseded Patches könnten weg? |
| cleanup -c 1 | Committen: Save-Bereiche überholter Patches löschen (Platz in /var) |
| swlist -l bundle | grep -i QPK | Quality-Pack-Stand prüfen (QPKBASE / QPKAPPS) |
| swlist -l bundle | grep -i -e HWEnable -e FEATURE | Hardware-Enablement- und Feature-Bundle-Stand |
| /var/adm/sw/swagent.log | Zentrales SD-Log – bei jedem Fehler zuerst hier schauen |
| /var/adm/sw/swinstall.log | Protokoll der letzten Installation (auch Preview) |
| /var/adm/sw/swremove.log, swverify.log | Logs von Deinstallation und Verifikation |
| /var/adm/sw/products/ | Installed Products Database (IPD) – nie manuell ändern |
| /var/spool/sw | Standard-Depotverzeichnis |
Patch-Kennungen: PHKL = Kernel (Reboot nötig),
PHCO = Commands/Libraries, PHNE = Netzwerk,
PHSS = Subsystem (Compiler, X11, Serviceguard). Kritisch für Ausfallzeit-Planung:
nur PHKL-Patches erzwingen zwingend einen Reboot.
Bewertung vor dem Change: Mit dem HP-UX Patch Assessment /
Software Assistant (swa report, swa get) lässt sich gegen den
aktuellen Katalog prüfen, welche Security- und Critical-Patches fehlen. Als Eingabe dient
ein swlist-Inventar des Zielsystems.
Immer erst Preview: swinstall -p laufen lassen und
/var/adm/sw/swinstall.log auf ERROR/WARNING prüfen.
Ohne -x autoreboot=true bricht die Installation bei Kernel-Patches ab; mit
true startet die Maschine ohne weitere Rückfrage neu.
🧠Kernel-Konfiguration & Tuning
11i v3 (B.11.31): kctune / kcmodule
| kctune | Alle Tunables mit aktuellem und Default-Wert |
| kctune | grep -i maxfiles | Gezielt nach einem Tunable suchen |
| kctune -v maxfiles_lim | Details: Wertebereich, Default, ob dynamisch änderbar |
| kctune maxfiles_lim=65536 | Tunable sofort setzen (wenn dynamisch) |
| kctune -B nproc=8192 | Erst beim nächsten Boot aktiv werden lassen |
| kctune -h shmmax=8589934592 | Wert „halten“ (hold) – wird von Updates nicht überschrieben |
| kctune -S /stand/backup maxfiles | Wert in einer gespeicherten Konfiguration abfragen/setzen |
| kctune -D | Nur Tunables anzeigen, die vom Default abweichen |
| kcusage | Aktuelle Nutzung gegenüber dem Tunable-Limit (z. B. nproc, nfile) |
| kcusage -w 80 | Nur Ressourcen über 80 % Auslastung anzeigen |
| kcmodule | Alle Kernel-Module mit Zustand (static/loaded/unused) |
| kcmodule vxfs | Zustand eines Moduls abfragen |
| kcmodule krm=loaded | Modul dynamisch laden |
| kcmodule -B modul=static | Modul fest in den Kernel des nächsten Boots einbinden |
| kconfig -l | Gespeicherte Kernel-Konfigurationen auflisten |
| kconfig -s vor_change | Aktuelle Konfiguration unter Namen sichern |
| kconfig -l -v vor_change | Inhalt einer gesicherten Konfiguration ansehen |
| kconfig -i vor_change | Gesicherte Konfiguration wieder aktivieren (Rollback) |
| kconfig -c neu | Konfiguration kopieren/anlegen (-d = löschen) |
| kcweb | Kernel-Konfiguration im Browser (SMH, Port 2381) |
| /var/adm/kc.log | Protokoll aller Kernel-Konfigurationsänderungen |
| /stand/current, /stand/nextboot, /stand/backup | Laufende, nächste und gesicherte Kernel-Konfiguration |
11i v2 / v1 (B.11.23 / B.11.11): kmtune & mk_kernel
| kmtune -l | Alle Tunables mit Werten anzeigen |
| kmtune -q maxfiles | Einzelnes Tunable abfragen |
| kmtune -s maxfiles_lim=4096 | Tunable in /stand/system setzen |
| kmsystem -q vxfs | Ist ein Treiber/Subsystem im Kernel? (-c Y = einbinden) |
| mk_kernel -s /stand/system | Neuen Kernel bauen |
| kmupdate /stand/build/vmunix_test | Neuen Kernel für den nächsten Boot vormerken |
| /usr/lbin/sysadm/system_prep -s system | Aktuelle Kernel-Konfiguration nach /stand/build/system holen |
# 11i v2: Tunable aendern und Kernel neu bauen
cd /stand/build
/usr/lbin/sysadm/system_prep -s system # Ist-Zustand holen
kmtune -S ./system -s maxdsiz=0x40000000 # z.B. max. Data-Segment 1 GB
mk_kernel -s ./system # baut /stand/build/vmunix_test
cp /stand/system /stand/system.prev # Rollback-Sicherung
kmupdate /stand/build/vmunix_test
shutdown -ry 0 # Kernel wird beim Boot getauscht
Häufig benötigte Tunables
| maxfiles / maxfiles_lim | Soft-/Hard-Limit offener Dateien je Prozess |
| nproc / maxuprc | Prozesse systemweit / je User |
| maxdsiz / maxdsiz_64bit | Max. Data-Segment (typische Ursache für „out of memory“ in Apps) |
| maxssiz / maxtsiz | Max. Stack- bzw. Text-Segment |
| shmmax / shmmni / shmseg | Shared Memory (Oracle/SAP-Voraussetzungen) |
| semmni / semmns / semmnu | Semaphore-Grenzen |
| msgmni / msgtql | Message Queues |
| max_thread_proc / nkthread | Threads je Prozess / systemweit |
| filecache_min / filecache_max | 11.31: Filecache in Prozent des RAM |
| dbc_min_pct / dbc_max_pct | Nur 11.11/11.23: Buffer Cache – in 11.31 ersetzt! |
| swapmem_on | Pseudo-Swap (RAM als Swap-Reserve) ein/aus |
11i v3 vs. 11i v2: Unter 11.31 gibt es kein mk_kernel-Ritual mehr –
die meisten Tunables sind dynamisch. dbc_max_pct existiert nicht mehr; stattdessen
filecache_max (Default 50 %, für Datenbankserver oft auf 5–10 % reduziert).
Rollback-Rezept: Vor Tuning immer
kconfig -s vor_change. Wenn das System nach dem Reboot nicht mehr stabil ist:
in der EFI-Shell hpux /stand/backup/vmunix booten und
kconfig -i vor_change ausführen.
🔌Devices, Agile Addressing & Multipathing
ioscan & Gerätedateien
| ioscan -fn | Voller Scan mit Gerätedateien (dauert, weckt alle Busse) |
| ioscan -kfn | Aus Kernel-Cache – schnell und ohne Bus-Reset |
| ioscan -funC disk | Legacy-Sicht der Platten (/dev/dsk/c#t#d#) |
| ioscan -N -funC disk | Agile Sicht (/dev/disk/diskN) – nur 11.31 |
| ioscan -m dsf | Tabelle persistent DSF ↔ Legacy-DSF |
| ioscan -m lun | LUN-Sicht: alle Pfade je LUN mit Status |
| ioscan -m hwpath | Zuordnung Legacy-Hardware-Pfad ↔ LUN-Hardware-Pfad |
| ioscan -H 0/0/2/0 | Nur einen Hardware-Pfad scannen (z. B. einen FC-Port) |
| ioscan -fnC ctl / -fnC fc / -fnC lan / -fnC tape | Controller / FC / Netz / Bandlaufwerke |
| ioscan -fnkC processor | Erkannte CPUs |
| insf -e | Fehlende Gerätedateien für alle Geräte neu anlegen |
| insf -eC disk | Nur für Plattenklasse |
| insf -H 0/0/2/0.1.2 | Nur für einen Hardware-Pfad |
| rmsf -H 0/0/2/0.1.2 | Gerätedateien eines Pfads entfernen (Karteileichen) |
| rmsf -a /dev/dsk/c5t0d1 | Gerät über Gerätedatei entfernen |
| lssf /dev/rdsk/c0t0d0 | Treiber, Hardware-Pfad und Instanz einer Gerätedatei |
| lssf /dev/rdisk/disk12 | Dasselbe für ein persistentes DSF |
| diskinfo /dev/rdsk/c0t0d0 | Größe, Hersteller, Typ einer Platte |
| diskinfo -v /dev/rdisk/disk12 | Ausführlich inkl. Blockgröße und Rotationsdaten |
| olrad -q | PCI-Slot-Status für Online-Add/Replace |
| olrad -c <slot> / olrad -a <slot> | Slot abschalten (Karte tauschen) / wieder hinzufügen |
scsimgr & agile Verwaltung (nur 11.31)
| scsimgr get_info -D /dev/rdisk/disk12 | Alles zu einer LUN: WWID, Pfade, Zustand, Fehlerzähler |
| scsimgr get_attr -D /dev/rdisk/disk12 -a wwid | Weltweit eindeutige ID (Mapping zum Storage-Array) |
| scsimgr lun_map -D /dev/rdisk/disk12 | Alle Lunpaths dieser LUN mit Status |
| scsimgr get_stat -D /dev/rdisk/disk12 | I/O- und Fehlerstatistik der LUN |
| scsimgr -p get_attr -a wwid -D /dev/rdisk/disk12 | Nur den Wert ausgeben (skriptfreundlich) |
| scsimgr disable -D /dev/rdisk/disk12 | LUN offline nehmen (enable = wieder aktiv) |
| scsimgr replace_wwid -D /dev/rdisk/disk12 | Nach Plattentausch: neue WWID auf altes DSF binden |
| scsimgr set_attr -D /dev/rdisk/disk12 -a load_bal_policy=round_robin | Lastverteilung der LUN ändern |
| scsimgr save_attr -D /dev/rdisk/disk12 | Attributänderung reboot-fest machen |
| scsimgr get_attr -a leg_mpath_enable | Ist native Multipathing für Legacy-DSF aktiv? |
| io_redirect_dsf -d /dev/rdisk/disk12 -n /dev/rdisk/disk30 | DSF-Namen umhängen – rettet LVM nach Plattentausch |
| rmsf -H <lunpath> | Verwaisten Lunpath nach SAN-Umbau entfernen |
Fibre Channel
| ioscan -fnC fc | FC-Adapter und ihre Gerätedateien (/dev/fcd0, /dev/td0) |
| fcmsutil /dev/fcd0 | Linkstatus, Topologie, Speed, N_Port-ID und WWNN/WWPN |
| fcmsutil /dev/fcd0 | grep -i "N_Port Port World Wide Name" | WWPN für das SAN-Zoning ablesen |
| fcmsutil /dev/fcd0 vpd | Firmware-/EFI-Stand des HBA |
| fcmsutil /dev/fcd0 stat | Fehlerzähler: Link Failures, Loss of Sync, CRC-Fehler |
| fcmsutil /dev/fcd0 get remote all | Alle sichtbaren Storage-Ports (Zoning-Kontrolle) |
| fcmsutil /dev/fcd0 reset | HBA zurücksetzen (kurze Unterbrechung!) |
Legacy vs. Agile (11.31): /dev/dsk/c5t0d1 hängt an Controller,
Target und LUN – jeder SAN-Pfad ergibt eine eigene Gerätedatei. Agile DSFs
/dev/disk/disk12 / /dev/rdisk/disk12 beschreiben die LUN unabhängig vom Pfad,
Multipathing macht der Kernel selbst. Neuanlagen immer mit agilen DSFs – Legacy-DSFs sind
in 11.31 nur noch aus Kompatibilität vorhanden und in Nachfolgeversionen entfallen.
Neue SAN-LUN sichtbar machen: Zoning/Mapping im SAN →
ioscan -fnC fc zur Kontrolle → ioscan -N -funC disk (bzw.
ioscan -fnC disk) → insf -e → ioscan -m dsf für die
Zuordnung → diskinfo zur Größenkontrolle.
11i v2: Kein scsimgr, kein agile Addressing, kein natives
Multipathing. Multipathing dort über PVLinks (mehrere /dev/dsk-Pfade im
vgextend) oder Securepath/AutoPath – Reihenfolge im vgextend bestimmt
den Primary Path.
🗃LVM – Physical Volumes & Volume Groups
Physical Volumes
| pvcreate /dev/rdisk/disk12 | Platte für LVM initialisieren (immer Raw-Device!) |
| pvcreate -f /dev/rdisk/disk12 | Erzwingen, wenn schon LVM-Struktur vorhanden war |
| pvcreate -B /dev/rdsk/c1t2d0 | Bootfähige Platte (Platz für LIF/BDRA reservieren) |
| pvdisplay /dev/disk/disk12 | VG, PE-Größe, Total/Free PE, Status |
| pvdisplay -v /dev/disk/disk12 | Zusätzlich die PE-Belegungskarte je LV |
| pvdisplay -l /dev/disk/disk12 | Nur die Liste der LVs auf dieser Platte |
| pvchange -a n /dev/dsk/c5t0d1 | PV-Pfad deaktivieren (PVLinks: vor SAN-Wartung) |
| pvchange -a y /dev/dsk/c5t0d1 | Pfad wieder aktivieren |
| pvchange -S y -z y /dev/dsk/c5t0d1 | Autoswitch auf Primary Path zurück aktivieren |
| pvmove /dev/dsk/c5t0d1 /dev/dsk/c6t0d1 | Alle Daten online auf eine andere Platte verschieben |
| pvmove -n /dev/vgdata/lvdata /dev/disk/disk12 /dev/disk/disk13 | Nur ein LV verschieben |
| pvremove /dev/rdisk/disk12 | LVM-Kennung von der Platte entfernen |
| strings /etc/lvmtab | Klassiker: VG-zu-PV-Zuordnung im Klartext lesen |
| strings /etc/lvmtab_p | 11.31: dasselbe für VGs mit persistenten DSFs |
Volume Groups
| mkdir /dev/vgdata; mknod /dev/vgdata/group c 64 0x010000 | Gruppendatei vor vgcreate anlegen (VG-Version 1.0) |
| ll /dev/*/group | Belegte Minor-Nummern prüfen – müssen eindeutig sein! |
| vgcreate /dev/vgdata /dev/disk/disk12 | VG anlegen (Default PE-Size 4 MB, max. 16 PVs) |
| vgcreate -s 16 -p 32 -e 8000 /dev/vgdata /dev/disk/disk12 | PE-Size 16 MB, max. 32 PVs, max. 8000 PE je PV |
| vgcreate -V 2.2 -s 8 -S 4t /dev/vgdata /dev/disk/disk12 | 11.31: VG-Version 2.x mit max. VG-Größe 4 TB |
| vgdisplay | Alle aktiven VGs mit Kennzahlen |
| vgdisplay -v /dev/vgdata | Inkl. aller LVs und PVs – wichtigstes Diagnosekommando |
| vgdisplay /dev/vgdata | grep -e "Free PE" -e "PE Size" | Freien Platz und PE-Größe schnell ablesen |
| vgextend /dev/vgdata /dev/disk/disk13 | Platte zur VG hinzufügen |
| vgextend /dev/vgdata /dev/dsk/c5t0d1 /dev/dsk/c6t0d1 | PVLinks: erster Pfad = Primary, zweiter = Alternate (11.23) |
| vgreduce /dev/vgdata /dev/disk/disk13 | Platte entfernen (darf keine PE belegt haben) |
| vgreduce -f /dev/vgdata | Fehlende/defekte PVs aus der VG entfernen |
| vgremove /dev/vgdata | Leere VG löschen (danach Gruppendatei löschen) |
| vgchange -a y /dev/vgdata | VG aktivieren |
| vgchange -a n /dev/vgdata | VG deaktivieren (alle FS vorher umounten) |
| vgchange -a e /dev/vgdata | Exklusiv aktivieren – Serviceguard-Paket-VG |
| vgchange -a s /dev/vgdata | Shared aktivieren (SLVM, mehrere Knoten gleichzeitig) |
| vgchange -c y /dev/vgdata | VG als clusterfähig markieren (Serviceguard) |
| vgchange -a y -q n /dev/vgdata | Ohne Quorum aktivieren (eine Mirror-Hälfte fehlt) |
| vgscan -v | /etc/lvmtab aus den PVs rekonstruieren |
| vgscan -N -v | 11.31: /etc/lvmtab_p mit persistenten DSFs neu aufbauen |
| vgsync /dev/vgdata | Alle stale Extents der VG synchronisieren |
| lvmadm -l | 11.31: Grenzwerte aller VG-Versionen (1.0 / 2.0 / 2.1 / 2.2) |
| lvmadm -l /dev/vgdata | Version und Limits einer konkreten VG |
Sichern, Umziehen, Vergrößern
| vgcfgbackup /dev/vgdata | Metadaten sichern → /etc/lvmconf/vgdata.conf |
| vgcfgrestore -l -n /dev/vgdata | Inhalt der Sicherung anzeigen (Vorschau) |
| vgcfgrestore -n /dev/vgdata /dev/rdisk/disk12 | Metadaten auf eine Ersatzplatte zurückschreiben |
| vgexport -v -s -p -m /tmp/vgdata.map /dev/vgdata | Preview: Mapfile erzeugen, VG bleibt erhalten |
| vgexport -v /dev/vgdata | VG aus /etc/lvmtab entfernen (Daten bleiben) |
| vgimport -v -s -m /tmp/vgdata.map /dev/vgdata | VG auf anderem Knoten importieren (-s = per VGID suchen) |
| vgimport -v -N -s -m /tmp/vgdata.map /dev/vgdata | 11.31: mit persistenten DSFs importieren |
| vgmodify -r -a -E /dev/vgdata | Review: passt eine vergrößerte LUN in die VG? (DLE) |
| vgmodify -a -E /dev/vgdata | Online Dynamic LUN Expansion durchführen |
| vgmodify -v -t /dev/vgdata | Offline-Analyse: mögliche max_pv/max_pe-Werte anzeigen |
| vgmodify -n -p 64 /dev/vgdata | max. PV-Anzahl der VG erhöhen (VG deaktiviert) |
Goldene Regel: Nach jeder LVM-Änderung
(vgextend, lvcreate, lvextend, pvmove …)
sofort vgcfgbackup /dev/vgXX laufen lassen. Ohne aktuelles
/etc/lvmconf/*.conf ist ein Plattenausfall kaum reparabel. Und:
/etc/lvmconf mit ins Backup nehmen.
PE-Size-Falle (VG-Version 1.0): Je PV sind maximal 65535 Extents möglich,
Default sind 1016 (über -e erhöhbar). Bei 4 MB PE-Size ergibt das nur ca.
4 GB nutzbar, mit -e 65535 ca. 256 GB. Für 1-TB-LUNs also
vgcreate -s 16 -e 65535 oder besser VG-Version 2.x. Die PE-Size lässt sich
nachträglich nicht ändern – nur durch Neuanlage der VG.
Minor-Nummer: Die Zahl in mknod ... c 64 0x0N0000 muss
systemweit eindeutig sein und passt zur VG-Nummer. Bei VG-Version 2.x legt
vgcreate die Gruppendatei selbst an. In Serviceguard-Clustern gleiche
Minor-Nummern auf allen Knoten verwenden, sonst schlägt der Import fehl.
🧩LVM – Logical Volumes & Mirroring
| lvcreate -L 10240 -n lvdata /dev/vgdata | LV mit 10240 MB anlegen → /dev/vgdata/lvdata |
| lvcreate -l 640 -n lvdata /dev/vgdata | Größe in Extents (LE) statt MB angeben |
| lvcreate -L 10240 -n lvdata -D y -s g /dev/vgdata | Distributed Allocation, Strict = Verteilung über PVs |
| lvcreate -L 10240 -m 1 -n lvdata /dev/vgdata | Gespiegeltes LV anlegen (MirrorDisk/UX erforderlich) |
| lvcreate -n lvdata /dev/vgdata | LV ohne Größe – danach lvextend mit Zielplatte |
| lvdisplay /dev/vgdata/lvdata | Größe, LE/PE, Mirror-Kopien, Allocation, Stale-Zähler |
| lvdisplay -v /dev/vgdata/lvdata | Komplettes LE-zu-PE-Mapping inkl. Mirror |
| lvextend -L 20480 /dev/vgdata/lvdata | Auf 20480 MB vergrößern (absolute Zielgröße!) |
| lvextend -l 1280 /dev/vgdata/lvdata | Auf 1280 Extents vergrößern |
| lvextend -L 20480 /dev/vgdata/lvdata /dev/disk/disk13 | Nur auf einer bestimmten Platte wachsen lassen |
| lvreduce -L 10240 /dev/vgdata/lvdata | LV verkleinern – nur nach FS-Verkleinerung, Datenverlustgefahr |
| lvremove /dev/vgdata/lvdata | LV löschen (Filesystem vorher umounten) |
| lvchange -C y /dev/vgdata/lvdata | Contiguous Allocation (nötig für Boot-/Swap-LVs) |
| lvchange -M n -c n /dev/vgdata/lvdata | Mirror Write Cache aus (Raw-DB-LVs, schneller aber Resync nötig) |
| lvchange -r N /dev/vgdata/lvdata | Bad Block Relocation abschalten (SAN-LUNs üblich) |
| lvchange -t 30 /dev/vgdata/lvdata | I/O-Timeout in Sekunden setzen |
| /dev/vgdata/lvdata | Block-Device (mount) – /dev/vgdata/rlvdata = Raw |
Mirroring (MirrorDisk/UX)
| swlist -l product | grep -i mirror | Ist MirrorDisk/UX (B2491BA) überhaupt lizenziert/installiert? |
| lvextend -m 1 /dev/vg00/lvol3 /dev/dsk/c1t2d0 | LV auf eine zweite Platte spiegeln |
| lvextend -m 2 /dev/vgdata/lvdata | Dreifach-Spiegel (2 zusätzliche Kopien) |
| lvreduce -m 0 /dev/vg00/lvol3 /dev/dsk/c1t2d0 | Spiegel wieder entfernen (Kopie auf dieser Platte) |
| lvsync /dev/vg00/lvol3 | Stale Extents eines LV synchronisieren |
| vgsync /dev/vg00 | Alle LVs einer VG synchronisieren |
| lvdisplay -v /dev/vg00/lvol3 | grep -i stale | Stale-Kontrolle – muss nach Sync 0 sein |
| vgdisplay -v /dev/vg00 | grep -i stale | Stale-Zähler der gesamten VG |
# vg00 komplett spiegeln (Integrity, agile DSFs)
# 1. Zielplatte identisch partitionieren und bootfaehig machen
idisk -wf /tmp/partitionfile /dev/rdisk/disk2 # Layout wie Bootplatte
insf -eC disk
pvcreate -B /dev/rdisk/disk2_p2
mkboot -e -l /dev/rdisk/disk2
vgextend /dev/vg00 /dev/disk/disk2_p2
# 2. Alle LVs der vg00 der Reihe nach spiegeln
for lv in 1 2 3 4 5 6 7 8
do
lvextend -m 1 /dev/vg00/lvol$lv /dev/disk/disk2_p2
done
# 3. Bootinformationen und Bootpfad nachziehen
lvlnboot -R /dev/vg00
lvlnboot -v /dev/vg00 # Boot/Root/Swap/Dump pruefen
setboot -a <HW-Pfad der 2. Platte> # alternativen Bootpfad setzen
setboot # kontrollieren
vgcfgbackup /dev/vg00
Reihenfolge beachten: Beim Spiegeln der vg00 muss
lvol1 (/stand) und das Swap-/Dump-LV contiguous bleiben. Nach dem Spiegeln
zwingend lvlnboot -R und setboot -a – sonst startet das System beim
Ausfall der ersten Platte nicht, obwohl die Daten vorhanden sind.
Kein Online-Verkleinern: lvreduce schneidet das LV hart ab.
Erst das Filesystem verkleinern (VxFS: fsadm -b mit OnlineJFS), dann das LV –
und in beiden Fällen vorher ein Backup ziehen.
💾VxVM – Veritas Volume Manager
| vxdctl mode | Läuft vxconfigd und ist er enabled? |
| vxdctl enable | Konfigurationsdaemon neu einlesen (nach neuen Platten) |
| vxdctl license | Aktive Lizenzen/Features (vxlicrep für Details) |
| vxdisk list | Alle Platten mit DG-Zuordnung und Status |
| vxdisk -o alldgs list | Auch deportierte Diskgroups anzeigen |
| vxdisk list disk_1 | Details einer Platte (Public/Private Region, Pfade) |
| /etc/vx/bin/vxdisksetup -i disk_5 | Platte für VxVM initialisieren |
| /etc/vx/bin/vxdiskunsetup -C disk_5 | VxVM-Kennung entfernen |
| vxdg list | Alle importierten Diskgroups |
| vxdg init datadg datadg01=disk_5 | Neue Diskgroup mit erster Platte anlegen |
| vxdg -g datadg adddisk datadg02=disk_6 | Platte zur Diskgroup hinzufügen |
| vxdg -g datadg rmdisk datadg02 | Platte entfernen |
| vxdg -g datadg free | Freien Platz je Platte der Diskgroup |
| vxdg deport datadg / vxdg import datadg | Diskgroup abgeben / auf anderem Host übernehmen |
| vxdg -tfC import datadg | Import erzwingen und Host-ID lösen (nach Crash) |
| vxdg destroy datadg | Diskgroup endgültig auflösen |
| vxassist -g datadg make vol01 10g | Volume anlegen → /dev/vx/dsk/datadg/vol01 |
| vxassist -g datadg make vol01 10g layout=mirror | Gespiegeltes Volume (layout=stripe ncol=4 für Striping) |
| vxassist -g datadg maxsize | Wie groß könnte ein neues Volume maximal werden? |
| vxassist -g datadg growto vol01 20g | Auf Zielgröße vergrößern |
| vxassist -g datadg growby vol01 5g | Um einen Betrag vergrößern |
| vxassist -g datadg mirror vol01 | Spiegel nachträglich anhängen |
| vxprint -g datadg -ht | Struktur: Volumes, Plexes, Subdisks – Standard-Überblick |
| vxprint -Aht | Alle Diskgroups auf einmal |
| vxinfo -g datadg | Volume-Zustand (Started / Unstartable) |
| vxvol -g datadg startall | Alle Volumes starten (start vol01 für eines) |
| vxtask list | Laufende Hintergrundoperationen (Resync, Relayout) |
| vxedit -g datadg -rf rm vol01 | Volume rekursiv löschen |
| vxdmpadm listctlr all | DMP: Controller und ihr Zustand |
| vxdmpadm getsubpaths dmpnodename=disk_5 | Alle Pfade zu einer LUN mit Status |
| vxdmpadm listenclosure all | Erkannte Storage-Arrays |
LVM oder VxVM? Beide sind auf HP-UX parallel nutzbar, aber nie auf derselben
Platte. LVM ist Pflicht für vg00 (Boot). VxVM lohnt sich für Striping, Online-Relayout
und große Datenbank-Layouts. Die Base-Variante (Base-VxVM) ist im OE enthalten, Features wie
Striping/Mirroring über mehrere Plexes brauchen eine Full-Lizenz –
mit vxdctl license prüfen.
Pfade: Block-Device /dev/vx/dsk/<dg>/<vol>,
Raw-Device /dev/vx/rdsk/<dg>/<vol>. Konfigurationssicherung mit
vxprint -g datadg -hmQq > /etc/vx/datadg.cfg vor jedem Change.
📁Filesysteme (VxFS/JFS) & Swap
Anzeigen & Mounten
| bdf | Belegung aller FS in KB – das df von HP-UX |
| bdf -l | Nur lokale FS (hängende NFS-Mounts blockieren bdf sonst) |
| bdf -i | Inode-Auslastung (VxFS vergibt Inodes dynamisch) |
| bdf /data | Nur ein Filesystem |
| df -k /data | Funktioniert, gibt aber je Aufruf nur ein FS – bdf bevorzugen |
| mount | Alle gemounteten FS mit Optionen |
| mount -v | Ausführlich mit Typ und Mountzeit |
| mount -a | Alle FS aus /etc/fstab mounten |
| mountall -l | Nur lokale FS aus /etc/fstab mounten |
| mount -F vxfs /dev/vgdata/lvdata /data | Einzelnes VxFS mounten |
| mount /data | Mounten anhand des /etc/fstab-Eintrags |
| mount -F vxfs -o largefiles /dev/vgdata/lvdata /data | Dateien > 2 GB erlauben |
| mount -F vxfs -o delaylog,nodatainlog /dev/vgdata/lvdata /data | Typische Performance-Optionen für Anwendungsdaten |
| mount -F vxfs -o mincache=direct,convosync=direct ... | Direct I/O – klassisch für Oracle-Datenfiles |
| mount -F vxfs -o cio /dev/vgdata/lvdata /data | Concurrent I/O (VxFS 5.x + OnlineJFS) |
| mount -o remount /data | Optionen ändern ohne Aushängen (z. B. ro → rw) |
| umount /data | Aushängen (umount -f erzwingen, nur im Notfall) |
| umount -a | Alle nicht-System-FS aushängen |
| fuser -cu /data | Welche PIDs/User blockieren das Filesystem? |
| fuser -cku /data | Alle Zugriffe hart beenden – dann umount |
| /etc/fstab | Mount-Tabelle; /etc/mnttab = aktuell gemountet |
Anlegen, Prüfen, Vergrößern
| newfs -F vxfs -o largefiles /dev/vgdata/rlvdata | VxFS anlegen (Raw-Device!) – nutzt die LV-Größe |
| newfs -F vxfs -o largefiles,bsize=8192 /dev/vgdata/rlvdata | Mit größerer Blockgröße für große Dateien |
| mkfs -F vxfs -o largefiles /dev/vgdata/rlvdata | Gleichwertig zu newfs |
| mkfs -F vxfs -m /dev/vgdata/rlvdata | Zeigt den mkfs-Befehl, mit dem das FS erzeugt wurde |
| newfs -F hfs /dev/vg00/rlvol1 | HFS – auf 11.11/11.23 Pflicht für /stand |
| fstyp -v /dev/vgdata/rlvdata | FS-Typ und Layout-Version ermitteln |
| fsck -F vxfs -y /dev/vgdata/rlvdata | Log-Replay/Reparatur (FS muss ausgehängt sein!) |
| fsck -F vxfs -o full,nolog -y /dev/vgdata/rlvdata | Vollprüfung ohne Intent Log (nach schwerem Fehler) |
| extendfs -F vxfs /dev/vgdata/rlvdata | FS auf die volle LV-Größe ausdehnen – offline |
| fsadm -F vxfs -b 41943040 /data | Online vergrößern: Zielgröße in Sektoren (512 Byte) = 20 GB |
| fsadm -F vxfs -b 20971520 /data | Online verkleinern (gleicher Schalter, kleinerer Wert) |
| fsadm -F vxfs -E /data | Report: Fragmentierung der Extents prüfen |
| fsadm -F vxfs -e /data | Extents defragmentieren (online) |
| fsadm -F vxfs -D /data | Report: Fragmentierung der Verzeichnisse |
| fsadm -F vxfs -d /data | Verzeichnisse defragmentieren |
| fsadm -F vxfs -o largefiles /data | Bestehendes FS auf largefiles umstellen |
| vxupgrade /data | Aktuelle Disk-Layout-Version anzeigen |
| vxupgrade -n 7 /data | Layout-Version hochziehen (nur vorwärts möglich!) |
| vxtunefs -p /data | VxFS-Tunables des FS anzeigen (read_pref_io, max_direct_iosz) |
| /etc/vx/tunefstab | VxFS-Tunables reboot-fest hinterlegen |
| swlist -l product | grep -i -e OnlineJFS -e VXFS | Ist OnlineJFS (Advanced VxFS) lizenziert? |
Platz finden
| du -sk /var/* | sort -rn | head -20 | Größte Unterverzeichnisse in KB |
| find /var -xdev -size +100000c -exec ll {} \; | sort -k5 -rn | head | Große Dateien ohne Mount-Grenzen zu überschreiten |
| find /var -xdev -mtime -1 -size +10000c | Was ist zuletzt gewachsen? |
| fuser -d /data | Prozesse, die gelöschte aber offene Dateien halten |
| ll /var/adm/sw/*.log /var/adm/syslog/*.log | Klassische Platzfresser in /var |
Swap
| swapinfo -tam | Alles in MB mit Summenzeile – Standardkommando |
| swapinfo -dfm | Nur Device-Swap bzw. Filesystem-Swap |
| swapinfo -mq | Nur die Gesamtgröße ausgeben (für Skripte) |
| lvcreate -L 4096 -C y -r n -n swaplv /dev/vgdata | Swap-LV contiguous und ohne Bad-Block-Relocation anlegen |
| swapon /dev/vgdata/swaplv | Device-Swap sofort aktivieren |
| swapon -p 1 /dev/vgdata/swaplv | Mit Priorität (0 = höchste; gleiche Prio = Interleaving) |
| swapon -a | Alle Swap-Einträge aus /etc/fstab aktivieren |
| swapon -m 100 -l 2000 -r 500 /swapdir | Filesystem-Swap in einem Verzeichnis (Notlösung) |
| /dev/vgdata/swaplv ... swap pri=1 0 0 | fstab-Zeile für dauerhaften Device-Swap |
| vmstat 5 5 | Spalten pi/po dauerhaft > 0 = echter Speichermangel |
Kein swapoff auf HP-UX! Ein aktivierter Device-Swap lässt
sich nur durch Entfernen der fstab-Zeile und einen Reboot wieder loswerden. Deshalb Swap-LVs
niemals „mal testweise“ aktivieren und die Prioritäten vorher planen.
Faustregeln: Swap mindestens so groß wie der RAM, bei
< 8 GB RAM eher 1,5–2×. Device-Swap gleicher Priorität auf mehrere Platten
verteilen (Interleaving). Filesystem-Swap ist deutlich langsamer und nur als Notreserve
gedacht. Pseudo-Swap (swapmem_on=1) lässt RAM als Reservierung mitzählen.
VxFS online vergrößern setzt OnlineJFS voraus. Ohne die Lizenz
bleibt nur umount + extendfs. Größenangabe bei fsadm -b
erfolgt in Sektoren à 512 Byte – also GB × 1024 × 1024 × 2.
Zur Kontrolle vorher lvdisplay (LV-Größe) und bdf vergleichen.
⚙Prozesse, Jobs & IPC
| ps -ef | Alle Prozesse im Full-Format |
| ps -elf | Zusätzlich Priorität, Nice-Wert und Wait-Channel |
| ps -fu oracle | Nur Prozesse eines Users |
| ps -ef | grep -v grep | grep sshd | Prozess gezielt suchen |
| UNIX95= ps -eo pid,ppid,pcpu,vsz,args | POSIX-Modus: freie Spaltenauswahl |
| UNIX95= ps -eo "pcpu pid args" | sort -rn | head -20 | Top-CPU-Verbraucher |
| UNIX95= ps -eo "vsz pid args" | sort -rn | head -20 | Top-Speicherverbraucher |
| UNIX95= ps -eo "etime pid user args" | sort -r | head | Am längsten laufende Prozesse |
| UNIX95= ps -eo "pid ppid pri nice args" | grep -i java | Prioritäten einer Prozessgruppe prüfen |
| kill -TERM <pid> / kill -9 <pid> | Sauber beenden / hart abschießen |
| kill -HUP <pid> | Konfiguration neu einlesen (syslogd, inetd, named) |
| kill -l | Alle Signalnamen und -nummern |
| nice -n 10 kommando | Mit niedrigerer Priorität starten |
| renice -n 5 -p <pid> | Priorität eines laufenden Prozesses ändern |
| nohup script.sh > /tmp/log 2>&1 & | Abgekoppelt im Hintergrund starten |
| jobs / fg %1 / bg %1 | Shell-Jobverwaltung |
| timex kommando / time kommando | Laufzeit und Ressourcenverbrauch messen |
| tusc -f -p <pid> | Systemcall-Trace (aus dem HP-UX Porting Archive) |
| gdb -p <pid> / adb | Debugger anhängen (Stack-Trace bei Hängern) |
| ulimit -a | Aktuelle Limits der Shell (Dateigröße, Stack, Core) |
| chatr /opt/app/bin/prog | Programmattribute/Bibliothekspfade eines Binaries anzeigen |
Shared Memory & Semaphore
| ipcs -a | Alle IPC-Ressourcen (Shared Memory, Semaphore, Queues) |
| ipcs -mop | Shared-Memory-Segmente mit Owner und angehängten PIDs |
| ipcs -sb | Semaphore mit Anzahl |
| ipcrm -m <shmid> | Verwaistes Segment entfernen (z. B. nach DB-Crash) |
| ipcrm -s <semid> | Verwaistes Semaphor entfernen |
| kcusage | grep -i -e shm -e sem | 11.31: Auslastung der IPC-Tunables prüfen |
Zeitgesteuerte Jobs
| crontab -l / crontab -e | Eigene Crontab anzeigen / bearbeiten |
| crontab -l oracle | Crontab eines anderen Users lesen (ohne -u!) |
| /var/spool/cron/crontabs/ | Speicherort der Crontabs – mit ins Backup! |
| /var/adm/cron/log | Cron-Protokoll: wurde der Job gestartet? |
| /var/adm/cron/cron.allow, cron.deny | Wer darf crontab nutzen |
| /sbin/init.d/cron stop; /sbin/init.d/cron start | Cron-Daemon neu starten |
| at now + 2 hours | Einmaligen Job planen (Eingabe mit Ctrl-D beenden) |
| at -l / at -r <job> | Geplante at-Jobs listen / entfernen |
| /var/adm/cron/at.allow, at.deny | Berechtigung für at |
UNIX95-Trick: Das Standard-ps von HP-UX kennt kein
-o. Erst UNIX95= (leer gesetzt) schaltet POSIX-Verhalten ein und macht
ps -eo, ps -H und Sortierung möglich. Achtung: dieselbe Variable
ändert auch das Verhalten von df, du und ls –
deshalb nur pro Kommando voranstellen, nie global exportieren.
Cron-Falle: Cron startet ohne .profile mit minimalem
PATH. Immer absolute Pfade verwenden und PATH, SHLIB_PATH,
ORACLE_HOME etc. im Skript selbst setzen. Nach dem Editieren von Crontabs per
Editor (statt crontab -e) muss der Cron-Daemon neu gestartet werden.
📊Performance-Analyse
Schnellüberblick
| top | CPU-Auslastung je Prozessor und Top-Prozesse |
| top -s 5 -d 1 | Intervall 5 s, eine Anzeige (skript-/logtauglich) |
| glance | GlancePlus: bestes Werkzeug auf HP-UX – Tasten c CPU,
m Memory, d Disk, n NFS, g Prozessliste |
| glance -j 5 | Aktualisierung alle 5 Sekunden |
| gpm | Grafische Variante von GlancePlus (X11) |
| vmstat 5 10 | CPU, Memory, Paging – 10 Messungen alle 5 s |
| vmstat -s | Kumulierte Zähler seit dem Boot |
| vmstat -d | Disk-Transferstatistik |
| iostat 5 10 | Auslastung je Gerät (%util, KB/s, Transfers/s) |
| uptime | Load Average der letzten 1/5/15 Minuten |
sar
| sar -u 5 12 | CPU-Nutzung: %usr, %sys, %wio, %idle |
| sar -M -u 5 5 | CPU-Nutzung je Prozessor |
| sar -d 5 12 | Disk: avwait/avserv – die entscheidenden I/O-Werte |
| sar -b 5 12 | Buffer-Cache-Trefferquoten |
| sar -q 5 12 | Runqueue-Länge und Swap-Queue |
| sar -v 5 12 | Kernel-Tabellen (proc, inode, file) gegen die Limits |
| sar -w 5 12 | Swapping-/Context-Switch-Aktivität |
| sar -A 5 5 | Alle Reports auf einmal |
| sar -o /tmp/sar.bin 60 60 | Binär aufzeichnen für spätere Auswertung |
| sar -f /var/adm/sa/sa18 -u | Aufzeichnung vom 18. des Monats auswerten |
| sar -f /tmp/sar.bin -s 09:00 -e 11:00 -d | Zeitfenster aus einer Aufzeichnung herausziehen |
| /usr/lbin/sa/sa1, sa2 | Sammelskripte – in der root-Crontab aktivieren |
Speicher & Kernel
| swapinfo -tam | Reservierter und belegter Swap (Reserve-Spalte beachten!) |
| machinfo | grep -i memory | Physischer Speicher (Integrity) |
| kcusage -w 80 | 11.31: Kernel-Ressourcen über 80 % Auslastung |
| kctune filecache_max filecache_min | 11.31: Größe des Filecache prüfen |
| /usr/contrib/bin/kmeminfo | Detaillierte Kernel-Speicheraufteilung (Contrib-Tool) |
| vxfsstat -b /data | VxFS-Buffer-/Inode-Cache-Trefferquoten |
| mpsched -s | Prozessor-/Locality-Topologie (Cells, SLDs) |
| mpsched -l <ldom> kommando | Prozess an eine Locality Domain binden |
Reporting & Tiefenanalyse
| /opt/perf/bin/mwa start / stop | OV Performance Agent (MeasureWare) starten/stoppen |
| /opt/perf/bin/perfstat | Status aller Performance-Agent-Prozesse |
| /opt/perf/bin/extract -xp -f /tmp/report.txt | Daten aus dem Logfile-Satz exportieren |
| /opt/perf/bin/utility -xs | Logfile-Satz prüfen und Größe verwalten |
| /var/opt/perf/datafiles/ | Rohdaten von scopeux (logglob, logproc, logdev) |
| caliper fprof -- /opt/app/bin/prog | Integrity: Funktionsprofil einer Anwendung |
| caliper cpu -- /opt/app/bin/prog | CPU-Zyklen/Stalls messen |
| netstat -i; lanadmin -g mibstats 0 | Netz-Fehlerzähler als Performance-Indiz |
| nfsstat -c; nfsstat -m | NFS-Client-Statistik und Mount-Antwortzeiten |
%wio richtig lesen: Ein hoher %wio in sar -u bedeutet nicht
automatisch ein Plattenproblem – entscheidend sind avwait und avserv
aus sar -d. Als Faustwert: avserv bei SAN-LUNs < 10 ms,
avwait nahe 0. Steigt avwait, ist die Queue zu tief oder die LUN
überlastet.
Filecache bei Datenbanken: Auf 11.31 belegt der Filecache per Default
bis zu 50 % des RAM. Bei Oracle/SAP mit eigenem Cache
kctune filecache_max=10 filecache_min=5 setzen – sonst konkurrieren beide Caches.
Auf 11.23 entsprechend dbc_max_pct.
🌐Netzwerk – TCP/IP & LAN
Interfaces anzeigen
| lanscan | Alle LAN-Karten: Hardware-Pfad, MAC, Crd In#, PPA, Name |
| lanscan -v | Ausführlich inkl. Treiber und Encapsulation |
| lanscan -q | Nur PPA-Nummern (auch APA-Gruppenzuordnung) |
| ioscan -funC lan | LAN-Hardware mit Gerätedateien |
| ifconfig lan0 | IP, Netmask, Broadcast, Status eines Interface |
| netstat -in | Alle Interfaces numerisch mit Paket-/Fehlerzählern |
| netstat -rn | Routing-Tabelle numerisch |
| netstat -an | grep LISTEN | Lauschende Ports |
| netstat -an | grep 1521 | Verbindungen zu einem bestimmten Port |
| netstat -p tcp | TCP-Protokollstatistik (Retransmits, Resets) |
| netstat -s | Statistik aller Protokolle |
| arp -a / arp -d 10.0.0.5 | ARP-Cache anzeigen / Eintrag löschen |
Konfigurieren
| ifconfig lan0 10.0.0.10 netmask 255.255.255.0 up | IP temporär setzen (nach Reboot weg!) |
| ifconfig lan0 down / up | Interface deaktivieren / aktivieren |
| ifconfig lan0:1 10.0.0.11 netmask 255.255.255.0 up | Zweite IP (Alias) auf demselben Interface |
| /etc/rc.config.d/netconf | Dauerhafte IP-Konfiguration: INTERFACE_NAME, IP_ADDRESS,
SUBNET_MASK, ROUTE_DESTINATION, ROUTE_GATEWAY |
| /etc/rc.config.d/netconf-ipv6 | IPv6-Konfiguration |
| /sbin/init.d/net stop; /sbin/init.d/net start | Netzkonfiguration neu einlesen (Verbindungsabbruch!) |
| set_parms hostname | Hostname dauerhaft ändern (Menu, passt alle Dateien an) |
| set_parms ip_address | Primäre IP-Adresse dauerhaft ändern |
| set_parms addl_netwrk | Weitere Netzparameter (Gateway, DNS, Domain) |
| set_parms timezone | Zeitzone setzen (schreibt /etc/TIMEZONE) |
| route add default 10.0.0.1 1 | Default-Route temporär (letzte Zahl = Hop Count!) |
| route add net 192.168.5.0 netmask 255.255.255.0 10.0.0.254 1 | Statische Route hinzufügen |
| route delete default 10.0.0.1 | Route entfernen |
11.31: nwmgr – das neue LAN-Werkzeug
| nwmgr | Übersicht aller Interfaces mit Speed/Duplex/Status |
| nwmgr -c lan0 | Informationen zu einem Interface |
| nwmgr -v -c lan0 | Ausführlich (Treiber, MAC, MTU, Flow Control) |
| nwmgr -g -A all -c lan0 | Alle unterstützten Attribute mit Werten auslesen |
| nwmgr -s -A speed=1000fd -c lan0 | Speed/Duplex setzen (--saved für reboot-fest) |
| nwmgr -s -A mtu=9000 -c lan0 | Jumbo Frames aktivieren (Switch muss mitspielen) |
| nwmgr --stats -c lan0 | Statistik/Fehlerzähler des Interface |
| nwmgr -S apa | Auto Port Aggregation: alle Trunks anzeigen |
| nwmgr -c lan900 -S apa | Details einer APA-Gruppe (Mitglieder, Modus) |
Legacy-Werkzeuge (11.23 und älter, in 11.31 weiterhin nutzbar)
| lanadmin -x 0 | Speed/Duplex/Autoneg der PPA 0 anzeigen |
| lanadmin -X 100FD 0 | Speed/Duplex fest setzen |
| lanadmin -g mibstats 0 | MIB-Statistik: Kollisionen, CRC-, Frame-Fehler |
| lanadmin -m 0 | MAC-Adresse (Station Address) der PPA |
| lanadmin -c 0 | Statistikzähler zurücksetzen |
| linkloop -i 0 0x00306E1234AB | Layer-2-Test zur MAC-Adresse – prüft Kabel/Switch ohne IP |
| lanqueryconf -s; lanapplyconf | APA-Konfiguration erfragen und anwenden |
| /etc/rc.config.d/hp_apaconf | APA-Trunk-Definitionen (HP_APA_*) |
Tuning & Diagnose
| ndd -get /dev/tcp tcp_conn_request_max | Netzwerk-Tunable lesen |
| ndd -set /dev/tcp tcp_conn_request_max 4096 | Tunable sofort setzen (nicht reboot-fest) |
| ndd -h tcp_conn_request_max | Beschreibung, Default und Wertebereich |
| ndd -get /dev/ip ip_forwarding | IP-Forwarding-Status (0 = aus) |
| /etc/rc.config.d/nddconf | ndd-Werte reboot-fest hinterlegen; ndd -c liest sie ein |
| ping 10.0.0.1 64 3 | 3 Pakete à 64 Byte senden |
| traceroute 10.0.0.1 | Pfad zum Ziel verfolgen |
| nettl -status all | Status von Tracing und Logging aller Subsysteme |
| nettl -start / nettl -stop | Netz-Tracing/Logging-Subsystem starten/stoppen |
| nettl -tn pduin pduout -e ns_ls_ip -f /tmp/trace | Paketmitschnitt starten → /tmp/trace.TRC0 |
| nettl -tf -e all | Tracing wieder abschalten |
| netfmt -N -l -f /tmp/trace.TRC0 > /tmp/trace.txt | Mitschnitt lesbar aufbereiten |
| netfmt -f /var/adm/nettl.LOG000 | more | Netzwerk-Logdatei formatieren (Linkdown, Fehler) |
Dauerhaft vs. temporär: ifconfig und route wirken nur
bis zum Reboot. Dauerhaft wird eine Konfiguration ausschließlich über
/etc/rc.config.d/netconf (oder set_parms). Die Variablen sind indiziert:
INTERFACE_NAME[0], IP_ADDRESS[0] … – Lücken in der Nummerierung
führen dazu, dass folgende Einträge ignoriert werden.
Hop Count nicht vergessen: route add auf HP-UX erwartet als
letztes Argument den Hop Count. route add default 10.0.0.1 ohne die 1
schlägt fehl oder legt eine unbrauchbare Route an.
Speed/Duplex: Fest eingestellte Werte auf nur einer Seite sind die
häufigste Ursache für Duplex-Mismatch mit massenhaft CRC-Fehlern in
lanadmin -g mibstats. Entweder beide Seiten auf Autonegotiation oder beide fest.
📡NFS, Namensauflösung & Dienste
NFS-Server
| /etc/rc.config.d/nfsconf | Schalter: NFS_SERVER=1, NFS_CLIENT=1,
AUTOMOUNT=1, AUTOFS=1, NFS_VERSION |
| /sbin/init.d/nfs.server start | stop | NFS-Serverdienste starten/stoppen |
| /etc/dfs/dfstab | 11i v3: Share-Definitionen (eine share-Zeile je FS) |
| share -F nfs -o rw=host1:host2 /export/data | 11i v3: FS sofort freigeben |
| shareall | 11i v3: alle Einträge aus /etc/dfs/dfstab aktivieren |
| share | 11i v3: aktive Shares anzeigen (unshare /export/data = zurücknehmen) |
| /etc/exports | 11i v2 und älter: Exportliste |
| exportfs -a | Alle Einträge aus /etc/exports exportieren |
| exportfs -v | Aktive Exporte mit Optionen anzeigen |
| exportfs -u /export/data | Einen Export zurücknehmen |
| showmount -a | Welche Clients haben was gemountet |
| nfsstat -s | Server-Statistik (badcalls, dupreqs) |
NFS-Client & Automounter
| showmount -e nfssrv | Verfügbare Exporte eines Servers anzeigen |
| mount -F nfs nfssrv:/export/data /mnt | Temporär mounten |
| mount -F nfs -o rw,hard,intr,vers=3 nfssrv:/data /mnt | Mit typischen Optionen |
| mount -F nfs -o vers=4 nfssrv:/data /mnt | NFSv4 (erst ab 11i v3) |
| nfsstat -c | Client-Statistik – Retransmits deuten auf Netz-/Serverproblem |
| nfsstat -m | Antwortzeiten je NFS-Mount (srtt, dev, cur) |
| nfsstat -z | Zähler zurücksetzen (vor einer Messung) |
| rpcinfo -p nfssrv | RPC-Dienste des Servers prüfen (rpcbind, nfs, mountd) |
| /etc/auto_master, /etc/auto_direct | Automounter-Maps |
| /sbin/init.d/autofs start | stop | AutoFS neu starten (nach Map-Änderung) |
| automount -v | Automounter mit Meldungen starten |
Namensauflösung & Zeit
| /etc/nsswitch.conf | Reihenfolge der Quellen: hosts: files dns nis |
| /etc/resolv.conf | Nameserver, Domain, Search-Liste |
| /etc/hosts | Lokale Namensauflösung |
| nsquery hosts myhost | HP-UX-Spezialität: zeigt, welche Quelle geantwortet hat |
| nslookup myhost | DNS gezielt abfragen |
| /sbin/init.d/named start | stop | Lokalen BIND-Server steuern (/etc/named.conf) |
| /etc/rc.config.d/namesvrs | Autostart von NIS/named |
| /etc/rc.config.d/netdaemons | Schalter export XNTPD=1, NTPDATE_SERVER |
| /sbin/init.d/xntpd start | stop | NTP-Daemon steuern (/etc/ntp.conf) |
| ntpq -p | Peers und Offset anzeigen – ein * markiert die Quelle |
| ntpdate -u -q timeserver | Zeitabgleich prüfen, ohne die Uhr zu stellen |
| date -u; cat /etc/TIMEZONE | UTC-Zeit und konfigurierte Zeitzone |
inetd, SSH & Transfer
| /etc/inetd.conf | Von inetd gestartete Dienste (telnet, ftp, …) |
| inetd -c | inetd.conf neu einlesen ohne Neustart |
| inetd -l | Verbindungs-Logging in syslog einschalten |
| /var/adm/inetd.sec | Host-basierte Zugriffskontrolle je Dienst (allow/deny) |
| /etc/services | Port-zu-Dienst-Zuordnung |
| /sbin/init.d/secsh start | stop | HP-UX Secure Shell steuern |
| /opt/ssh/etc/sshd_config | SSH-Server-Konfiguration |
| ssh-keygen -t rsa -b 4096 | Schlüsselpaar erzeugen |
| cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys | Public Key hinterlegen (.ssh 700, Datei 600!) |
| scp -p datei user@host:/pfad/ | Kopieren mit Zeitstempel |
| sendmail -bp; /var/adm/syslog/mail.log | Mailqueue und Mail-Log prüfen |
Große Umstellung in 11i v3: Freigaben laufen über
share/shareall und /etc/dfs/dfstab. Auf 11i v2 und älter
gilt exportfs mit /etc/exports. Wer aus alten Runbooks kopiert,
exportiert auf 11.31 unter Umständen gar nichts – nach jedem Change mit
share bzw. exportfs -v kontrollieren.
Hängende NFS-Mounts: Blockieren bdf, df und
oft auch shutdown. Erste Hilfe: bdf -l (nur lokal),
nfsstat -m für die Antwortzeiten, dann umount -f /mnt.
Mounts produktiv immer mit hard,intr oder bg anlegen.
👤User, Gruppen & Security
Benutzer & Gruppen
| useradd -u 5001 -g users -G dba -d /home/rene -s /usr/bin/sh -m rene | User anlegen inkl. Home (-m) |
| useradd -D | Aktuelle Defaults für useradd anzeigen |
| usermod -G dba,users rene | Sekundäre Gruppen setzen (ersetzt die Liste komplett!) |
| usermod -s /usr/bin/ksh rene | Login-Shell ändern |
| usermod -l rpfeifer rene | Login-Namen ändern |
| userdel -r rene | User samt Home-Verzeichnis löschen |
| groupadd -g 2001 dba | Gruppe anlegen |
| groupmod -n dbagrp dba / groupdel dba | Gruppe umbenennen / löschen |
| passwd rene | Passwort setzen |
| passwd -r files rene | Explizit im lokalen Repository (statt NIS/LDAP) |
| id; groups; who am i | Eigene IDs, Gruppen und Login-Namen |
| logins -x -l rene | Alle Informationen zu einem Login (UID, GID, Passwortstatus) |
| logins -p | Alle Accounts ohne Passwort – Security-Check! |
| logins -d | Doppelt vergebene UIDs finden |
| pwck; grpck | Konsistenzprüfung von /etc/passwd und /etc/group |
| su - oracle | Benutzerwechsel mit vollem Environment |
| pwconv | Auf Shadow-Passwörter umstellen (/etc/shadow) |
| pwunconv | Shadow-Passwörter wieder auflösen |
Security-Policies
| /etc/default/security | Systemweite Policy: MIN_PASSWORD_LENGTH,
PASSWORD_MAXDAYS, PASSWORD_HISTORY_DEPTH,
NUMBER_OF_LOGINS_ALLOWED, SU_ROOT_GROUP, NOLOGIN |
| /etc/security.dsc | Nachschlagewerk: alle Attribute mit Wertebereich |
| userdbget -a | Alle per-User-Attribute aus /var/adm/userdb |
| userdbget -u rene | Attribute eines Users |
| userdbset -u rene PASSWORD_MAXDAYS=90 | Policy nur für einen User überschreiben |
| userdbset -d -u rene PASSWORD_MAXDAYS | Individuelle Einstellung entfernen (Systemwert gilt wieder) |
| userdbck | Konsistenz der User-Datenbank prüfen |
| touch /etc/nologin | Logins außer root sperren (Wartungsfenster) |
Trusted System (klassisch, 11.11/11.23)
| tsconvert | System in ein Trusted System umwandeln |
| tsconvert -r | Zurück auf Standard-Passwortverwaltung |
| getprpw -m uid,lockout,exptm rene | Trusted-Attribute eines Users abfragen |
| modprpw -k rene | Gesperrten Account entsperren |
| modprpw -v -l rene | Passwort als abgelaufen markieren (Zwangswechsel) |
| modprdef -m mintm=1,exptm=90 | System-Defaults für Passwortalter setzen |
| /tcb/files/auth/<a>/<user> | Ablage der Passwort-/Audit-Daten im Trusted System |
RBAC (ab 11i v2/v3)
| roleadm list | Alle definierten Rollen und Zuordnungen |
| roleadm add dbadmin | Rolle anlegen |
| roleadm assign rene dbadmin | Rolle einem User zuweisen (revoke = entziehen) |
| authadm list | Autorisierungen (Operation/Objekt-Paare) anzeigen |
| authadm assign dbadmin hpux.fs.mount | Autorisierung an eine Rolle binden |
| cmdprivadm add cmd=/usr/sbin/mount:op=hpux.fs.mount:privs=BASICROOT | Kommando für RBAC freischalten |
| privrun -r dbadmin /usr/sbin/mount /data | Kommando in einer Rolle ausführen (statt su) |
| privrun -l | Alle für mich erlaubten privilegierten Kommandos |
| privedit /etc/fstab | Datei mit erhöhten Rechten editieren (revisionssicher) |
| rbacdbchk | RBAC-Datenbanken auf Syntaxfehler prüfen – nach jeder Änderung! |
| /etc/rbac/ | roles, auths, role_auth, cmd_priv, user_role |
| sudo -l; visudo | Alternative aus dem Porting Archive (/etc/sudoers) |
Rechte & ACLs
| chmod 750 datei; chmod g+s verzeichnis | Rechte setzen / SetGID auf Verzeichnis |
| chown user:group datei | Eigentümer ändern (-R rekursiv) |
| umask 022 | Standardrechte für neue Dateien |
| getacl datei | VxFS-ACL anzeigen |
| setacl -m user:rene:rwx,group:dba:r-x datei | ACL-Einträge hinzufügen/ändern |
| setacl -d user:rene datei | ACL-Eintrag löschen |
| setacl -f aclfile datei | ACL aus Datei übernehmen |
| setacl -n -m d:user:rene:rwx verzeichnis | Default-ACL für neue Objekte im Verzeichnis |
| lsacl datei; chacl "rene.%=rwx" datei | HFS-ACLs (alte Syntax, nur auf HFS-Filesystemen) |
Überwachung
| who -u; w | Angemeldete User mit Idle-Zeit |
| last | head -20; last rene | Letzte Anmeldungen (/var/adm/wtmp) |
| lastb | head -20 | Fehlgeschlagene Anmeldungen (/var/adm/btmp) |
| audsys -n -c /.secure/etc/audfile1 -s 5000 | Auditing einschalten mit Trailfile |
| audsys | Aktuellen Audit-Status anzeigen (audsys -f = ausschalten) |
| audevent -l | Welche Events werden protokolliert |
| audisp /.secure/etc/audfile1 | more | Audit-Trail lesbar ausgeben |
| swverify \* 2>&1 | grep -i -e checksum -e permission | Veränderte Systemdateien aufspüren |
| bastille -b | HP-UX Bastille: Härtung nach gespeichertem Profil anwenden |
Drei Welten: (1) Standard mit /etc/passwd,
(2) Standard + Shadow (pwconv), (3) Trusted System mit /tcb.
Nur eine davon ist gleichzeitig aktiv. Ab 11i v2 ist die Kombination
Shadow + /etc/default/security + /var/adm/userdb der empfohlene
Weg – Trusted Systems gelten als Auslaufmodell und vertragen sich schlecht mit
Cluster-Software.
Vorsicht bei usermod -G: Die Option setzt die
Gruppenliste komplett neu. Bestehende Mitgliedschaften vorher mit
id rene sichern, sonst verliert der Account still Berechtigungen.
Ebenso: usermod verweigert die Arbeit, solange der User angemeldet ist oder
Prozesse laufen.
🚨Fehleranalyse, Logs & Dumps
Logdateien
| tail -100 /var/adm/syslog/syslog.log | Zentrales Systemlog – erste Anlaufstelle bei allem |
| tail -f /var/adm/syslog/syslog.log | Live mitlesen (z. B. während eines Failovers) |
| /var/adm/syslog/OLDsyslog.log | Vorherige Generation (Rotation beim Boot) |
| /var/adm/syslog/mail.log | Sendmail-Protokoll |
| /var/adm/rc.log | Ausgabe aller Startskripte – Boot-Fehler stehen hier |
| /etc/shutdownlog | Wer hat wann rebootet, Panic-Meldungen |
| /var/adm/sw/swagent.log | Alle Software-Distributor-Aktionen |
| /var/adm/cron/log | Cron-Protokoll |
| /var/adm/nettl.LOG000 | Netzwerk-Log (mit netfmt formatieren) |
| /etc/syslog.conf | Was wird wohin geloggt (Tabs, keine Leerzeichen!) |
| kill -HUP $(cat /var/run/syslog.pid) | syslogd Konfiguration neu einlesen |
| dmesg | Kernel-Meldungspuffer (Platten-, Netz-, Speicherfehler) |
| dmesg > /tmp/dmesg_$(date +%F_%H%M).txt | Puffer wegsichern, bevor er überschrieben wird |
Support Tools Manager (STM) & Hardware-Diagnose
| cstm | STM auf der Kommandozeile |
| mstm | Menügeführte Variante (Terminal) |
| xstm | Grafische Variante (X11) |
| cstm> map | Alle Geräte mit Nummer auflisten |
| cstm> sel dev 5 | Gerät auswählen (auch sel path 0/0/2/0.1.0) |
| cstm> info; il | Information Tool starten und Ergebnis (Information Log) zeigen |
| cstm> ver; vl | Verify Tool starten und Log anzeigen |
| cstm> exp; expl | Exercise/Expert Tool (nur mit Support abstimmen!) |
| /var/stm/logs/os/ | Rohe Hardware-Eventlogs (log1.raw.cur …) |
| /var/tombstones/ts99 | PA-RISC: Tombstone der letzten HPMC/Maschinenpanik |
EMS & Event-Monitoring
| /etc/opt/resmon/lbin/monconfig | EMS Hardware Monitors konfigurieren (Menü) |
| monconfig → (C)heck detailed | Überwachte Ressourcen und Schwellen prüfen |
| /var/opt/resmon/log/event.log | Aufgetretene Hardware-Events im Klartext |
| /var/opt/resmon/log/api.log | Protokoll der Monitor-Registrierungen |
| resls / | Verfügbare EMS-Ressourcen durchblättern |
| evweb eventviewer -L | 11.31: Events des Event Managers auflisten |
| evweb subscribe -L | Bestehende Benachrichtigungs-Abos anzeigen |
| /opt/sfm/bin/sfmconfig -w -q | System Fault Management: Status/Modus abfragen |
Crash Dumps
| crashconf -v | Aktuelle Dump-Konfiguration und Dump-Devices |
| crashconf -l | Verfügbare Speicherklassen mit Größe |
| crashconf UNUSED | Klassen ein-/ausschließen (verkürzt die Dumpzeit) |
| /etc/rc.config.d/crashconf | Dump-Klassen und -Devices reboot-fest hinterlegen |
| /etc/rc.config.d/savecrash | SAVECRASH=1, SAVECRASH_DIR=/var/adm/crash |
| savecrash -r -d /var/adm/crash | Dump vom Dump-Device in ein Verzeichnis retten |
| /var/adm/crash/crash.0/ | INDEX, vmunix und Speicherabbilder des letzten Dumps |
| cat /var/adm/crash/crash.0/INDEX | Panic-String und Zeitpunkt – erstes Indiz für den Support |
| q4 -p /var/adm/crash/crash.0 | Dump-Analyse (nur mit HP-Support sinnvoll) |
| lvlnboot -v /dev/vg00 | grep -i dump | Ist ein Dump-LV konfiguriert und groß genug? |
Erste Schritte bei einer Störung:
tail -200 /var/adm/syslog/syslog.log → dmesg →
bdf und swapinfo -tam → vgdisplay -v auf Stale/NONE →
ioscan -fnC disk auf NO_HW/unclaimed → glance.
Bei Hardwareverdacht cstm mit info/il.
Gerätestatus deuten: In ioscan bedeutet
CLAIMED alles in Ordnung, UNCLAIMED kein Treiber gebunden,
NO_HW das Gerät antwortet nicht mehr (Kabel, Zoning, defekte Platte) und
DISABLED wurde administrativ abgeschaltet.
Vor dem HP-Support-Call: print_manifest,
swlist -l patch, den Auszug aus syslog.log,
/var/adm/crash/crash.0/INDEX und die STM-Logs bereitstellen. Dump-Verzeichnis vorher
auf freien Platz prüfen – ein Dump kann so groß wie der RAM werden.
💽Backup, Recovery & Ignite-UX
Systemsicherung mit Ignite-UX
| swlist -l bundle | grep -i ignite | Ist Ignite-UX installiert? |
| make_tape_recovery -A -I -v -x inc_entire=vg00 | Bootfähiges Recovery-Band der kompletten vg00 |
| make_tape_recovery -a /dev/rmt/0mn -I -v -x inc_entire=vg00 | Mit explizitem Bandgerät (no-rewind!) |
| make_tape_recovery -A -v -x inc_entire=vg00 -x inc_entire=vgdata | Weitere VG mit auf das Band nehmen |
| make_net_recovery -s ignitesrv -A -v -x inc_entire=vg00 | Recovery-Archiv auf einen Ignite-Server schreiben |
| make_net_recovery -s ignitesrv -x inc_entire=vg00 -x exclude=/var/tmp | Verzeichnisse ausschließen |
| /opt/ignite/bin/print_manifest | Systemsteckbrief – vor dem Restore ausdrucken |
| /var/opt/ignite/recovery/latest/ | Client: Protokoll und Konfiguration des letzten Recovery-Lauf |
| /var/opt/ignite/clients/ | Server: Archive und Konfiguration je Client |
| instl_adm -d | Ignite-Server: aktuelle Default-Konfiguration anzeigen |
| /opt/ignite/bin/ignite | Grafische Ignite-Server-Oberfläche |
-A vs. -i: -A sichert die
gesamte Bootplatte/Boot-VG, -I startet den interaktiven Modus zur
Auswahlkontrolle. Ein make_*_recovery-Archiv ist kein Datenbackup – es
enthält standardmäßig nur die vg00. Anwendungsdaten separat sichern.
fbackup / frecover (HP-UX-eigenes Backup)
| fbackup -f /dev/rmt/0m -i /home -v | Vollsicherung eines Verzeichnisbaums |
| fbackup -f /dev/rmt/0m -i / -e /tmp -e /var/tmp -v | Mit Ausschlüssen (-e) |
| fbackup -f /dev/rmt/0m -g /etc/graphfile -I /tmp/index -v | Sicherung nach Graph-Datei mit Online-Index |
| fbackup -0 -f /dev/rmt/0m -g /etc/graphfile | Level-0-Sicherung (-1…-9 = inkrementell) |
| frecover -I - -f /dev/rmt/0m | Inhaltsverzeichnis des Bandes ausgeben |
| frecover -x -i /home/rene -f /dev/rmt/0m -v | Selektiver Restore eines Pfads |
| frecover -r -f /dev/rmt/0m | Kompletten Backup-Satz zurückschreiben |
| frecover -X -x -i /home -f /dev/rmt/0m | Relativ zum aktuellen Verzeichnis restaurieren (Testrestore!) |
Weitere Werkzeuge
| vxdump -0 -f /dev/rmt/0m /data | VxFS-Filesystem sichern (Pendant zu dump für HFS) |
| vxrestore -x -f /dev/rmt/0m ./datei | Selektiver VxFS-Restore (-i = interaktiv) |
| vxrestore -t -f /dev/rmt/0m | Inhalt eines vxdump-Archivs listen |
| dump 0f /dev/rmt/0m /dev/vg00/rlvol1 | Nur HFS (z. B. /stand) |
| tar -cvf /backup/etc.tar /etc | tar-Archiv (-tvf listen, -xvf entpacken) |
| tar -cvf - /etc | gzip > /backup/etc.tar.gz | Komprimiert sichern (HP-UX-tar kennt kein -z) |
| pax -w -f /backup/data.pax /data | pax-Archiv erzeugen (-r = lesen) |
| find /data -print | cpio -ocv > /backup/data.cpio | cpio-Sicherung |
| cpio -icvdum < /backup/data.cpio | cpio-Restore mit Verzeichnisstruktur und Zeitstempeln |
| dd if=/dev/vgdata/rlvdata of=/backup/lv.dd bs=1024k | Raw-Kopie eines LV (Datenbank-Rohdaten) |
| cp -p; cp -pr | Kopieren unter Beibehaltung von Rechten/Zeitstempeln |
Bandlaufwerke
| ioscan -funC tape | Bandlaufwerke und ihre Gerätedateien |
| /dev/rmt/0m vs. /dev/rmt/0mn | Mit / ohne Rewind – für mehrere Sicherungen je Band 0mn |
| mt -f /dev/rmt/0mn status | Status und Position des Bandes |
| mt -f /dev/rmt/0m rew | Zurückspulen |
| mt -f /dev/rmt/0mn fsf 1 | Ein Filemark vorspulen |
| mt -f /dev/rmt/0m offl | Band auswerfen |
| mt -f /dev/rmt/0m rewoffl | Zurückspulen und auswerfen |
Backup-Routine: Vor jedem Change ein
make_net_recovery/make_tape_recovery der vg00 plus
vgcfgbackup aller VGs und eine Kopie von /etc/lvmconf,
/etc/fstab, /etc/rc.config.d, swlist -l patch.
Danach täglich die Datenfilesysteme (vxdump/fbackup oder
Data Protector). Restore mindestens einmal jährlich testen.
Recovery-Band ist nicht ewig gültig: Nach jedem
LVM-Umbau, Patch-Set oder Kernel-Change ein neues Archiv ziehen. Beim Restore von Band startet
das System über den Alternate Boot Path – deshalb vorher setboot und den
Hardware-Pfad des Laufwerks dokumentieren.
🔗Serviceguard
Status & Betrieb
| cmviewcl -v | Wichtigstes Kommando: Cluster, Knoten, Pakete, Netze, Status |
| cmviewcl | Kurzübersicht (up/down, running/halted) |
| cmviewcl -v -p pkg1 | Details eines Pakets inkl. Ressourcen und Switching-Flags |
| cmviewcl -v -n node1 | Details eines Knotens |
| cmviewcl -f line | Maschinenlesbare Ausgabe für Monitoring-Skripte |
| cmviewconf | Binäre Cluster-Konfiguration im Klartext anzeigen |
| cmruncl -v | Cluster auf allen Knoten starten |
| cmruncl -v -n node1 | Cluster nur mit einem Knoten starten – gefährlich! |
| cmhaltcl -v | Kompletten Cluster stoppen (-f auch bei laufenden Paketen) |
| cmrunnode -v node1 | Einen Knoten dem Cluster beitreten lassen |
| cmhaltnode -v -f node1 | Knoten aus dem Cluster nehmen, Pakete schwenken |
| cmrunpkg -n node2 pkg1 | Paket auf einem bestimmten Knoten starten |
| cmhaltpkg pkg1 | Paket stoppen (Switching wird dabei deaktiviert) |
| cmmodpkg -e pkg1 | Package Switching wieder einschalten – nach jedem Halt nötig! |
| cmmodpkg -e -n node2 pkg1 | Knoten für dieses Paket freigeben |
| cmmodpkg -d -n node1 pkg1 | Knoten für das Paket sperren (z. B. vor Wartung) |
| cmhaltpkg pkg1; cmrunpkg -n node2 pkg1; cmmodpkg -e pkg1 | Kontrollierter Schwenk auf den zweiten Knoten |
Konfiguration
| cmquerycl -v -n node1 -n node2 -C /etc/cmcluster/cluster.ascii | Cluster-Konfigurationsvorlage erzeugen |
| cmcheckconf -v -C /etc/cmcluster/cluster.ascii | Konfiguration prüfen, ohne sie anzuwenden |
| cmapplyconf -v -C /etc/cmcluster/cluster.ascii | Konfiguration verteilen und aktivieren |
| cmgetconf -c /tmp/cluster_ist.ascii | Laufende Cluster-Konfiguration exportieren (Doku/Backup) |
| cmgetconf -p pkg1 /tmp/pkg1.ascii | Paket-Konfiguration exportieren |
| cmmakepkg -p /etc/cmcluster/pkg1/pkg1.conf | Legacy-Paketvorlage erzeugen |
| cmmakepkg -m sg/failover /etc/cmcluster/pkg1/pkg1.conf | Modulare Paketvorlage (ab A.11.18) |
| cmcheckconf -v -P /etc/cmcluster/pkg1/pkg1.conf | Paket-Konfiguration prüfen |
| cmapplyconf -v -P /etc/cmcluster/pkg1/pkg1.conf | Paket aktivieren/ändern |
| cmdeleteconf -p pkg1 | Paket aus der Konfiguration entfernen |
| cmscancl -o /tmp/scan.txt | Kompletten Ist-Zustand beider Knoten sammeln (Doku/Support) |
| cmmodnet -a -i 10.0.0.55 10.0.0.0 | Relocatable IP manuell setzen – nur bei Notfall-Debugging |
| . /etc/cmcluster.conf; echo $SGCONF | Standardpfade als Variablen laden ($SGCONF, $SGRUN) |
Dateien & Logs
| /etc/cmcluster/ | Cluster- und Paketkonfigurationen, Skripte |
| /etc/cmcluster/cmclnodelist | Vertrauensbeziehung zwischen den Knoten (vor cmquerycl!) |
| /etc/cmcluster/cmclconfig | Binäre, aktive Konfiguration (nie manuell ändern) |
| /var/adm/syslog/syslog.log | Cluster-Events, Failover-Ursachen, TOC-Meldungen |
| /var/adm/cmcluster/log/<pkg>.log | Log modularer Pakete (Start/Stop-Skript-Ausgabe) |
| /etc/cmcluster/<pkg>/<pkg>.cntl.log | Log klassischer (Legacy-)Pakete |
| cmviewcl -v | grep -i -e unowned -e down | Schnellcheck auf Probleme |
Niemals von Hand anfassen: VGs und Filesysteme eines Pakets nicht mit
vgchange -a y/mount aktivieren – Paket-VGs laufen mit
vgchange -a e (exklusiv). Ein Doppelzugriff von beiden Knoten führt zu
Datenkorruption. Immer über cmrunpkg/cmhaltpkg arbeiten.
Nach cmhaltpkg immer cmmodpkg -e: Ein manuell
gestopptes Paket hat Switching disabled und schwenkt im Fehlerfall nicht mehr.
Das ist die häufigste Ursache für „der Cluster hat nicht übernommen“.
Kontrolle mit cmviewcl -v in der Zeile Package Switching.
Change-Reihenfolge im Cluster: LVM-Änderung auf dem Knoten mit
aktivem Paket durchführen → vgcfgbackup →
vgexport -p -s -m mapfile → Mapfile auf den zweiten Knoten kopieren →
dort vgexport/vgimport → cmcheckconf → Testschwenk.
🧮Partitionierung & Virtualisierung
nPartitions (Hardware-Partitionen)
| parstatus -w | In welcher nPar läuft ich gerade? |
| parstatus -P | Alle Partitionen der Komplexes mit Status |
| parstatus -C | Alle Zellen: CPUs, RAM, Zuordnung, Use-on-next-boot |
| parstatus -I | I/O-Chassis und ihre Zuordnung |
| parstatus -A | Freie (available) Zellen und I/O-Chassis |
| parstatus -V -p 1 | Ausführliche Konfiguration der Partition 1 |
| parstatus -B | Komplex-Informationen (Modell, Seriennummer, Firmware) |
| parcreate -P newpar -c 2:base:y:ri -I 0/0/0/0 | Neue nPar mit Zelle 2 und I/O-Chassis anlegen |
| parmodify -p 1 -a c:4:base:y:ri | Zelle zu Partition 1 hinzufügen (Reboot nötig) |
| parmodify -p 1 -d c:4 | Zelle aus der Partition entfernen |
| parmodify -p 1 -b 0/0/2/0.6.0 | Primären Bootpfad der Partition setzen |
| parremove -p 2 | Partition löschen (muss inaktiv sein) |
| parunlock -p 1 | Stable Complex Config Data entsperren (nach Abbruch) |
| frupower -d -C 2 | Zelle stromlos schalten (-o = einschalten) |
| parmgr | Partition Manager (Web/GUI) über SMH |
vPars (virtuelle Partitionen)
| vparstatus | Alle vPars mit Status (Up/Down/Load) |
| vparstatus -v | Ausführlich: CPU, RAM und I/O je vPar |
| vparstatus -p vpar1 -v | Details einer vPar |
| vparstatus -A | Nicht zugewiesene (freie) Ressourcen |
| vparcreate -p vpar1 -a cpu::2 -a mem::4096 -a io:0.0.1.2 | vPar mit 2 CPUs, 4 GB und einem I/O-Pfad anlegen |
| vparmodify -p vpar1 -a cpu::1 | Eine CPU hinzufügen (-d cpu::1 = entfernen) |
| vparmodify -p vpar1 -a mem::2048 | Speicher zuweisen (bei laufender vPar teils nur mit Reboot) |
| vparboot -p vpar1 | vPar starten |
| vparreset -p vpar1 -t | TOC auslösen (Dump erzwingen); -h = hartes Reset |
| vparremove -p vpar1 | vPar-Definition löschen |
| MON> vparload -p vpar1 | Vom vPar-Monitor aus booten (-all = alle) |
| vparenv | Aktuellen Boot-Modus anzeigen (vPars oder nPars) |
| vparenv -m vPars | Modus für den nächsten Boot umschalten |
HP Integrity Virtual Machines (HPVM)
| hpvmstatus | Alle VMs mit Status, CPU- und RAM-Zuweisung |
| hpvmstatus -V -P vm1 | Ausführliche Konfiguration einer VM |
| hpvmstatus -r | Ressourcenverbrauch der VMs auf dem Host |
| hpvmcreate -P vm1 -O hpux -c 2 -r 4G | VM mit 2 vCPUs und 4 GB anlegen |
| hpvmmodify -P vm1 -a disk:scsi::disk:/dev/rdisk/disk15 | Platte zuweisen |
| hpvmmodify -P vm1 -a network:lan::vswitch:vsw1 | Netzwerk über virtuellen Switch zuweisen |
| hpvmstart -P vm1 / hpvmstop -P vm1 | VM starten / sauber stoppen (-F = erzwingen) |
| hpvmconsole -P vm1 | Auf die VM-Konsole schalten (Verlassen mit Ctrl-B) |
| hpvmnet | Virtuelle Switches anzeigen/verwalten |
| hpvmdevmgmt -l all | Geräte-Datenbank des Hosts (Doppelzuweisungen finden) |
| hpvmremove -P vm1 | VM-Definition löschen |
| hpvminfo | Innerhalb des Gastes: läuft ich als HPVM-Guest? |
iCAP / Instant Capacity
| icapstatus | Aktive und inaktive Cores, verfügbare Rechte, TiCAP-Guthaben |
| icapmodify -a 2 | 2 zusätzliche Cores aktivieren |
| icapmodify -d 2 | 2 Cores deaktivieren |
| icapnotify -s | Konfiguration der Meldungen an HP (Asset-Reporting) |
Drei Ebenen: nPars trennen elektrisch auf Zellenebene (höchste
Isolation, Reboot für Änderungen), vPars teilen eine nPar softwareseitig auf (CPU-Zuweisung
online möglich), HPVM virtualisiert vollständig mit Overcommitment. Eine Maschine kann
nicht gleichzeitig im vPars- und im reinen nPars-Modus laufen –
vparenv -m und ein Reboot sind dafür nötig.
parmodify und parremove schreiben in die
Stable Complex Configuration Data des gesamten Komplexes. Ein Fehler betrifft alle
Partitionen. Vorher parstatus -V -p <n> > /tmp/par_ist.txt sichern und die
Aktion im Wartungsfenster mit MP-Konsolenzugriff durchführen.
📄Wichtige Dateien & Verzeichnisse
| /etc/fstab | Mount-Tabelle (/etc/mnttab = aktuell gemountet) |
| /etc/lvmtab, /etc/lvmtab_p | VG-zu-PV-Zuordnung (Legacy / persistente DSFs) |
| /etc/lvmconf/*.conf | LVM-Metadatensicherungen aus vgcfgbackup |
| /etc/lvmpvg | Physical Volume Groups (PVG-strict Mirroring) |
| /etc/rc.config.d/ | Konfigurationsvariablen aller Dienste |
| /sbin/init.d/, /sbin/rc[0-4].d/ | Startskripte und Runlevel-Verlinkung |
| /etc/inittab | Default-Runlevel und Gettys |
| /stand/vmunix, /stand/system | Kernel und Kernel-Konfiguration |
| /stand/current, /stand/nextboot, /stand/backup | 11.31: Kernel-Konfigurationssätze |
| /stand/bootconf | Bootplatte für Ignite/Update |
| /etc/nsswitch.conf, /etc/resolv.conf, /etc/hosts | Namensauflösung |
| /etc/services, /etc/inetd.conf, /var/adm/inetd.sec | Dienste, inetd und Zugriffskontrolle |
| /etc/dfs/dfstab (11.31) bzw. /etc/exports | NFS-Freigaben |
| /etc/passwd, /etc/group, /etc/shadow | Benutzerdatenbank |
| /etc/default/security, /var/adm/userdb | Passwort-Policies systemweit / je User |
| /tcb/files/auth/ | Trusted System: Passwort- und Audit-Daten |
| /etc/rbac/ | RBAC-Datenbanken (roles, auths, cmd_priv) |
| /etc/profile, /etc/csh.login | Login-Umgebung für alle User |
| /etc/PATH, /etc/MANPATH, /etc/SHLIB_PATH | Systemweite Pfadbausteine (von /etc/profile gelesen) |
| /etc/TIMEZONE | Systemzeitzone (wird von /sbin/rc gelesen) |
| /etc/issue, /etc/motd, /etc/copyright | Banner vor und nach dem Login |
| /var/adm/syslog/syslog.log, mail.log | System- und Mail-Log |
| /var/adm/rc.log | Ausgabe der Startskripte |
| /var/adm/sw/ | SD-Logs und Installed Products Database |
| /var/adm/crash/ | Gerettete Crash Dumps |
| /var/stm/logs/os/ | STM-Hardware-Eventlogs |
| /var/tombstones/ | PA-RISC-Tombstones (HPMC) |
| /var/opt/resmon/log/event.log | EMS-Hardware-Events |
| /var/spool/cron/crontabs/ | Crontabs aller User |
| /etc/cmcluster/ | Serviceguard-Konfiguration |
| /var/opt/ignite/ | Ignite-UX-Archive und Recovery-Protokolle |
| /dev/vgXX/group | Gruppendatei einer Volume Group (Minor-Nummer!) |
| /dev/disk/diskN, /dev/rdisk/diskN | 11.31: persistente Block-/Raw-Devices |
| /dev/dsk/c#t#d#, /dev/rdsk/c#t#d# | Legacy-Block-/Raw-Devices |
| /dev/vx/dsk/<dg>/<vol> | VxVM-Volumes |
| /opt/<produkt>, /etc/opt/<produkt>, /var/opt/<produkt> | Programm, Konfiguration und variable Daten von Zusatzsoftware |
Standard-LVs in vg00 (Ignite-Layout)
| /dev/vg00/lvol1 | /stand – Kernel; auf 11.11/11.23 HFS! |
| /dev/vg00/lvol2 | Primärer Swap und Dump-Device |
| /dev/vg00/lvol3 | Root-Filesystem / |
| /dev/vg00/lvol4 … lvol8 | /tmp · /home · /opt ·
/usr · /var |
Diese Dateien gehören in jedes Change-Backup:
/etc/fstab, /etc/lvmtab*, /etc/lvmconf/,
/etc/rc.config.d/, /etc/nsswitch.conf, /etc/resolv.conf,
/etc/hosts, /etc/passwd+/etc/group,
/var/spool/cron/crontabs/, /etc/cmcluster/ sowie die Ausgaben von
swlist -l patch, vgdisplay -v, bdf, setboot
und print_manifest.
🔧SMH/SAM, Shell-Tipps & Praxis-Workflows
SMH und SAM
| smh | System Management Homepage – TUI im Terminal (11.31) |
| sam | Auf 11.31 nur noch ein Verweis auf smh |
| https://<host>:2381/ | Weboberfläche der SMH |
| /opt/hpsmh/bin/smhstartconfig -a on | Autostart des SMH-Webservers ein-/ausschalten |
| kcweb | Kernel-Konfiguration (Tunables, Module) in der SMH |
| parmgr | Partition Manager für nPars/vPars |
| evweb | Event-Viewer und Abo-Verwaltung |
| /var/sam/log/samlog | Protokoll der über SAM/SMH ausgeführten Aktionen |
| samlog_viewer -l vv | SAM-Log inkl. der abgesetzten Kommandos anzeigen – ideal zum Lernen |
Shell & Textwerkzeuge
| echo $SHELL; /usr/bin/sh | Standard ist die POSIX-Shell (/usr/bin/sh), nicht bash |
| set -o vi | vi-Editiermodus (Esc + k blättert durch die History) |
| whence -v kommando; which kommando; type kommando | Pfad und Typ eines Kommandos |
| catman -w | Manpage-Index bauen – erst danach funktioniert man -k |
| man -k stichwort | Manpages nach Stichwort durchsuchen |
| grep -n -i "muster" datei | Suche mit Zeilennummern, ohne Groß-/Kleinschreibung |
| sed -e 's/alt/neu/g' datei > neu.txt | Textersetzung |
| awk '{print $1, $5}' datei | Spalten extrahieren |
| for vg in $(vgdisplay | awk '/VG Name/{print $3}'); do vgdisplay -v $vg; done | Schleife über alle VGs |
| script /tmp/session_$(date +%F).log | Komplette Terminalsitzung protokollieren (Change-Nachweis) |
| tee -a /tmp/log | Ausgabe anzeigen und gleichzeitig mitschreiben |
| gzip -9 / gunzip / compress | Komprimieren (HP-Depots kommen oft als .depot.gz) |
| strings /etc/lvmtab | Binärdateien lesbar machen – hier: VG/PV-Zuordnung |
| what /stand/vmunix | head | Versionsinformationen aus einem Binäry ziehen |
Workflow: Neue SAN-LUN einbinden und Filesystem anlegen
# 1. LUN im SAN zonen/mappen, dann auf dem Host sichtbar machen
fcmsutil /dev/fcd0 # Link up? WWPN notiert?
ioscan -fnC fc # HBAs CLAIMED?
ioscan -N -funC disk # neue LUN suchen (11.31 agile)
insf -e # fehlende Geraetedateien anlegen
ioscan -m dsf | grep disk15 # Legacy-/Agile-Zuordnung pruefen
diskinfo -v /dev/rdisk/disk15 # Groesse verifizieren
# 2. LVM: PV anlegen und VG erweitern
pvcreate /dev/rdisk/disk15
vgextend /dev/vgdata /dev/disk/disk15
vgdisplay /dev/vgdata | grep -e "Free PE" -e "PE Size"
vgcfgbackup /dev/vgdata # Pflicht nach jeder Aenderung!
# 3. LV und Filesystem
lvcreate -L 51200 -n lvapp /dev/vgdata # 50 GB
newfs -F vxfs -o largefiles /dev/vgdata/rlvapp
mkdir -p /app
mount -F vxfs -o delaylog /dev/vgdata/lvapp /app
bdf /app
# 4. Reboot-fest machen
echo "/dev/vgdata/lvapp /app vxfs delaylog 0 2" >> /etc/fstab
umount /app && mount /app # fstab-Eintrag testen!
Workflow: VxFS online vergrößern (OnlineJFS)
bdf /app # Ist-Groesse
lvdisplay /dev/vgdata/lvapp | grep -e "LV Size" -e "Current LE"
vgdisplay /dev/vgdata | grep "Free PE" # genug Platz in der VG?
lvextend -L 76800 /dev/vgdata/lvapp # ZIELgroesse 75 GB, nicht Zuwachs!
vgcfgbackup /dev/vgdata
# Zielgroesse in Sektoren: GB * 1024 * 1024 * 2 -> 75 GB = 157286400
fsadm -F vxfs -b 157286400 /app
bdf /app
# Ohne OnlineJFS-Lizenz nur offline moeglich:
# umount /app; extendfs -F vxfs /dev/vgdata/rlvapp; mount /app
Workflow: Patch-Bundle einspielen
# 1. Ist-Zustand und Rollback-Basis
swlist -l patch > /tmp/patches_vorher.txt
swlist -l bundle > /tmp/bundles_vorher.txt
kconfig -s vor_patch # Kernel-Konfiguration sichern
bdf /var /stand /tmp # Platz? /var braucht am meisten
make_net_recovery -s ignitesrv -A -v -x inc_entire=vg00
# 2. Depot bereitstellen und Preview fahren
swcopy -s /tmp/QPK1131.depot \* @ /var/depot
swinstall -p -s /var/depot -x patch_match_target=true \*
grep -i -e ERROR -e WARNING /var/adm/sw/swinstall.log
# 3. Installieren
swinstall -s /var/depot -x patch_match_target=true \
-x autoreboot=true -x mount_all_filesystems=false \*
# 4. Nacharbeit
swlist -l patch > /tmp/patches_nachher.txt
diff /tmp/patches_vorher.txt /tmp/patches_nachher.txt
swverify \* # muss ohne ERROR durchlaufen
uname -r; swlist -l bundle | grep -i QPK
cleanup -p # spaeter: -c 1 zum Aufraeumen
Workflow: Plattenausfall analysieren
dmesg | tail -40 # SCSI-/LVM-Meldungen
tail -100 /var/adm/syslog/syslog.log
ioscan -fnC disk | grep -v CLAIMED # NO_HW / unclaimed?
vgdisplay -v /dev/vgdata | grep -i -e stale -e "PV Status" -e "Cur PV"
pvdisplay /dev/disk/disk15 # Status "unavailable"?
diskinfo -v /dev/rdisk/disk15 # antwortet die Platte ueberhaupt?
scsimgr get_info -D /dev/rdisk/disk15 # 11.31: Pfade und Fehlerzaehler
fcmsutil /dev/fcd0 stat # Link Failures auf dem HBA?
cstm # map / sel dev N / info / il
# Platte getauscht -> LVM wieder gerade ziehen
insf -e
scsimgr replace_wwid -D /dev/rdisk/disk15
vgcfgrestore -n /dev/vgdata /dev/rdisk/disk15
vgchange -a y /dev/vgdata
vgsync /dev/vgdata # Mirror neu aufbauen
vgdisplay -v /dev/vgdata | grep -i stale # muss 0 werden
vgcfgbackup /dev/vgdata
Merksatz für HP-UX: Fast alles wird an zwei Stellen gepflegt –
das laufende System (ifconfig, mount, swapon,
ndd -set) und die Konfigurationsdatei für den nächsten Boot
(/etc/rc.config.d/*, /etc/fstab, nddconf).
Wer nur eine Seite ändert, hat spätestens beim nächsten Reboot ein Problem.
Drei Dinge, die HP-UX-Neulinge stolpern lassen:
(1) bdf statt df -k; (2) Größenangaben bei
lvextend/fsadm sind absolute Zielgrößen, kein Zuwachs;
(3) ps -eo braucht ein vorangestelltes UNIX95=.