Keine Treffer – Suchbegriff anpassen.
💻System- & Hardware-Informationen
| uname -a | OS-Name, Hostname, Release, Version, Architektur (alpha) |
| uname -r; uname -v | Release (V5.1) und Version/Build-Kennung |
| sizer -v | Genaue OS-Version, z. B. Compaq Tru64 UNIX V5.1B (Rev. 2650) |
| sizer -p | Anzahl der Prozessoren |
| sizer -b | Name des aktuell gebooteten Kernels (meist vmunix) |
| sizer -n TESTKERN | Kernel-Konfigurationsdatei aus laufendem System erzeugen |
| psrinfo -n | Anzahl der online Prozessoren |
| psrinfo -v | Prozessor-Details: Typ, Takt, Status |
| vmstat -P | Physische Speicherbelegung (Wired, Active, Free, Cache) |
| swapon -s | Swap-Geräte mit Größe und Auslastung |
| df -k; df -k -t advfs | Filesystem-Belegung in KB, optional nur AdvFS |
| uptime; w | Laufzeit, Load Average, angemeldete Benutzer |
| who -r | Aktueller Runlevel |
| last reboot | head | Reboot-Historie |
| /usr/sbin/lmf list | Lizenzen (PAKs), z. B. ADVFS-UTILITIES, LSM, TCS |
| lmf list full | Alle Lizenzdetails inkl. Producer und Ablaufdatum |
hwmgr – Hardware Manager
| hwmgr view devices | Alle Geräte mit HWID, Device-Special-File, Hersteller, Modell, Location |
| hwmgr view devices -cluster | Geräte aller Cluster-Mitglieder |
| hwmgr view devices -cat disk | Nur eine Kategorie anzeigen (disk, tape …) |
| hwmgr view hierarchy | Hardware-Baum: Platform → Bus → Adapter → Gerät |
| hwmgr view hierarchy -id 45 | Teilbaum ab einer HWID |
| hwmgr view cluster | Status jedes Cluster-Mitglieds (nur im Cluster) |
| hwmgr get category | Verfügbare Hardware-Kategorien auflisten |
| hwmgr get attr -cat platform -a name | Systemtyp/Modell, z. B. AlphaServer DS20E |
| hwmgr get attr -cat cpu -a sub_category -a speed | CPU-Typ (EV6/EV67 …) und Taktfrequenz |
| hwmgr get attr -cat network -a name -a media_speed -a link | Netzwerkkarten mit Speed und Link-Status |
| hwmgr show scsi | Alle SCSI-Geräte mit HWID, DSF-Name und Pfaden |
| hwmgr show scsi -type disk | Nur Platten inkl. aller Zugriffspfade |
| hwmgr show component -full | Alle Komponenten mit vollem Detail (inkl. DSF-Gruppe) |
| hwmgr status component -ngood | Komponenten, die nicht im Status „good“ sind |
Kernel-Subsysteme abfragen
| sysconfig -q generic | Attribute des Subsystems generic (u. a. Hostname, maxusers) |
| sysconfig -q vm | Virtual-Memory-Attribute (Swap, UBC, Page-Limits) |
| sysconfigdb -l | Alle Stanzas aus /etc/sysconfigtab auflisten |
| consvar -g sys_serial_num | Seriennummer aus der Konsolen-Umgebung lesen |
| consvar -v -g version | Firmware-/SRM-Version ausführlich |
| sys_check -all > /tmp/syscheck.html | Kompletter Konfigurations- und Tuning-Report als HTML |
Praxis: Vor jedem Change den Ist-Zustand einfrieren:
sizer -v, hwmgr view devices, showfdmn -a, df -k und
swapon -s in eine Datei umleiten – das ersetzt später jede Diskussion.
Merke: hwmgr akzeptiert die Unterkommandos mit und ohne Bindestrich
(hwmgr view devices = hwmgr -view devices) und erlaubt Abkürzungen
(hwmgr -v d, hwmgr -sho fibre).
⏻SRM-Konsole, Boot & Firmware
SRM-Konsole (Prompt >>>)
| show config | Komplette Hardware-Konfiguration: CPUs, Speicher, PCI-Slots |
| show device | Alle bootfähigen Geräte (dka0, dqa0, ewa0 …) |
| show memory | Speicherbestückung und Fehlerstatus |
| show * | Alle Konsolenvariablen ausgeben |
| show bootdef_dev | Standard-Bootgerät anzeigen |
| set bootdef_dev dka0 | Standard-Bootgerät setzen (Mehrfachangabe kommagetrennt) |
| set boot_osflags A | Autoboot in den Multi-User-Modus |
| set auto_action BOOT | Nach Power-On/Reset automatisch booten (HALT = anhalten) |
| boot dka0 | Von einem bestimmten Gerät booten |
| boot -fl s dka0 | Single-User-Modus booten (Wartung, Kernel-Patches) |
| boot dqa0 | Von CD/DVD booten (Installation, Recovery) |
| boot -fl 0,1 dka0 | Alternativen Kernel/Root-Pfad angeben (interaktiver Boot) |
| init | Konsole/Firmware neu initialisieren (nach set-Änderungen) |
| set mode diag; init | Diagnose-Modus für wwidmgr aktivieren |
| wwidmgr -show dev -full | Fibre-Channel-Platten mit UDID/WWID anzeigen |
| wwidmgr -show ada -full | FC-Adapter (emx, pga) und Topologie |
| wwidmgr -quickset -udid 12 | FC-Platte als bootfähiges Gerät eintragen |
| wwidmgr -set ada -item 9999 | NVRAM-Einträge zurücksetzen (nach FC-Adaptertausch) |
| [ESC][ESC] rmc | In das Remote-Management-Console-Menü wechseln (GS-Serie: scm, MBM) |
Konsolenvariablen aus dem laufenden System
| consvar -l | Alle Konsolenvariablen anzeigen (-v -l = ausführlich) |
| consvar -g bootdef_dev | Einzelne Variable lesen |
| consvar -s bootdef_dev dka0 | Variable setzen – zunächst nur im Speicher! |
| consvar -a | Alle Werte dauerhaft ins NVRAM/EEPROM schreiben |
| consvar -g ewa0_mode | Konsolen-Modus einer Netzwerkkarte (Boot-over-LAN) |
| sysconfig -q bparm | Boot-Parameter, mit denen der Kernel gestartet wurde |
Herunterfahren & Runlevel wechseln
| shutdown -h now | System anhalten (zurück zur SRM-Konsole) |
| shutdown -r now | Sofortiger Reboot |
| shutdown now | In den Single-User-Modus wechseln |
| shutdown +10 "Wartung" | In 10 Minuten mit Meldung an alle Benutzer |
| halt; reboot | Harte Varianten – kein sauberer Shutdown der Dienste |
| init 3 / init s / init 0 | Multi-User mit Netz / Single-User / Halt |
| init q | /etc/inittab neu einlesen, ohne Runlevel-Wechsel |
Achtung: consvar -s wirkt nur bis zum nächsten Reset –
ohne abschließendes consvar -a ist die Änderung nach dem Reboot verloren.
Boot-relevante Variablen daher immer direkt an der SRM-Konsole prüfen.
🔄Init, Runlevel & rc.config
| rcmgr get HOSTNAME | Runtime-Konfigurationsvariable lesen |
| rcmgr set HOSTNAME srv01 | Variable in /etc/rc.config setzen |
| rcmgr delete VARNAME | Variable entfernen |
| rcmgr -c get NFS_CONFIGURED | Aus der clusterweiten /etc/rc.config.common lesen |
| rcmgr -c set NUM_NFSD 16 | Clusterweit setzen (gilt für alle Mitglieder) |
| rcmgr -s get VARNAME | Aus der sitewide /etc/rc.config.site lesen |
| rcmgr get SECURITY | BASE oder ENHANCED – Sicherheitsmodus des Systems |
| rcmgr get NETDEV_0; rcmgr get IFCONFIG_0 | Erstes Netzwerkinterface und dessen ifconfig-Zeile |
| rcmgr get DEFAULTROUTER | Konfiguriertes Standard-Gateway |
Startskripte & Runlevel
| /etc/inittab | Init-Einträge, Konsolen-Gettys, Default-Runlevel |
| /sbin/init.d/ | Alle Start-/Stop-Skripte (Aufruf: /sbin/init.d/nfs restart) |
| /sbin/rc0.d, /sbin/rc2.d, /sbin/rc3.d | Runlevel-Verzeichnisse mit S*/K*-Symlinks |
| /sbin/init.d/autosysconfig list | Beim Boot automatisch geladene dynamische Kernel-Module |
| /sbin/init.d/autosysconfig add envmon | Modul zum Autoload hinzufügen (delete = entfernen) |
| 0 | Halt – System angehalten |
| s / S | Single-User (nur / gemountet, kein Netz) |
| 2 | Multi-User ohne Netzwerkdienste |
| 3 | Multi-User mit Netzwerk – normaler Betriebszustand |
Wichtig: Auf Tru64 werden Dienste nicht in den Startskripten selbst
aktiviert, sondern über Variablen in /etc/rc.config*. Immer rcmgr benutzen –
manuelles Editieren zerstört leicht die Datei-Hierarchie und im Cluster die Konsistenz.
🧠Kernel, Subsysteme & Tuning
sysconfig – Subsysteme zur Laufzeit
| sysconfig -s | Alle geladenen und konfigurierten Subsysteme mit Status |
| sysconfig -m | Subsysteme getrennt nach static und dynamic |
| sysconfig -q advfs | Aktuelle Werte aller Attribute eines Subsystems |
| sysconfig -q vm vm_swap_eager | Einzelnes Attribut abfragen |
| sysconfig -Q vm ubc_maxpercent | Grenzwerte und Veränderbarkeit (C=Config, R=Runtime, Q=Query) |
| sysconfig -d proc | In /etc/sysconfigtab hinterlegte Werte anzeigen |
| sysconfig -r proc max_per_proc_stack_size=8388608 | Attribut sofort ändern (nur bei op=R, nicht persistent) |
| sysconfig -c envmon | Dynamisches Kernel-Modul laden (hier: Umgebungs-/Temperatursensoren) |
| sysconfig -u envmon | Dynamisches Modul entladen |
| man sys_attrs_vm | Manpage aller Attribute eines Subsystems (sys_attrs_<subsys>) |
sysconfigdb – dauerhafte Kernel-Parameter
| sysconfigdb -l | Alle Stanzas aus /etc/sysconfigtab |
| sysconfigdb -l vm | Nur eine Stanza anzeigen |
| sysconfigdb -a -f /tmp/vm.stanza vm | Neue Stanza aus Datei hinzufügen |
| sysconfigdb -m -f /tmp/vm.stanza vm | Bestehende Stanza zusammenführen/ändern (empfohlen) |
| sysconfigdb -u -f /tmp/vm.stanza vm | Stanza komplett ersetzen |
| sysconfigdb -d vm | Stanza entfernen |
# Stanza-Format fuer sysconfigdb (/tmp/vm.stanza)
vm:
vm_swap_eager = 0
ubc_maxpercent = 80
sysconfigdb -m -f /tmp/vm.stanza vm
sysconfigdb -l vm # Kontrolle
shutdown -r now # Config-only-Attribute erst nach Reboot aktiv
Kernel neu bauen (doconfig)
| doconfig | Interaktiv: Konfigurationsdatei bearbeiten und Kernel bauen |
| doconfig -c SRV01 | Kernel aus /sys/conf/SRV01 bauen, ohne Menü |
| /sys/conf/<HOSTNAME> | Kernel-Konfigurationsdatei (Sektionen options, pseudo-device) |
| /sys/<HOSTNAME>/vmunix | Ergebnis des Builds – vor dem Kopieren /vmunix sichern! |
| cp /vmunix /vmunix.ok | Alten Kernel sichern (an der SRM-Konsole bootbar) |
| dxkerneltuner | Grafisches Werkzeug zum Anpassen von Kernel-Attributen |
| sys_check -all > /tmp/sc.html | Analyse mit Tuning-Empfehlungen und Warnungen |
Kernel-Build: doconfig nie ohne gesicherten Alt-Kernel.
Nach cp /sys/HOST/vmunix /vmunix muss ein Reboot folgen – wenn der neue Kernel nicht
startet, an der Konsole boot dka0 -fl "0,vmunix.ok" bzw. den gesicherten Kernel angeben.
Reihenfolge: Erst sysconfig -Q prüfen. Ist das Attribut
R (Runtime), reicht sysconfig -r plus Eintrag über sysconfigdb.
Nur wenn ein statisches Subsystem oder eine options-Zeile nötig ist, wird
doconfig gebraucht.
🔌Devices, hwmgr & dsfmgr
Geräte suchen und verwalten
| hwmgr -scan scsi | Alle SCSI-/FC-Busse nach neuen Geräten scannen |
| hwmgr -scan scsi -bus 3 | Nur einen Bus scannen – schont Bandlaufwerke |
| hwmgr -scan comp -id 42 | Nur unterhalb einer bestimmten Komponente scannen |
| hwmgr refresh scsi -all | Veraltete SCSI-Pfade entfernen (beschleunigt den Boot) |
| hwmgr refresh component | Nicht mehr konfigurierte Komponenten aus der Datenbank räumen |
| hwmgr -delete component -id 121 | Komponente/Gerät aus der Hardware-Datenbank löschen |
| hwmgr -redirect scsi -src 58 -dest 71 | Device-Namen einer ersetzten Platte auf die neue umlenken |
| hwmgr unindict -id 2 | Fehlerstatus („indicted“) einer Komponente zurücksetzen |
| hwmgr locate component -id 66 -time 60 | LED der Platte 60 s blinken lassen |
| hwmgr online -id 700 / offline -id 700 | Komponente (z. B. CPU) online/offline nehmen |
| hwmgr -get attr -id 357 | Alle Attribute einer Komponente ausgeben |
| hwmgr -get attr -cat disk | grep -E "dev_base_name|path_state" | Pfadstatus aller Platten prüfen |
| hwmgr -sho fibre | Fibre-Channel-Übersicht |
| hwmgr -sho fibre -adapter -topology | FC-Adapter mit Topologie (Fabric/Loop) |
dsfmgr – Device Special Files
| dsfmgr -s | Komplette Device-Datenbank und alle /dev-Knoten anzeigen |
| dsfmgr -v | Datenbank und /dev-Baum verifizieren |
| dsfmgr -V -F -v | Gefundene Fehler automatisch korrigieren |
| dsfmgr -K | Alle Device-Special-Files neu erzeugen (läuft auch beim Boot) |
| dsfmgr -k | Nur für neu hinzugekommene Geräte DSFs anlegen |
| dsfmgr -n dsk10a | Einzelnen Device-Knoten neu erzeugen |
| dsfmgr -m dsk5 dsk0 | Device-Namen verschieben (Ersatzplatte erbt alten Namen) |
| dsfmgr -e tape1 tape0 | Device-Namen zweier gleichartiger Geräte tauschen |
| dsfmgr -R hwid 25 | Kernel-Eintrag der DSFs einer gelöschten HWID entfernen |
| dsfmgr -vI | Instanz-Nummern auf den kleinstmöglichen Wert zurücksetzen |
| dn_setup -install_tape | Tape-Devices nachträglich anlegen (z. B. nach CD-Boot) |
Namensschema & Disklabel
| /dev/disk/dsk10c | Block-Device, Partition c = gesamte Platte |
| /dev/rdisk/dsk10c | Raw-/Character-Device derselben Partition |
| /dev/disk/cdrom0c, /dev/disk/floppy0c | CD-ROM und Diskette |
| /dev/ntape/tape0, /dev/tape/tape0 | Bandlaufwerk ohne / mit Rewind (_d0…_d3 = Dichte) |
| disklabel -r dsk10 | Partitionstabelle einer Platte lesen |
| disklabel -rw dsk10 | Standard-Label schreiben – Pflicht bei jeder neuen Platte |
| disklabel -e dsk10 | Label im Editor anpassen (Partitionsgrößen, fstype) |
| disklabel -z dsk10 | Label löschen – Platte gilt danach als unbeschrieben |
| disklabel -r dsk35 > /tmp/l; disklabel -Rr dsk39 /tmp/l | Label klonen (identische Partitionierung mehrerer Platten) |
| file /dev/rdisk/dsk10c | Zeigt an, ob und wie die Platte belegt ist |
| iostat 2 5 | I/O-Last je Platte, 5 Messungen im 2-Sekunden-Takt |
| dd if=/dev/rdisk/dsk10c of=/dev/null bs=64k count=1000 | Lesetest / Platte durch LED-Aktivität identifizieren |
| mt -f /dev/ntape/tape0 status | Bandlaufwerk-Status (rewind, fsf 1, offline) |
| lan_config -i ee0 -s 100 -x 1 | Netzwerkkarte auf 100 Mbit/Full-Duplex festnageln |
scu – SCSI CAM Utility
| scu | Interaktives SCSI-Werkzeug starten |
| scu> sbtl 1 0 0 | Ziel setzen: Bus 1, Target 0, LUN 0 |
| scu> show nexus; tur; show inquiry | Adressierung, Test-Unit-Ready, Hersteller/Modell |
| scu> show capacity | Kapazität der adressierten Platte |
| scu> show path all capa | Alle SCSI-Pfade mit Fähigkeiten |
| scu> show keys | Persistent Reservations einer Platte anzeigen |
| scu> preserve clear key 0x8… | Hängende Reservation lösen (nur mit nur einem aktiven Knoten!) |
Reservation-Falle: Persistent Reservations auf Shared-SCSI-/SAN-Platten
verhindern jeden Zugriff. Vor dem Freigeben müssen alle anderen Cluster-Knoten
gestoppt sein – sonst droht Datenkorruption.
Neue Platte: Ohne disklabel -rw dskN ist eine Platte für AdvFS,
UFS und LSM nicht nutzbar. Reihenfolge immer: hwmgr -scan scsi →
hwmgr view devices → dsfmgr -k → disklabel -rw.
🗃AdvFS – Domains & Filesets
Anlegen & Mounten
| mkfdmn /dev/disk/dsk10c data_domain | Neue Domain mit erstem Volume erzeugen |
| mkfdmn -p 256000 -x 4096 /dev/disk/dsk10c big_domain | BMT vorab dimensionieren (-p Startgröße, -x Extent) |
| mkfset data_domain data_fset | Fileset in einer Domain anlegen (mehrere pro Domain möglich) |
| mount -t advfs data_domain#data_fset /data | Fileset mounten – Schreibweise domain#fset |
| mount -t advfs -o ro data_domain#data_fset /mnt | Nur lesend mounten |
| mount -o delayed,noatimes data_domain#fset /data | Performance-Optionen (Metadaten verzögert, keine atime-Flüsse) |
| /etc/fstab | Eintrag: data_domain#data_fset /data advfs rw 0 2 |
| /etc/fdmns/data_domain/ | Verzeichnis mit Symlinks auf alle Volumes der Domain |
| mountlist -v | Alle gemounteten AdvFS-Filesets auflisten |
Anzeigen & Prüfen
| showfdmn data_domain | Volumes, Größe, freie Blöcke, Log-Volume der Domain |
| showfsets data_domain | Alle Filesets mit Dateianzahl, Quota und Clone-Status |
| showfsets -k data_domain | Werte in Kilobyte statt Blöcken |
| showfile -x /data/datei | Extents, Fragmentierung und Striping einer Datei |
| vdf data_domain | Platzverbrauch von Domain und Filesets kompakt |
| df -k -t advfs | Nur AdvFS-Filesets in der df-Ausgabe |
| advscan -a /dev/disk | Platten nach AdvFS-Partitionen durchsuchen |
| advscan dsk101 | Eine bestimmte Platte prüfen: zu welcher Domain gehört sie? |
| advscan -r dsk101 dsk102 | /etc/fdmns aus den Plattenlabels rekonstruieren |
| advscan -f data_domain | Einträge einer einzelnen Domain wiederherstellen |
| advfsstat -b data_domain | Buffer-Cache-Statistik der Domain |
| advfsstat -v 2 data_domain | Volume-Statistik (Lese-/Schreibverteilung je Volume) |
| advfsstat -l 2 data_domain | Lock-Statistik (Detailstufen 0–2) |
Volumes hinzufügen, entfernen, balancieren
| addvol /dev/disk/dsk11c data_domain | Volume online zur Domain hinzufügen (AdvFS Utilities) |
| rmvol /dev/disk/dsk11c data_domain | Volume entfernen – Daten werden vorher migriert |
| chvol -A /dev/disk/dsk11c data_domain | Volume nach einem Fehler wieder aktivieren |
| chvol -r 256 -w 256 /dev/disk/dsk10c data_domain | Max. Lese-/Schreibblöcke je I/O anpassen |
| balance data_domain | Belegung gleichmäßig auf alle Volumes verteilen |
| switchlog data_domain 2 | Transaction-Log auf ein anderes Volume legen |
| migrate /data/grossedatei | Einzelne Datei innerhalb der Domain verschieben |
| stripe -n 2 /data/datei | Datei über 2 Volumes streifen (AdvFS Utilities) |
Defragmentieren & Vfast
| defragment -nv data_domain | Nur analysieren: Fragmentierungsgrad anzeigen |
| defragment -v data_domain | Domain online defragmentieren |
| defragment -t 30 -v data_domain | Defragmentieren mit Zeitlimit von 30 Minuten |
| defragcron -T 30 -p | Alle Domains parallel, zeitbegrenzt – typisch für cron |
| vfast -o defragment=enable,balance=enable data_domain | Automatische Hintergrund-Optimierung einschalten (5.1B) |
| vfast status data_domain | Vfast-Einstellungen und Aktivität anzeigen |
Filesets ändern, Clones & Reparatur
| clonefset data_domain data_fset data_clone | Read-only-Snapshot eines Filesets erzeugen |
| mount -t advfs -o ro data_domain#data_clone /mnt/clone | Clone mounten – Basis für konsistentes Online-Backup |
| rmfset data_domain data_clone | Clone (oder Fileset) löschen – vorher unmounten |
| renamefset data_domain alt neu | Fileset umbenennen |
| chfsets -o nofrag data_domain data_fset | Frag-File abschalten (Dateien belegen Vielfache von 8 KB) |
| rmfdmn data_domain | Leere Domain entfernen (löscht /etc/fdmns-Eintrag) |
| verify data_domain | Domain- und Fileset-Struktur prüfen (Domain unmounten!) |
| fixfdmn -n data_domain | Metadaten prüfen, ohne zu schreiben |
| fixfdmn data_domain | Beschädigte Metadaten reparieren |
| savemeta data_domain /var/tmp/meta | Metadaten-Snapshot vor jeder Reparatur sichern |
| salvage -v data_domain | Daten aus einer nicht mehr mountbaren Domain retten |
| salvage -d /rescue data_domain | Gerettete Daten in ein Zielverzeichnis schreiben |
| quotaon /data; quotaoff /data | Quotas ein-/ausschalten |
| edquota -u meier | User-Quota bearbeiten (-g für Gruppen) |
| repquota -v data_domain#data_fset | Quota-Report je Fileset |
| quot -f /data | Belegung nach Benutzer aufgeschlüsselt |
| quotacheck -guv data_domain#data_fset | Quota-Datenbank neu berechnen |
Vor jedem rmvol: immer showfdmn data_domain prüfen.
rmvol muss alle Daten des Volumes auf die verbleibenden Volumes verschieben –
ist dort zu wenig Platz oder liegt das Transaction-Log auf dem Volume, bricht der Vorgang ab
und die Domain kann in einem halben Zustand zurückbleiben.
/etc/fdmns: Eine Domain ist nichts weiter als ein Verzeichnis unter
/etc/fdmns/<domain> mit Symlinks auf die Volumes. Symlinks niemals von Hand
umbiegen – nach Storage-Migration stattdessen advscan -r bzw.
advscan -f <domain> verwenden. Domain-Namen sind frei wählbar, aber
systemweit eindeutig; bewährt hat sich <zweck>_domain.
Fragmentierung prüfen: showfile -x /data/.tags/1 zeigt das
Frag-File, showfile -x /data/.tags/M-10 die BMT. Viele Extents dort sind der
häufigste Grund für schleichenden Performance-Verlust einer alten Domain.
📁UFS & Filesystem-Basics
| newfs /dev/rdisk/dsk10g | UFS auf einer Partition anlegen (Raw-Device!) |
| mount -t ufs /dev/disk/dsk10g /mnt | UFS mounten |
| mount; mount -a | Gemountete FS anzeigen / alle aus /etc/fstab mounten |
| mount -u /data | Von read-only auf read-write hochziehen (Single-User-Boot) |
| umount /mnt | Aushängen |
| fuser -c /mnt | Wer benutzt das Filesystem (PIDs) |
| fuser -k -c /mnt | Alle Zugriffe beenden, danach umount |
| fsck -p /dev/rdisk/dsk10g | Preen-Modus: nur unkritische Fehler automatisch beheben |
| fsck -y /dev/rdisk/dsk10g | Alle Rückfragen mit yes beantworten (nur ungemountet!) |
| dumpfs /dev/rdisk/dsk10g | head -20 | Superblock-Parameter: Blockgröße, Inodes, minfree |
| tunefs -m 5 /dev/rdisk/dsk10g | Reservierten Anteil (minfree) auf 5 % setzen |
| df -k; df -i /var | Belegung in KB / Inode-Auslastung |
| du -sk /var/* | sort -rn | head -20 | Größte Unterverzeichnisse finden |
| find /var -xdev -size +20000 -exec ls -l {} \; | Große Dateien ohne Mount-Grenzen zu überschreiten |
| ncheck -i 1234 /dev/rdisk/dsk10g | Pfadname zu einer Inode-Nummer ermitteln |
| /etc/fstab | Mount-Tabelle (AdvFS, UFS, NFS, LSM-Volumes) |
UFS-Grenze: Ein UFS entspricht genau einer Plattenpartition und lässt sich
nicht online vergrößern. Wachstumsfähige Daten gehören auf AdvFS
(addvol) oder auf ein LSM-Volume. UFS bleibt sinnvoll für kleine,
statische Bereiche und Disketten.
Backup-Regel: vdump/vrestore arbeiten nur mit AdvFS,
dump/restore nur mit UFS. Die Werkzeuge sind nicht austauschbar.
🧩LSM – Logical Storage Manager
Initialisierung & Platten
| volsetup dsk10 | LSM erstmalig initialisieren, erste Platte in rootdg |
| voldctl mode | Status des Konfigurations-Daemons vold prüfen |
| voldisk list | Alle LSM-Platten mit Disk-Group und Status |
| voldisk -f init dsk12 | Platte für LSM initialisieren (Private Region anlegen) |
| voldisksetup -i dsk12 privlen=4096 | Platte mit definierter Größe der Private Region einrichten |
| voldisk rm dsk12 | Platte aus der LSM-Konfiguration entfernen |
| voldg init datadg dsk12 | Neue Disk-Group mit erster Platte erzeugen |
| voldg -g datadg adddisk dsk13 | Platte zur Disk-Group hinzufügen |
| voldg -g datadg -k rmdisk dsk13 | Platte aus der Group nehmen, Konfiguration behalten |
| voldg list | Alle Disk-Groups anzeigen |
| voldg -g datadg free | Freien Platz je Platte in der Disk-Group |
Volumes
| volassist -g datadg make vol01 10g | Volume mit 10 GB anlegen |
| volassist -g datadg mirror vol01 | Volume spiegeln (zweiter Plex) |
| volassist -g datadg growto vol01 20g | Volume auf absolute Größe erweitern |
| volassist -g datadg growby vol01 5g | Volume um einen Betrag erweitern |
| volprint -ht | Volumes, Plexes und Subdisks hierarchisch anzeigen |
| volprint -Aht | Wie oben, aber über alle Disk-Groups |
| volume -g datadg start vol01 | Volume starten/verfügbar machen |
| volume -g datadg stop vol01 | Volume stoppen (vorher unmounten) |
| volrecover -sb | Alle Plexes im Hintergrund resynchronisieren und starten |
| volrecover -g datadg -sb dsk13 | Nur die Plexes einer ersetzten Platte resynchronisieren |
| volstat | I/O-Statistik je Volume/Plex |
| volwatch -m root | Ausfall-Überwachung, Mail an root bei Plex-Fehlern |
| volprint -Aht | grep -i wo | Schnellcheck auf Plexes im Zustand write-only/Resync |
Encapsulation & Werkzeuge
| volencap dsk0 | Bestehende Platte/Partition unter LSM-Kontrolle stellen |
| volreconfig | Vorbereitete Encapsulation abschließen (verlangt Reboot) |
| voldiskadm | Menügeführte LSM-Plattenverwaltung |
| dxlsm | Grafische LSM-Oberfläche (X11) |
| /etc/vol/volboot | Startinformation für LSM – unbedingt mitsichern |
| /dev/vol/, /dev/rvol/ | Block- bzw. Raw-Devices der LSM-Volumes |
# Defekte LSM-Platte ersetzen (Disk-Group datadg, alte Platte dsk13)
voldisk list # Status: failed / removed ?
voldg -g datadg -k rmdisk dsk13
voldisk rm dsk13
# --- Platte physisch tauschen, dann: ---
hwmgr -scan scsi
disklabel -z dsk13
disklabel -rw dsk13
voldisksetup -i dsk13 privlen=4096
voldg -g datadg -k adddisk dsk13=dsk13
volrecover -g datadg -sb dsk13
volprint -Aht # bis alle Plexes ACTIVE/ENABLED
AdvFS oder LSM? Beides gleichzeitig ist möglich (AdvFS-Domain auf einem
LSM-Volume), erhöht aber die Komplexität deutlich. In 5.1B ist der übliche Weg:
Spiegelung im Storage-Controller oder per LSM, Kapazitätsverwaltung per AdvFS
addvol.
LSM auf Boot-Platten: Root/usr/var unter LSM machen jede Recovery
aufwändiger. Vor Eingriffen unbedingt /etc/vol/volboot,
/etc/fdmns, /etc/sysconfigtab und /etc/inittab sichern.
📈Swap Space
| swapon -s | Alle Swap-Geräte mit Gesamt-, Frei- und Reserved-Anteil |
| swapon /dev/disk/dsk1b | Swap-Gerät sofort aktivieren (bis zum Reboot) |
| swapon -a | Alle konfigurierten Swap-Geräte aktivieren |
| sysconfig -q vm swapdevice | Konfigurierte Swap-Geräte des Kernels anzeigen |
| sysconfig -q vm vm_swap_eager | Swap-Modus: 1 = Eager, 0 = Lazy |
| vmstat -P | Physische Speicherverteilung – Basis für die Swap-Bewertung |
| vmstat 2 10 | Spalten pin/pout beobachten (Paging-Aktivität) |
| /etc/sysconfigtab | Stanza vm: mit swapdevice und vm_swap_eager |
# Zweites Swap-Geraet dauerhaft konfigurieren
disklabel -rw dsk1 # falls neue Platte
swapon /dev/disk/dsk1b # sofort aktiv, Test
swapon -s
cat > /tmp/vm.stanza <<EOF
vm:
swapdevice = /dev/disk/dsk0b,/dev/disk/dsk1b
EOF
sysconfigdb -m -f /tmp/vm.stanza vm # dauerhaft eintragen
sysconfigdb -l vm # kontrollieren
Eager vs. Lazy: Bei Eager (vm_swap_eager=1, Standard) wird
Swap-Platz bereits bei der Speicheranforderung reserviert – Prozesse scheitern früh und
kontrolliert. Bei Lazy wird erst beim Auslagern reserviert; das erlaubt Overcommit,
kann aber später zu swap space below 10 percent und harten Prozessabbrüchen
führen. Für Datenbankserver Eager beibehalten.
Achtung: Swap-Partitionen (typisch dskNb) dürfen kein
Filesystem enthalten und nicht Teil einer AdvFS-Domain sein. Änderungen an
swapdevice werden erst nach einem Reboot wirksam.
⚙Prozesse, Jobs & IPC
| ps -ef | Alle Prozesse im Full-Format (System-V-Syntax) |
| ps aux | head -20 | BSD-Syntax, nach CPU sortierte Kopfzeilen |
| ps -e -o pid,ppid,user,pcpu,vsz,rss,command | Eigene Spaltenauswahl |
| ps -ef | grep -v grep | grep sshd | Prozess gezielt suchen |
| ps -e -o pid,user,pcpu,command | sort -k3 -rn | head | Top-CPU-Verbraucher |
| kill -TERM 1234 / kill -KILL 1234 | Sauber beenden / hart abschießen |
| kill -HUP `cat /var/run/syslog.pid` | Daemon zum Neulesen der Konfiguration bewegen |
| nice -n 10 cmd; renice 5 -p 1234 | Priorität beim Start / nachträglich setzen |
| nohup script.sh > /tmp/out 2>&1 & | Job abgekoppelt im Hintergrund starten |
| jobs; fg %1; bg %1 | Shell-Jobverwaltung (ksh) |
| ipcs -a | Shared Memory, Semaphoren, Message Queues (Oracle!) |
| ipcrm -m 12345 | Verwaistes Shared-Memory-Segment entfernen |
| pset_info | Prozessor-Sets und CPU-Zuordnung anzeigen |
| ulimit -a | Aktuelle Ressourcen-Limits der Shell |
Zeitgesteuerte Jobs
| crontab -l; crontab -e | Eigene Crontab anzeigen / bearbeiten |
| crontab -l oracle | Crontab eines anderen Benutzers lesen |
| /var/spool/cron/crontabs/ | Speicherort aller Crontabs – Backup nicht vergessen |
| /var/adm/cron/log | Cron-Protokoll bei nicht gelaufenen Jobs prüfen |
| /var/adm/cron/cron.allow, cron.deny | Wer darf cron nutzen |
| at now + 2 hours | Einmaligen Job planen (Eingabe mit Ctrl-D beenden) |
| at -l; at -r 1234.a | Geplante at-Jobs listen / löschen |
Cron-Falle: Cron startet mit minimalem Environment ohne
.profile. Immer absolute Pfade verwenden und benötigte Variablen
(PATH, ORACLE_HOME, TZ) im Skript selbst setzen.
Auf Tru64 liegen viele Admin-Kommandos in /sbin und
/usr/sbin – im Cron-PATH fehlen sie häufig.
📊Performance-Analyse
Schnellüberblick
| top | Interaktive Prozessliste mit CPU- und Speicherverbrauch |
| monitor | Interaktive Gesamtübersicht (CPU, Speicher, Disk, Netz) |
| uptime | Load Average der letzten 1/5/15 Minuten |
| vmstat 2 10 | CPU-, Speicher- und Paging-Kennzahlen im 2-Sekunden-Takt |
| vmstat -P | Aufteilung des physischen Speichers (Wired, UBC, Free) |
| vmstat -R | Werte je RAD (NUMA-Systeme wie GS80/GS1280) |
| iostat 2 5 | Disk-Durchsatz und CPU-Verteilung |
| sar -u 2 5 | CPU-Nutzung (usr/sys/wio/idle) |
| sar -d 2 5 | Disk-Aktivität und Warteschlangen |
| sar -b 2 5 | Buffer-Cache-Trefferquote |
| swapon -s | Swap-Auslastung – erster Blick bei Speicherengpässen |
Aufzeichnung mit collect
| collect | Alle Subsysteme im Klartext auf stdout, Standardintervall 10 s |
| collect -s cmdn | Nur ausgewählte Subsysteme (c=CPU, m=Memory, d=Disk, n=Net) |
| collect -f /var/tmp/collect.dat | Binäre Aufzeichnung in Datei (Auswertung im Playback-Modus) |
| /var/adm/collect.dat* | Ablage des als Dienst laufenden collect-Recorders |
| sys_check -perf | Performance-orientierte Auswertung des Systems |
Speicher, CPU & Kernel
| sched_stat sleep 60 | Scheduler-Statistik über 60 Sekunden |
| lockinfo -percpu sleep 60 | more | Kernel-Lock-Kontention je CPU |
| sysconfig -q vm ubc_maxpercent | Obergrenze des Unified Buffer Cache |
| sysconfig -q proc max_proc_per_user | Prozess-Limits des Kernels |
| kdbx -k /vmunix /dev/mem | Kernel-Debugger am laufenden System (sum, swap, kps) |
| dbx -k /vmunix /dev/mem | Kernel-Variablen lesen, z. B. p ncpus, p physmem |
Storage- & Netz-Performance
| advfsstat -b data_domain | AdvFS-Buffer-Cache: Hits, Misses, Read-/Write-Verteilung |
| advfsstat -v 2 data_domain | I/O-Verteilung auf die Volumes einer Domain |
| defragment -nv data_domain | Fragmentierung als Ursache für langsame I/O prüfen |
| volstat | I/O-Statistik der LSM-Volumes |
| netstat -i | Pakete und Fehler je Interface |
| netstat -m | mbuf-/Speichernutzung des Netzwerkstacks |
| netstat -s | more | Protokollstatistik (Retransmits, Drops) |
| netstat -p tcp | Nur TCP-Statistik |
| sysconfig -q socket | Socket-Tunables (u. a. sominconn, somaxconn) |
| sysconfig -q inet | TCP/IP-Tunables (Fenstergrößen, Timeouts) |
| nfsstat -c; nfsstat -s | NFS-Statistik als Client / als Server |
Vorgehen bei „System ist langsam“:
1. uptime und vmstat 2 5 – CPU-gebunden oder wartend?
2. vmstat -P und swapon -s – Speicherdruck?
3. iostat 2 5 und advfsstat -v 2 – welches Volume?
4. uerf -R -o terse | head -40 – Hardwarefehler im Hintergrund?
sys_check: Das Skript liefert einen HTML-Report mit Warnungen und
Tuning-Vorschlägen und ist die schnellste Bestandsaufnahme eines fremden Systems.
Es läuft mehrere Minuten und erzeugt Last – nicht im Peak starten.
🌐Netzwerk & TCP/IP
Interfaces
| ifconfig -a | Alle Interfaces mit Adresse, Maske und Flags |
| ifconfig ee0 | Ein einzelnes Interface abfragen |
| ifconfig ee0 10.1.1.5 netmask 255.255.255.0 up | Adresse setzen und Interface aktivieren (flüchtig) |
| ifconfig ee0 down | Interface deaktivieren |
| ifconfig ee0 delete | Adresse vom Interface entfernen |
| ifconfig ee0 alias 10.1.1.6 netmask 255.255.255.0 | Zweite IP-Adresse (Alias) auf dasselbe Interface legen |
| ifconfig nr0 nrmonitor 5 nrtimeout 5 | NetRAIN-Set anlegen bzw. Überwachungsintervalle setzen |
| ifconfig nr0 switch | NetRAIN manuell auf das andere Interface umschalten (Failover-Test) |
| niffconfig -v | NIFF-Status aller überwachten Interfaces (Green/Orange/Red) |
| niffconfig -s | NIFF-Überwachung starten |
| lagconfig -c lag=lag0,key=1 | Link-Aggregation-Gruppe (LAG) mit Schlüssel 1 erzeugen |
| lagconfig -p ee0 key=1 | Physisches Interface der LAG-Gruppe zuordnen |
| lagconfig -d lag0 | LAG-Gruppe wieder auflösen |
| lan_config -i ee0 -x 1 -s 100 -a 0 | Speed/Duplex fest einstellen (Autoneg aus) – Werte je Treiber prüfen |
| lan_config -i ee0 | Aktuelle Einstellungen des Adapters anzeigen |
| hwmgr get attr -category network | MAC-Adressen und Treiberdaten der Netzwerkkarten |
Routing & Diagnose
| netstat -rn | Routingtabelle numerisch – wichtigster Netz-Befehl |
| netstat -in | Interfaces mit IP-Adressen numerisch |
| netstat -an | grep LISTEN | Alle lauschenden Ports |
| netstat -a -f inet | Nur IPv4-Verbindungen anzeigen |
| route add default 10.1.1.1 | Default-Gateway setzen (flüchtig) |
| route add -net 10.2.0.0 -netmask 255.255.0.0 10.1.1.9 | Statische Netzroute hinzufügen |
| route delete default 10.1.1.1 | Route entfernen |
| /etc/routes | Statische Routen persistent hinterlegen (wird beim Boot gelesen) |
| arp -a | ARP-Cache anzeigen |
| arp -d host1 | Einzelnen ARP-Eintrag löschen (nach IP-Umzug) |
| ping host1 | Erreichbarkeit prüfen (mit Ctrl-C beenden) |
| traceroute host1 | Weg zum Ziel Hop für Hop verfolgen |
| tcpdump -i ee0 -n host 10.1.1.9 | Paketmitschnitt ohne Namensauflösung |
| tcpdump -i ee0 -n -s 1500 -w /var/tmp/trace.pcap | Mitschnitt in Datei für spätere Analyse |
| nslookup host1 | Namensauflösung testen |
| hostname; /sbin/hostname | Rechnername abfragen |
Persistente Konfiguration
| rcmgr get NUM_NETCONFIG | Anzahl konfigurierter Interfaces |
| rcmgr get NETDEV_0 | Gerätename des ersten Interfaces (z. B. ee0) |
| rcmgr get IFCONFIG_0 | ifconfig-Parameter des ersten Interfaces |
| rcmgr set IFCONFIG_0 "10.1.1.5 netmask 255.255.255.0" | IP-Konfiguration dauerhaft setzen |
| rcmgr get DEFAULTROUTER | Konfiguriertes Default-Gateway |
| rcmgr get HOSTNAME | Persistenter Rechnername |
| /etc/rc.config | Zentrale Datei hinter allen rcmgr-Variablen |
| /etc/hosts | Lokale Namensauflösung |
| /etc/resolv.conf | DNS-Server und Suchdomains |
| /etc/svc.conf | Reihenfolge der Namensdienste (local, bind, yp) |
| svcsetup | Interaktive Pflege von /etc/svc.conf |
| sysconfig -q inet | TCP/IP-Kernel-Parameter anzeigen |
| sysconfig -q socket | Socket-Parameter anzeigen |
| /sbin/init.d/inet restart | Netzwerk-Startskript neu ausführen |
| gated; /etc/gated.conf | Dynamisches Routing (RIP/OSPF) – nur wenn wirklich benötigt |
Interface-Namen: Tru64 benennt Adapter nach Treiber, nicht
durchgehend nach Nummer: ee0/ei0 (Intel/DE500),
tu0 (Tulip), alt0 (Broadcom/DEGXA), nr0 (NetRAIN),
lag0 (Link Aggregation), tun0. Welches Gerät vorhanden ist,
zeigt hwmgr get attr -category network oder netstat -in.
Flüchtig vs. dauerhaft: ifconfig und route
wirken nur bis zum Reboot. Dauerhaft wird eine Konfiguration ausschließlich über
rcmgr set (bzw. /etc/rc.config) und /etc/routes.
Nie beide Wege gleichzeitig halb pflegen – sonst weicht der Zustand nach dem
nächsten Boot ab.
📡NFS, Dienste & Zeitsynchronisation
NFS-Server
| /etc/exports | Exportliste des NFS-Servers |
| exportfs -a | Alle Einträge aus /etc/exports exportieren |
| exportfs -v | Aktuell exportierte Verzeichnisse mit Optionen anzeigen |
| exportfs -u /data | Einzelnen Export zurücknehmen |
| showmount -e | Exportliste des lokalen Servers |
| showmount -e nfssrv | Exportliste eines fremden Servers abfragen |
| showmount -a | Welche Clients haben was gemountet |
| nfsstat -s | Server-seitige NFS-Statistik |
| nfsstat -c | Client-seitige NFS-Statistik (Retrans = Problem) |
| nfsstat -z | Zähler zurücksetzen (vor einer Messung) |
| nfssetup | Interaktive NFS-Konfiguration (Server/Client, Anzahl Daemons) |
| rcmgr get NFS_CONFIGURED | Ist NFS-Server aktiviert |
| rcmgr get NUM_NFSD; rcmgr get NUM_NFSIOD | Anzahl nfsd- bzw. nfsiod-Prozesse |
| /sbin/init.d/nfs restart | NFS-Dienste neu starten |
| /sbin/init.d/nfsmount start | NFS-Mounts aus /etc/fstab nachziehen |
NFS-Client & Automount
| mount -t nfs nfssrv:/data /mnt | NFS-Freigabe manuell mounten |
| mount -t nfs -o ro,soft,intr nfssrv:/data /mnt | Lesend, mit weichem Timeout und unterbrechbar |
| mount -t nfs -o rw,hard,bg nfssrv:/data /mnt | Schreibend, hard mount, Retry im Hintergrund |
| umount -f /mnt | Erzwungenes Unmount bei hängendem Server |
| mount | Alle aktiven Mounts inklusive NFS anzeigen |
| automount -v | Automounter mit Meldungen starten |
| /etc/auto.master, /etc/auto.direct | Automount-Maps |
| rcmgr get AUTOMOUNT; rcmgr get AUTOFS | Automounter bzw. AutoFS aktiviert |
Dienste, inetd & NTP
| rpcinfo -p | Registrierte RPC-Dienste des lokalen Rechners |
| rpcinfo -p nfssrv | RPC-Dienste eines fremden Rechners (portmap muss erreichbar sein) |
| /etc/inetd.conf | Konfiguration der von inetd gestarteten Dienste |
| kill -HUP `cat /var/run/inetd.pid` | inetd zum Neulesen von inetd.conf bewegen |
| /etc/services | Zuordnung Portnummer zu Dienstname |
| /etc/ntp.conf | NTP-Server-Konfiguration |
| ntpq -p | Peers und Offsets des NTP-Daemons (Stern = ausgewählte Quelle) |
| ntpdate -q ntpsrv | Zeitversatz abfragen, ohne die Uhr zu stellen |
| ntpdate ntpsrv | Uhr einmalig stellen (xntpd muss gestoppt sein) |
| /sbin/init.d/xntpd restart | NTP-Daemon neu starten |
| rcmgr get XNTPD_CONF | Ist xntpd aktiviert |
| date; date -u | Lokale Zeit / UTC anzeigen |
| rusers -l; rup; ruptime | Benutzer, Uptime und Last anderer Rechner im Subnetz |
| rwall host1 "Reboot in 5 Minuten" | Meldung an alle Benutzer eines Rechners |
| /etc/hosts.equiv, ~/.rhosts | Vertrauensstellungen für r-Kommandos (Sicherheitsrisiko) |
Hard mount: Ein hard gemountetes NFS-Verzeichnis
lässt Prozesse bei Serverausfall unterbrechungsfrei hängen –
auch df und ls blockieren dann. Für nicht kritische
Daten soft,intr verwenden, bei Datenbank-Daten dagegen
hard (Datenintegrität vor Verfügbarkeit).
NFS-Diagnose in dieser Reihenfolge:
1. ping zum Server, 2. rpcinfo -p server
(portmap/nfs/mountd registriert?), 3. showmount -e server
(darf ich?), 4. nfsstat -c (Retrans/Timeouts?).
👤Benutzer, Gruppen & Sicherheit
Konten verwalten
| useradd -u 500 -g staff -d /home/meier -s /bin/ksh -m meier | Benutzer mit Homeverzeichnis anlegen |
| useradd -D | Voreinstellungen für neue Benutzer anzeigen |
| usermod -s /bin/sh -G dba,oinstall meier | Shell ändern und Zusatzgruppen setzen |
| usermod -l mueller meier | Benutzer umbenennen |
| userdel meier | Benutzer entfernen (Home bleibt stehen) |
| userdel -r meier | Benutzer samt Homeverzeichnis entfernen |
| groupadd -g 600 dba; groupmod -n dbadmin dba; groupdel dba | Gruppen anlegen, umbenennen, löschen |
| id meier; groups meier | UID/GID bzw. Gruppenmitgliedschaften anzeigen |
| passwd meier | Kennwort setzen |
| who; who -b; last | head | Angemeldete Benutzer, Bootzeit, letzte Anmeldungen |
| finger meier | Kontodaten und letzte Anmeldung |
| su - meier | Benutzerwechsel mit vollem Environment |
| /etc/passwd, /etc/group | Basis-Kontendaten (Base Security) |
| pwck; grpck | passwd- und group-Datei auf Konsistenz prüfen |
| vipw | /etc/passwd gesperrt und geprüft bearbeiten |
| dxaccounts & | Grafische Benutzerverwaltung (CDE) |
| sysman -accel users | SysMan-Kontenverwaltung im Textmodus |
Enhanced Security
| rcmgr get SECURITY | Aktiver Modus: BASE oder ENHANCED – immer zuerst prüfen |
| secconfig | Sicherheitsmodus konfigurieren (Base/Enhanced umschalten) |
| edauth -g meier | Erweitertes Kontenprofil aus /etc/auth anzeigen |
| edauth meier | Kontenprofil im Editor bearbeiten (VISUAL/EDITOR beachten) |
| edauth -g -dd default | System-Vorgabewerte für alle Konten anzeigen |
| edauth -dd default | System-Vorgabewerte bearbeiten (Ablauf, Länge, Historie) |
| usermod -x administrative_lock_applied=1 meier | Konto administrativ sperren |
| usermod -x administrative_lock_applied=0 meier | Sperre wieder aufheben |
| usermod -x password_expiration_time=0 meier | Kennwortablauf für ein Konto abschalten |
| usermod -x u_maxtries=5 meier | Zahl der Fehlversuche bis zur Sperre setzen |
| authck -p | Konsistenz der Authentifizierungsdatenbank prüfen |
| authck -a | Vollprüfung aller Sicherheitsdatenbanken |
| convuser -d | Konten zwischen Base und Enhanced konvertieren |
| /etc/auth/subsystem/ | Ablage der erweiterten Kontenprofile |
| /tcb/bin/ | Programme des Trusted Computing Base (u. a. edauth) |
| /etc/securettys | Terminals, an denen root sich anmelden darf |
Rechte, ACLs & Audit
| chmod 640 datei; chown meier:staff datei | Klassische Rechte und Eigentümer setzen |
| umask; umask 022 | Standardrechte für neue Dateien |
| getacl datei | Access Control List einer Datei anzeigen |
| getacl -d verzeichnis | Default-ACL eines Verzeichnisses anzeigen |
| setacl -u user:meier:rw- datei | Einzelnen ACL-Eintrag hinzufügen bzw. ändern |
| setacl -U /tmp/acl.txt datei | ACL aus Datei übernehmen (Massenänderung) |
| sysconfig -q sec acl_mode | Sind ACLs im Kernel aktiviert |
| audit_setup | Auditing interaktiv einrichten |
| audit_tool /var/audit/auditlog.000 | Audit-Log lesbar auswerten |
| auditd | Audit-Daemon (über rc.config gesteuert) |
| siacfg -l | SIA-Konfiguration (Authentifizierungs-Layer) anzeigen |
| /etc/sia/matrix.conf | Reihenfolge der SIA-Mechanismen – nie ohne Backup ändern |
| dop -l | Delegierte Admin-Aufgaben für den aufrufenden Benutzer listen |
| dopconfig | Delegation von privilegierten Aufgaben konfigurieren |
| ls -la /etc/passwd /etc/group /etc/auth | Rechte der sicherheitsrelevanten Dateien prüfen |
Falle Enhanced Security: Läuft das System im Modus
ENHANCED, liegen Kennwort, Ablauf und Sperrstatus nicht in
/etc/passwd, sondern in der Datenbank unter /etc/auth.
Ein Konto, das in /etc/passwd unauffällig aussieht, kann dort
gesperrt sein. Deshalb immer erst rcmgr get SECURITY, dann
edauth -g benutzer – und Änderungen nur mit
usermod -x oder edauth, niemals durch direktes
Editieren der Dateien unter /etc/auth.
Nach jeder größeren Kontenänderung:
authck -p laufen lassen. Inkonsistenzen zwischen
/etc/passwd und der Auth-Datenbank führen dazu, dass sich
Benutzer nicht mehr anmelden können – im Zweifel eine zweite
root-Sitzung offen halten.
🚨Fehleranalyse: uerf, EVM & Crash-Dumps
Binary Error Log mit uerf
| uerf -R | more | Fehlerlog in umgekehrter Reihenfolge (neueste zuerst) |
| uerf -R -o full | more | Vollständige Auflösung aller Felder |
| uerf -R -o terse | more | Kompakte Darstellung für den schnellen Überblick |
| uerf -R -o brief -n 20 | Nur die letzten 20 Einträge |
| uerf -c err -R -o full | Nur Einträge der Klasse „error“ |
| uerf -r 199 -R -o full | Nach Record-Typ filtern (z. B. Disk-Fehler) |
| uerf -f /var/adm/binary.errlog.saved -R -o full | Archiviertes Log auswerten |
| uerf -D dsk3 -R -o full | Nur Einträge zu einem Gerät |
| uerf -R -o full > /var/tmp/uerf.txt | Auszug für den Support erzeugen |
| /var/adm/binary.errlog | Binäres Fehlerlog, geschrieben von binlogd |
| /etc/binlog.conf | Steuert, welche Ereignisse binlogd wohin schreibt |
| kill -HUP `cat /var/run/binlogd.pid` | binlogd nach Änderung von binlog.conf neu einlesen lassen |
DECevent / Compaq Analyze
| dia -R | more | Fehlerlog übersetzt anzeigen, neueste zuerst |
| dia -o terse -i disk -R | Nur Disk-Ereignisse in Kurzform |
| dia -o brief -i ios -R | I/O-Subsystem-Ereignisse |
| dia -c | Fortlaufende Anzeige neuer Ereignisse |
| dia ls evt | Verfügbare Ereignisklassen auflisten |
| dia ana -i disk -i ios | Analysemodus über mehrere Klassen |
| wsea | Web-basierte Fehleranalyse (Compaq Analyze), Browser-Oberfläche |
Event Manager (EVM)
| evmget | evmshow | more | Gespeicherte Ereignisse lesbar ausgeben |
| evmget | evmsort | evmshow -t "@timestamp @name @@" | more | Zeitlich sortierte Ereignisliste mit Meldungstext |
| evmget -f "[name *.binlog*]" | evmshow -d | Nur Ereignisse aus dem Binary-Error-Log, mit Details |
| evmget -f "[priority >= 500]" | evmshow -D | Nur hochpriore Ereignisse (Hardware, Panic) |
| evmget -A -f "[age < 1d]" | evmshow -t "@timestamp @@" | Alle Ereignisse der letzten 24 Stunden |
| evmwatch -A | evmshow -t "@timestamp @name @@" | Ereignisse live mitlesen (gutes Fenster während Wartung) |
| evmwatch -i | evmshow -t "@name" | Alle registrierten Ereignisnamen anzeigen |
| evmpost | Eigenes Ereignis in den EVM-Kanal einspeisen (Skript-Meldungen) |
| evmreload -d | EVM-Konfiguration neu laden |
| /etc/evmdaemon.conf, /etc/evmchannel.conf | EVM-Konfigurationsdateien |
| /var/evm/adm/logfiles/ | EVM-Logdateien |
| /sbin/init.d/evm restart | EVM-Daemon neu starten |
Syslog & Crash-Dumps
| tail -100 /var/adm/messages | Aktuelle Systemmeldungen |
| /var/adm/syslog.dated/ | Tagesverzeichnisse mit kern.log, daemon.log, auth.log usw. |
| ls -lt /var/adm/syslog.dated | head | Neuestes Syslog-Verzeichnis finden |
| /etc/syslog.conf | Welche Facility/Priority wohin geschrieben wird |
| kill -HUP `cat /var/run/syslog.pid` | syslogd neu konfigurieren lassen |
| /var/adm/crash/ | Ablage von vmunix.N, vmzcore.N und crash-data.N |
| cat /var/adm/crash/bounds | Nummer des nächsten Dumps |
| crashdc /var/adm/crash/vmunix.0 /var/adm/crash/vmzcore.0 | Crash-Data-Collection: Kurzbericht für den Support |
| dbx -k /var/adm/crash/vmunix.0 /var/adm/crash/vmzcore.0 | Dump analysieren (p panicstr, t für Stack) |
| kdbx -k /var/adm/crash/vmunix.0 /var/adm/crash/vmzcore.0 | Komfortabler Dump-Debugger (sum, kps, t) |
| savecore -d /var/adm/crash | Dump aus dem Swap-Bereich in Dateien sichern |
| dumpsys | Dump des laufenden Systems erzeugen (bei Hängern, Last!) |
| sysconfig -q generic dump_sp_threshold | Dump-Konfiguration des Kernels prüfen |
| hwmgr status component -ngood | Komponenten, die nicht im Zustand „good“ sind |
| hwmgr show component -full | more | Detaillierter Hardware-Zustandsbericht |
| sys_check -escalate | Vollständige Systembeschreibung für ein Support-Ticket |
# Fehlersuche bei vermutetem Plattenproblem
# 1) Zustand der Hardware aus Sicht des Kernels
hwmgr status component -ngood
hwmgr show scsi # welches dskN haengt an welchem Bus/Target
# 2) Binary Error Log: neueste Eintraege, kompakt
uerf -R -o terse | head -40
uerf -R -o full | grep -i -E "dsk|scsi|hard error" | head -40
# 3) Nur Disk-Ereignisse uebersetzt anzeigen
dia -o terse -i disk -R | head -40
# 4) EVM als zweite Quelle (5.1B: uerf allein reicht nicht)
evmget -A -f "[age < 2d]" | evmsort | \
evmshow -t "@timestamp @name" | grep -i -E "disk|scsi|advfs"
# 5) Sicht des Dateisystems: welche Domain nutzt die Platte
showfdmn data_domain
/sbin/advfs/advscan dsk3 # Domain-Zugehoerigkeit der Platte
# 6) Auszug fuer den Support sichern
uerf -R -o full > /var/tmp/uerf_full.txt
evmget -A | evmshow -D > /var/tmp/evm_full.txt
sys_check -escalate > /var/tmp/sys_check.html 2>&1
uerf ist in 5.1B nur die halbe Wahrheit: Klassische
Hardwarefehler landen weiter über binlogd in
/var/adm/binary.errlog und sind mit uerf lesbar. Viele
Subsysteme (AdvFS, Cluster, CAA, Netz) melden aber ausschließlich über
den Event Manager. Bei einer Fehlersuche daher immer beide Quellen
abfragen: uerf -R -o terse und
evmget | evmsort | evmshow.
Reihenfolge, die sich bewährt hat:
hwmgr status component -ngood (was ist kaputt) →
uerf -R -o terse (seit wann) →
dia -o terse -i disk -R (was genau) →
evmget (was hat das Betriebssystem daraus gemacht).
dumpsys friert das System für die Dauer des Dumps
praktisch ein und braucht Platz in Größe des Hauptspeichers unter
/var/adm/crash. Vorher df -k /var prüfen und nur nach
Rücksprache mit dem Support ausführen.
📦Software, Subsets & Patches
setld – Subset-Verwaltung
| setld -i | more | Alle bekannten Subsets mit Installationsstatus |
| setld -i | grep installed | wc -l | Anzahl installierter Subsets |
| setld -i OSFCMPLRS540 | Status eines bestimmten Subsets |
| setld -i OSFBASE540 | more | Dateiliste eines installierten Subsets |
| setld -l /mnt/ALPHA/BASE | Subsets vom Kit-Verzeichnis installieren (interaktive Auswahl) |
| setld -l /mnt/ALPHA/BASE OSFCMPLRS540 | Genau ein Subset installieren |
| setld -d OSFCMPLRS540 | Subset deinstallieren |
| setld -v OSFBASE540 | Installiertes Subset gegen die Inventardatei verifizieren |
| setld -x /mnt/kit OSFXXX540 | Dateien nur entpacken, ohne zu installieren |
| setld -c OSFBASE540 "Meldung" | Subset-Kontrollprogramm aufrufen (von Skripten genutzt) |
| /usr/.smdb./ | Datenbank aller Subsets (.inv, .ctrl, .lk) |
| ls /usr/.smdb./*.lk | Hängengebliebene Lock-Dateien einer abgebrochenen Installation |
| /usr/lbin/fverify -np < /usr/.smdb./OSFBASE540.inv | Dateiinventar gegen die Platte prüfen |
| /var/adm/smlogs/setld.log | Protokoll aller setld-Läufe |
| /var/adm/smlogs/install.log | Protokoll der Betriebssysteminstallation |
Patches mit dupatch
| dupatch | Menügeführte Patch-Verwaltung (Installieren, Entfernen, Auflisten) |
| dupatch -track -type kit | Installierte Patch-Kits mit Versionsstand anzeigen |
| dupatch -track -type patch -nolog | Alle einzelnen Patches auflisten, ohne Logdatei zu schreiben |
| dupatch -track -type patch -nolog | grep "Patch C" | Nur die eigentlichen Patch-Zeilen filtern |
| dupatch -track -type patch -nolog > /var/tmp/patches_vorher.txt | Patch-Stand vor einer Änderung dokumentieren |
| dupatch -delete -product Tru64_UNIX_V5.1B -patch "C 00362.02" | Einzelnen Patch gezielt zurücknehmen |
| /var/adm/patch/log/event.log | Was wurde wann gepatcht – erste Anlaufstelle |
| /var/adm/patch/backup/ | Von dupatch gesicherte Originaldateien (Platzbedarf beachten) |
| /var/adm/patch/patch.db | Patch-Datenbank des Systems |
| ls /var/adm/patch/doc/ | Beschreibungstexte der installierten Patches |
Updates, Lizenzen & Installation
| installupdate /mnt | Update-Installation auf ein neues Release |
| installupdate -c | Abgebrochenes Update fortsetzen bzw. aufräumen |
| nhd_install | New Hardware Delivery einspielen (Treiber für neue Hardware) |
| sizer -v | Betriebssystemversion und Build-Stand |
| /etc/motd | Enthält bei Standardinstallation die Release-Zeile |
| ris | Remote Installation Services verwalten (Netz-Installation) |
| lmf list | Lizenzen im License Management Facility auflisten |
| lmf list full | more | Lizenzdetails inklusive Ablaufdatum und Anzahl Units |
| lmf load | Lizenzdatenbank in den Kernel laden |
| lmf register - < /tmp/pak.txt | PAK aus Datei registrieren |
| lmf reset | Lizenz-Cache nach Änderungen aktualisieren |
| /var/adm/lmf/ldb | Lizenzdatenbank (in Backup einschließen) |
# Patch-Kit einspielen (Reihenfolge nicht abkuerzen)
# 1) Ausgangszustand dokumentieren
sizer -v
dupatch -track -type kit -nolog > /var/tmp/kits_vorher.txt
dupatch -track -type patch -nolog > /var/tmp/patches_vorher.txt
df -k /var /usr / # Platz fuer /var/adm/patch/backup pruefen
# 2) Vollbackup der Systemdomains (siehe Abschnitt Backup)
vdump -0uf /dev/ntape/tape0_d1 /
vdump -0uf /dev/ntape/tape0_d1 /usr
vdump -0uf /dev/ntape/tape0_d1 /var
# 3) In den Single-User-Mode wechseln (Kernel-Patches!)
shutdown now # bzw. init s
mountroot # nur falls noetig
bcheckrc # Filesysteme pruefen und mounten
# 4) Kit einspielen
mount -t cdfs -o noversion /dev/disk/cdrom0c /mnt
cd /mnt/patch_kit
./dupatch # Menue: Patch Kit Installation
# 5) Kernel neu bauen, falls dupatch dazu auffordert
doconfig -c `hostname | cut -d. -f1`
cp /sys/`hostname | cut -d. -f1`/vmunix /vmunix
shutdown -r now
# 6) Ergebnis kontrollieren
sizer -v
dupatch -track -type kit -nolog
grep -i error /var/adm/patch/log/event.log
dupatch niemals ohne Backup: Ein abgebrochener
Patch-Lauf kann das System unbootbar machen. Immer vorher ein vollständiges
vdump von /, /usr und /var,
und Kernel-Patches ausschließlich im Single-User-Mode einspielen.
Nach dem Lauf /var/adm/patch/log/event.log auf Fehler prüfen.
Platz für Backups: dupatch sichert jede
ersetzte Datei unter /var/adm/patch/backup. Ist /var
voll, bricht der Lauf mitten in der Installation ab. Vorher df -k /var
prüfen und alte Patch-Backups nur nach bestätigtem Betrieb entfernen.
Im Cluster wird ein Patch-Kit mit
dupatch auf einem Mitglied eingespielt und anschließend
mit clu_upgrade Rolling über die restlichen Mitglieder gezogen –
nicht parallel auf mehreren Knoten starten.
💾Backup & Recovery
vdump / vrestore (AdvFS)
| vdump -0uf /dev/ntape/tape0_d1 /data | Vollbackup Level 0, Datum in /etc/vdumpdates schreiben |
| vdump -1uf /dev/ntape/tape0_d1 /data | Inkrementell: alles seit dem letzten Level 0 |
| vdump -0f /var/tmp/data.vdump /data | Backup in eine Datei statt auf Band |
| vdump -0vf /dev/ntape/tape0_d1 /data | Mit Fortschrittsanzeige (verbose) |
| vdump -0f - /data | gzip > /backup/data.vdump.gz | Komprimiertes Backup über die Pipe |
| vdump -D /data | Auch bei nicht gemountetem Fileset arbeiten (Pfadangabe) |
| /etc/vdumpdates | Historie der Backup-Level – unbedingt mitsichern |
| vrestore -tf /dev/ntape/tape0_d1 | more | Inhaltsverzeichnis des Backups anzeigen (nichts schreiben) |
| vrestore -xf /dev/ntape/tape0_d1 -D /mnt | Alles nach /mnt zurückschreiben |
| vrestore -xf /dev/ntape/tape0_d1 -D /mnt ./etc/passwd | Einzelne Datei gezielt zurückholen |
| vrestore -if /dev/ntape/tape0_d1 -D /mnt | Interaktiv auswählen (ls, cd, add, extract) |
| rvdump -f srv:/dev/ntape/tape0_d1 /data | Backup auf ein Bandlaufwerk eines anderen Rechners |
| rvrestore -xf srv:/dev/ntape/tape0_d1 -D /mnt | Rücksicherung von einem entfernten Laufwerk |
| vdump -0f - /data | ssh srv "/sbin/vrestore -xf - -D /data" | Fileset direkt auf einen anderen Rechner klonen |
Band und UFS-Werkzeuge
| mt -f /dev/ntape/tape0_d1 status | Bandlaufwerk-Status (Gerät bereit, Band eingelegt) |
| mt -f /dev/ntape/tape0_d1 rewind | Band zurückspulen |
| mt -f /dev/ntape/tape0_d1 fsf 2 | Zwei Dateimarken vorspulen (mehrere Backups pro Band) |
| mt -f /dev/ntape/tape0_d1 offline | Band auswerfen |
| mt -f /dev/ntape/tape0_d1 erase | Band löschen (dauert lange) |
| /dev/ntape/tape0_d1 | Bandgerät ohne Rückspulen (no-rewind) – für mehrere Saves |
| /dev/tape/tape0_d1 | Bandgerät mit automatischem Rückspulen |
| dump 0uf /dev/ntape/tape0_d1 /dev/rdisk/dsk2g | Vollbackup eines UFS-Dateisystems |
| restore -if /dev/ntape/tape0_d1 | Interaktive Rücksicherung eines dump-Backups |
| restore -rf /dev/ntape/tape0_d1 | Komplettes UFS-Dateisystem wiederherstellen |
| tar cvf /dev/ntape/tape0_d1 /home | Verzeichnis mit tar sichern |
| tar tvf /dev/ntape/tape0_d1 | more | Inhalt eines tar-Archivs prüfen |
| tar xvf /dev/ntape/tape0_d1 | tar-Archiv im aktuellen Verzeichnis auspacken |
| pax -wf /var/tmp/home.pax /home | Portables Archiv erzeugen (erhält große Dateien besser) |
| find /home -print | cpio -ocv > /var/tmp/home.cpio | cpio-Archiv aus einer Dateiliste |
| dd if=/dev/rdisk/dsk0a of=/var/tmp/boot.img bs=64k | Rohkopie einer Partition (Bootblock-Sicherung) |
| btcreate | Bootfähiges Notfall-Band (Bootable Tape) erzeugen |
# Konsistentes Online-Backup einer AdvFS-Domain mit Clone
# 1) Ausgangslage pruefen
showfdmn data_domain # freier Platz in der Domain?
showfsets data_domain
# 2) Clone-Fileset anlegen (Snapshot, nur Metadaten)
clonefset data_domain data_fs data_fs_clone
mkdir -p /mnt/clone
mount -t advfs data_domain#data_fs_clone /mnt/clone
# 3) Vom Clone sichern - Anwendung laeuft weiter
vdump -0uvf /dev/ntape/tape0_d1 /mnt/clone
# 4) Clone wieder abbauen (haelt sonst Platz in der Domain)
umount /mnt/clone
rmfset data_domain data_fs_clone
showfdmn data_domain # Platz zurueck?
# Systembackup vor einer Aenderung (Patch, Kernel, Upgrade)
# 1) Konfiguration in Textform sichern - klein, aber Gold wert
mkdir -p /var/tmp/cfg.`date +%Y%m%d`
cd /var/tmp/cfg.`date +%Y%m%d`
sizer -v > sizer.txt
hwmgr view devices > hwmgr_devices.txt
hwmgr -view hierarchy > hwmgr_hierarchy.txt
showfdmn '*' > showfdmn.txt 2>&1
ls -l /etc/fdmns/* > fdmns.txt
disklabel -r dsk0 > disklabel_dsk0.txt
volprint -ht > volprint.txt 2>&1
sysconfig -q generic > sysconfig_generic.txt
cp -p /etc/fstab /etc/rc.config /etc/sysconfigtab /etc/exports .
dupatch -track -type patch -nolog > patches.txt
# 2) Systemfilesets vollstaendig auf Band (Level 0)
mt -f /dev/ntape/tape0_d1 rewind
vdump -0uvf /dev/ntape/tape0_d1 /
vdump -0uvf /dev/ntape/tape0_d1 /usr
vdump -0uvf /dev/ntape/tape0_d1 /var
mt -f /dev/ntape/tape0_d1 rewind
# 3) Backup verifizieren - ohne Pruefung kein Backup
mt -f /dev/ntape/tape0_d1 rewind
vrestore -tf /dev/ntape/tape0_d1 | head -20
mt -f /dev/ntape/tape0_d1 fsf 1
vrestore -tf /dev/ntape/tape0_d1 | head -20
mt -f /dev/ntape/tape0_d1 offline
vdump und dump sind nicht austauschbar:
vdump/vrestore arbeiten nur mit AdvFS-Filesets,
dump/restore nur mit UFS. Ein mit
dump gesichertes AdvFS-Fileset ist nicht wiederherstellbar.
Welches Dateisystem vorliegt, zeigt mount bzw.
/etc/fstab (Typ advfs oder ufs).
Was häufig fehlt: /etc/fdmns (Struktur der
AdvFS-Domains), /etc/vdumpdates, die Disklabel-Ausgaben,
/var/adm/lmf/ldb (Lizenzen) und die Crontabs unter
/var/spool/cron/crontabs. Ohne diese Daten ist ein
Bare-Metal-Restore erheblich aufwendiger.
Verifizieren: Ein Backup, dessen Inhaltsverzeichnis
nie gelesen wurde, ist eine Vermutung. Nach jedem Lauf mindestens
vrestore -tf <device> | head ausführen und regelmäßig
einen echten Restore in ein Testfileset üben.
🔗TruCluster Server
Cluster-Status & Quorum
| clu_get_info | Mitglieder, Member-IDs und Status des Clusters |
| clu_get_info -full | Ausführlich: Votes, Interconnect, Cluster-Name |
| clu_get_info -raw | Maschinenlesbare Ausgabe für Skripte |
| clu_get_info -m 2 | Nur Informationen zu Member 2 |
| clu_quorum | Quorum-Konfiguration und aktuelle Votes anzeigen |
| sysconfig -q clubase cluster_expected_votes | Erwartete Gesamtstimmen des Clusters |
| sysconfig -q clubase cluster_node_votes | Stimmen dieses Mitglieds |
| sysconfig -q clubase cluster_qdisk_votes | Stimme der Quorum-Disk |
| sysconfig -q clubase cluster_qdisk_major cluster_qdisk_minor | Welche Platte ist die Quorum-Disk |
| /etc/sysconfigtab | Stanza clubase je Mitglied – hier stehen die Votes |
| cnxshow | Connection-Manager-Status, Sicht auf die anderen Mitglieder |
| /cluster/members/member0/ | Member-spezifische Dateien (boot_partition, /var, /tmp) |
| memberid; /etc/rc.config: MEMBER_ID | Eigene Member-ID ermitteln |
| /var/adm/messages | Cluster-Meldungen (Transitions, Quorum-Verlust) |
CAA – Cluster Application Availability
| caa_stat | Status aller registrierten Ressourcen |
| caa_stat -t | Tabellarische Übersicht (Name, Typ, Target, State, Host) |
| caa_stat -v | Ausführlich inklusive Restart-Zähler und Fehlerursache |
| caa_stat oracle_app | Status einer einzelnen Ressource |
| caa_start oracle_app | Ressource starten (CAA wählt den Knoten nach Placement) |
| caa_stop oracle_app | Ressource stoppen |
| caa_stop -f oracle_app | Stopp erzwingen, auch bei hängendem Action-Skript |
| caa_relocate oracle_app -c host2 | Ressource geplant auf ein anderes Mitglied verschieben |
| caa_relocate -s host1 -c host2 | Alle Ressourcen von host1 nach host2 umziehen (Wartung) |
| caa_balance -all | Ressourcen gemäß Placement-Policy neu verteilen |
| caa_profile -print oracle_app | Ressourcenprofil anzeigen |
| caa_profile -validate oracle_app | Profil auf Fehler prüfen, bevor es registriert wird |
| caa_register oracle_app | Ressource in der CAA-Registry aufnehmen |
| caa_unregister oracle_app | Ressource aus der Registry entfernen (vorher stoppen) |
| /var/cluster/caa/profile/ | Profildateien (*.cap) der Ressourcen |
| /var/cluster/caa/script/ | Action-Skripte (start/stop/check) der Ressourcen |
| /var/cluster/caa/log/ | CAA-Protokolle bei fehlgeschlagenem Start |
CFS, DRD & Cluster-Alias
| cfsmgr | Server-Zuordnung aller Cluster-Dateisysteme |
| cfsmgr /data | Wer serviert dieses Dateisystem gerade |
| cfsmgr -F raw | Maschinenlesbare Ausgabe für Skripte |
| cfsmgr -a SERVER=host2 -d data_domain | CFS-Server einer Domain auf host2 umstellen |
| cfsmgr -h host2 -r -a SERVER=host1 /data | Relokation von einem anderen Mitglied aus anstoßen |
| cfsmgr -a statistics /data | CFS-Statistik eines Dateisystems |
| cfsmgr -e | Nur die Dateisysteme mit ihren Mountpunkten auflisten |
| drdmgr dsk3 | Device Request Dispatcher: Server und Zugriffsart einer Platte |
| drdmgr -F raw dsk3 | DRD-Info maschinenlesbar |
| drdmgr -a server=host2 dsk3 | DRD-Server einer Platte wechseln |
| drdmgr -h host2 dsk3 | DRD-Sicht eines anderen Mitglieds abfragen |
| cluamgr -s all | Status aller Cluster-Aliase |
| cluamgr -r start | Cluster-Alias-Subsystem starten |
| cluamgr -a alias=clusrv,selw=3,join | Mitglied einem Alias mit Gewichtung zuordnen |
| cluamgr -a alias=clusrv,leave | Mitglied aus dem Alias herausnehmen (vor Wartung) |
| clua_active clusrv | Prüfen, ob dieses Mitglied den Alias aktiv bedient |
| /etc/clu_alias.config | Persistente Alias-Konfiguration |
| /etc/clua_services | Welche Dienste über den Alias verteilt werden |
Mitglieder, CDSLs & Wartung
| clu_check_config | Cluster-Konfiguration auf Fehler prüfen (nach jeder Änderung) |
| clu_check_config -v | Ausführliche Prüfung mit Report |
| clu_create | Ersten Cluster aus einem Einzelsystem erzeugen |
| clu_add_member | Weiteres Mitglied aufnehmen (interaktiv) |
| clu_delete_member -m 3 | Mitglied 3 aus dem Cluster entfernen |
| clu_upgrade status | Stand eines Rolling Upgrade abfragen |
| clu_upgrade check install | Voraussetzungen für den nächsten Schritt prüfen |
| clu_upgrade -v | Rolling Upgrade mit Meldungen fortsetzen |
| mkcdsl -a /var/log/meinprog.log | Context Dependent Symbolic Link anlegen (member-eigene Datei) |
| cdslinvchk | CDSL-Inventar auf fehlende oder defekte Links prüfen |
| ls -l /var/adm | grep members | CDSLs erkennen: Ziel enthält {memb} |
| shutdown -h now | Nur dieses Mitglied herunterfahren (Cluster läuft weiter) |
| shutdown -c now | Den gesamten Cluster herunterfahren |
| cluster_root#root, cluster_usr#usr, cluster_var#var | Gemeinsame AdvFS-Domains des Clusters |
| root2_domain#root | Boot-Partition von Member 2 |
# Mitglied fuer Wartung geordnet aus dem Betrieb nehmen
# 1) Ausgangszustand festhalten
clu_get_info -full
clu_quorum
caa_stat -t
cfsmgr -e
# 2) Anwendungen auf das andere Mitglied verschieben
caa_relocate -s host1 -c host2
caa_stat -t # laeuft alles auf host2?
# 3) Cluster-Alias abmelden, damit keine neuen Verbindungen kommen
cluamgr -a alias=clusrv,leave
cluamgr -s all
# 4) CFS-Serverrollen abgeben
cfsmgr -e # welche Filesysteme serviert host1
cfsmgr -a SERVER=host2 -d data_domain
cfsmgr -e # jetzt alle auf host2
# 5) Quorum pruefen - bleibt der Rest beschlussfaehig?
clu_quorum
# QV = (CEV >> 1) + 1 : bei CEV=3 ist QV=2, ein Ausfall ist tragbar
# 6) Nur dieses Mitglied herunterfahren
shutdown -h now # NICHT shutdown -c (das faellt der Cluster)
Keine direkten mount-Eingriffe im Cluster:
Ein Cluster-Dateisystem wird von genau einem Mitglied serviert. Wer mit
mount/umount von Hand eingreift oder eine Domain auf
zwei Knoten aktiviert, riskiert Metadaten-Korruption der AdvFS-Domain.
Serverwechsel ausschließlich mit cfsmgr -a SERVER=...,
Plattenzugriffe mit drdmgr, Anwendungen mit
caa_relocate.
Quorum-Rechnung: Das benötigte Quorum ergibt sich aus
den erwarteten Stimmen: QV = (CEV >> 1) + 1, also die Hälfte
abgerundet plus eins. Zwei Mitglieder mit je einer Stimme (CEV=2, QV=2) sind
nicht ausfallsicher – erst eine Quorum-Disk (CEV=3, QV=2) erlaubt den
Verlust eines Knotens. Werte je Mitglied in der clubase-Stanza in
/etc/sysconfigtab.
CDSLs respektieren: Pfade wie
/var/adm/syslog.dated sind im Cluster Symlinks nach
/cluster/members/{memb}/.... Wer sie durch echte Verzeichnisse
ersetzt, bricht die Trennung der Mitglieder. Neue member-spezifische Dateien mit
mkcdsl anlegen und mit cdslinvchk prüfen.
📄Wichtige Dateien & Verzeichnisse
Boot, Kernel & Konfiguration
| /etc/fstab | Mount-Tabelle (Typ advfs oder ufs, Domain#Fileset) |
| /etc/inittab | Runlevel und Startprozesse von init |
| /etc/rc.config | Zentrale Konfigurationsvariablen (nur mit rcmgr ändern) |
| /etc/rc.config.common | Clusterweite Variablen, auf allen Mitgliedern identisch |
| /etc/rc.config.site | Eigene, standortspezifische Variablen |
| /sbin/init.d/ | Startskripte der Dienste (start/stop/restart) |
| /sbin/rc3.d/ | Symlinks, die die Startreihenfolge in Runlevel 3 festlegen |
| /etc/sysconfigtab | Kernel-Parameter in Stanzas (nur mit sysconfigdb ändern) |
| /etc/sysconfigtab.proto | Vorlage der Kernel-Konfiguration |
| /sys/conf/HOSTNAME | Kernel-Konfigurationsdatei für doconfig |
| /vmunix | Laufender Kernel – vor jedem Neubau kopieren |
| /etc/ddr.dbase | Dynamic Device Recognition: Definitionen der SCSI-Geräte |
| /etc/ddr.db | Kompilierte DDR-Datenbank (mit ddr_config erzeugt) |
Storage & Devices
| /etc/fdmns/ | Je Domain ein Verzeichnis mit Symlinks auf die Volumes |
| /etc/fdmns/data_domain/dsk3c | Beispiel: Volume dsk3c gehört zu data_domain |
| /dev/disk/dsk3c | Block-Gerätedatei einer Plattenpartition |
| /dev/rdisk/dsk3c | Zugehöriges Raw-Device (für disklabel, dd, newfs) |
| /dev/ntape/tape0_d1 | Bandlaufwerk ohne Rückspulen |
| /dev/tape/tape0_d1 | Bandlaufwerk mit Rückspulen |
| /dev/vol/rootdg/vol01 | LSM-Volume (Block), Raw unter /dev/rvol/ |
| /etc/vol/volboot | LSM-Bootinformation – ohne sie startet LSM nicht |
| /etc/dfsl.dat, /etc/dccd.dat | Datenbanken des Device-Special-File-Managers (dsfmgr) |
| /etc/vdumpdates | Historie der vdump-Level je Fileset |
Logs, Sicherheit & Cluster
| /var/adm/messages | Allgemeine Systemmeldungen |
| /var/adm/syslog.dated/ | Tagesverzeichnisse mit kern.log, daemon.log, auth.log |
| /etc/syslog.conf | Steuerung von syslogd |
| /var/adm/binary.errlog | Binäres Hardware-Fehlerlog (mit uerf lesen) |
| /etc/binlog.conf | Konfiguration von binlogd |
| /var/evm/adm/logfiles/ | Logdateien des Event Managers |
| /var/adm/crash/ | Crash-Dumps (vmunix.N, vmzcore.N, bounds) |
| /var/adm/wtmp, /var/adm/utmp | An- und Abmeldehistorie (last, who) |
| /var/adm/sialog | Protokoll fehlgeschlagener Anmeldungen |
| /etc/auth/subsystem/ | Enhanced-Security-Kontenprofile |
| /tcb/bin/ | Programme des Trusted Computing Base |
| /etc/sia/matrix.conf | Reihenfolge der Authentifizierungsmechanismen |
| /etc/securettys | Terminals, an denen root-Login erlaubt ist |
| /var/spool/cron/crontabs/ | Crontabs aller Benutzer |
| /var/adm/patch/log/event.log | Patch-Historie (dupatch) |
| /usr/.smdb./ | Subset-Datenbank von setld |
| /var/adm/smlogs/ | Protokolle von setld und der Installation |
| /var/adm/lmf/ldb | Lizenzdatenbank (lmf) |
| /cluster/members/memberN/ | Member-eigene Dateien im Cluster (Ziel der CDSLs) |
| /etc/clua_services, /etc/clu_alias.config | Cluster-Alias-Konfiguration |
| /var/cluster/caa/ | CAA-Profile, Action-Skripte und Logs |
Diese Dateien nie von Hand editieren:
/etc/rc.config* (nur rcmgr),
/etc/sysconfigtab (nur sysconfigdb),
/etc/fdmns/* (nur mkfdmn/addvol/rmvol),
/etc/auth/* (nur edauth/usermod -x).
Von Hand geänderte Einträge gehen beim nächsten Werkzeugaufruf
verloren oder machen die Datenbank inkonsistent.
🔧SysMan, Shell-Tipps & Praxis-Workflows
SysMan & grafische Werkzeuge
| sysman | SysMan Menu – startet grafisch, wenn DISPLAY gesetzt ist |
| sysman -ui cui | Textoberfläche erzwingen (auf der seriellen Konsole) |
| sysman -list | Alle Accelerators (Kurznamen der Tasks) auflisten |
| sysman -list | grep -i disk | Passenden Accelerator suchen |
| sysman -accel users | Direkt in die Benutzerverwaltung springen |
| sysman -accel disk | Direkt in die Plattenverwaltung springen |
| sysman -menu | Vollständiges Menübaum-Fenster |
| sysman_station | Grafische Gesamtübersicht mehrerer Systeme/Cluster |
| sysman -station | Alternativer Aufruf der SysMan Station |
| dxkerneltuner | Kernel-Parameter grafisch anzeigen und ändern |
| dxadvfs | AdvFS-Domains und Filesets grafisch verwalten |
| dxlsm | LSM grafisch verwalten |
| dxaccounts | Benutzer- und Gruppenverwaltung (CDE) |
| dxsetup | Grafische Systemkonfiguration |
| swxcrmgr | RAID-Array-Manager (StorageWorks Controller) |
| dop -l; dopconfig | Privilegierte Aufgaben an Nicht-root delegieren |
| DISPLAY=pc:0.0; export DISPLAY | Voraussetzung für alle dx*-Werkzeuge |
Shell & Alltag
| set -o vi | Kommandozeilen-Editing mit vi-Tasten (ksh) – ins .profile |
| whence -v befehl | Wo liegt das Kommando, ist es ein Alias oder eine Funktion |
| man -k advfs | Manpages nach Stichwort durchsuchen |
| man 4 advfs; man 8 hwmgr | Gezielt Abschnitt 4 (Formate) bzw. 8 (Admin) lesen |
| man sys_attrs_vm | Alle Tunables eines Subsystems mit Bedeutung und Default |
| script /var/tmp/session.log | Komplette Sitzung mitschneiden (vor Wartungsarbeiten) |
| cmd 2>&1 | tee /var/tmp/cmd.log | Ausgabe gleichzeitig sehen und protokollieren |
| find / -xdev -size +100000 -exec ls -l {} \; | Große Dateien nur im aktuellen Dateisystem suchen |
| du -k /var | sort -rn | head -20 | Größte Verzeichnisse finden (Dateisystem voll) |
| df -k; df -k /data | Belegung aller bzw. eines Dateisystems in Kilobyte |
| for d in `ls /etc/fdmns`; do showfdmn $d; done | Alle AdvFS-Domains in einem Durchgang prüfen |
| for d in `ls /etc/fdmns`; do showfsets $d; done | Alle Filesets samt Quota-Werten anzeigen |
| gzip -9 datei; gunzip datei.gz | Dateien komprimieren und wieder auspacken |
| compress datei; uncompress datei.Z | Klassische Kompression (auf alten Systemen verbreitet) |
| wall "Wartung in 10 Minuten" | Meldung an alle angemeldeten Benutzer |
| env | sort; printenv PATH | Environment prüfen (häufigste Fehlerursache in Skripten) |
# Neue Platte in eine bestehende AdvFS-Domain aufnehmen
# 1) Platte vom Kernel erkennen lassen
hwmgr -scan scsi # Bus neu absuchen
hwmgr view devices | grep dsk # welches dskN ist neu
hwmgr show scsi # Bus/Target/LUN zur Zuordnung
# 2) Falls kein Geraetename erscheint: Special Files erzeugen
dsfmgr -v # Datenbank pruefen
dsfmgr -K # fehlende Special Files anlegen
ls -l /dev/disk/dsk4* /dev/rdisk/dsk4*
# 3) Disklabel schreiben - ohne Label ist die Platte nicht nutzbar
disklabel -r dsk4 # vorhandenes Label lesen (Fehler = kein Label)
disklabel -rw dsk4 # Standardlabel schreiben
disklabel -r dsk4 # Partition c ueber die ganze Platte?
# 4) Volume der Domain hinzufuegen
showfdmn data_domain # Zustand vorher notieren
addvol /dev/disk/dsk4c data_domain
showfdmn data_domain # neues Volume mit Free Space sichtbar?
ls -l /etc/fdmns/data_domain # Symlink auf dsk4c vorhanden?
# 5) Daten gleichmaessig verteilen
balance data_domain
showfdmn data_domain
df -k /data
# AdvFS-Domain ist voll - strukturiertes Vorgehen
# 1) Wo genau fehlt Platz: Domain oder Fileset-Quota
df -k /data
showfdmn data_domain # Free Space der Domain
showfsets data_domain # Quotas des Filesets
# 2) Schnellster Gewinn: Fragmentierung pruefen und beheben
defragment -nv data_domain # -n = nur analysieren, nichts aendern
defragment -v data_domain # im Betrieb moeglich, erzeugt I/O-Last
showfile -x /data/grossedatei # Extents einer einzelnen Datei
# 3) Grosse Verbraucher finden
du -k /data | sort -rn | head -20
find /data -xdev -size +200000 -exec ls -l {} \;
# 4) Quota des Filesets anheben, falls nicht die Domain die Grenze ist
chfsets -b 0 -f 0 data_domain data_fs # 0 = unbegrenzt (Domain begrenzt dann)
# 5) Domain dauerhaft vergroessern
hwmgr -scan scsi
disklabel -rw dsk5
addvol /dev/disk/dsk5c data_domain
showfdmn data_domain
balance data_domain
# 6) Alternative ohne neue Platte: vfast dauerhaft aktivieren
vfast status data_domain
vfast activate data_domain
vfast enable -o defragment=enable data_domain
Vor jeder Änderung diese vier Befehle:
sizer -v (welches Release), hwmgr view devices
(welche Geräte), showfdmn '*' (welche Domains),
clu_get_info (Cluster oder Einzelsystem). Die Ausgaben in eine Datei
umleiten – sie sind später der einzige Beweis des Ausgangszustands.
Manpages sind auf Tru64 die beste Quelle: Neben den
Kommando-Manpages gibt es sys_attrs_<subsystem> für jedes
Kernel-Subsystem (z. B. man sys_attrs_advfs,
man sys_attrs_inet) mit Default, Minimum und Maximum jedes
Tunables. Vor jeder sysconfigdb-Änderung dort nachlesen.
Grundregel: Kein Eingriff an Kernel, AdvFS, LSM oder
Cluster ohne aktuelles Backup und ohne notierten Ausgangszustand. Tru64 ist
außer Support – ein defektes System lässt sich nicht mehr durch
eine Neuinstallation von der Herstellerseite retten.