HACMP: Cluster-Kommandozeile
Dennoch lassen sich eine Reihe von Standardaufgaben im Cluster-Betrieb auch mit der Kommandozeile erledigen. Die wichtigsten Kommandos für die PowerHA-Versionen 5 und 6 sind in diesem kleinen Howto zusammengefasst.
Inhalt
Dynamische Rekonfiguration (CSPOC)
- »cl_«- versus »cli_«-Kommandos
- Volume Group erweitern
- Volume Group verkleinern
- Neues Dateisystem in vorhandener VG anlegen
- Dateisystem erweitern
- Logical Volume spiegeln
- Einen LV-Spiegel entfernen
- LV-Spiegel synchronisieren
- Logical Volume löschen
- Logical Volume verschieben
Resource Group Management
- Resource Groups listen
- Resource Group schwenken
- Resource Group deaktivieren
- Resource Group aktivieren
Informationen über den Cluster
- Wo liegen die Logfiles?
- Wo liegen die Start/Stop-Skripts?
- Wie ist eine bestimmte Resource Group konfiguriert?
- Die Cluster-IP-Konfiguration
Clusterstatus
Neue Befehle ab PowerHA 7.1
- Repository Disks listen
- HACMP-Netzwerke anzeigen
- Informationen über ein bestimmtes Netzwerk anzeigen
- Einen Netzwerk-Parameter ändern
1. PowerHA-Version
Einen eigentlichen Befehl, um die PowerHA-Version zu ermitteln, gibt es nicht¹. Die Version ergibt sich aus der Versionsnummer des cluster.es.server.rte-Filesets:
# lslpp -Lqc cluster.es.server.rte | cut -d: -f3 6.1.0.3
Der Clustermanager kann ebenfalls nach der Version abgefragt werden:
# lssrc -ls clstrmgrES | egrep '^local node vrmf|^cluster fix level' local node vrmf is 6103 cluster fix level is "3"
2. Programmpfade
Die Clusterkommandos werden auf verschlungenen Pfaden erreicht. Es empfiehlt sich daher, die Arbeitsumgebung um folgende Pfade zu erweitern:
# export PATH=$PATH:/usr/es/sbin/cluster:/usr/es/sbin/cluster/utilities:/usr/es/sbin/cluster/sbin:/usr/es/sbin/cluster/cspoc
3. Log-Dateien
hacmp.out
liegt meistens entweder unter /tmp oder /var/hacmp/log. cllistlogs zeigt, wo:
# /usr/es/sbin/cluster/utilities/cllistlogs /tmp/hacmp.out
cluster.log
/var/hacmp/adm/cluster.log
clcomd.log
/var/hacmp/clcomd/clcomd.log
Weitere Logs unter /var/hacmp/log
# ls -l /var/hacmp/log/*.log /var/hacmp/log/*.debug -rw-r--r-- 1 root system 492803 Sep 15 15:32 /var/hacmp/log/autoverify.log -rw-r--r-- 1 root system 124997 Sep 23 11:10 /var/hacmp/log/clinfo.log -rw-r--r-- 1 root system 482541 Sep 23 11:10 /var/hacmp/log/clstrmgr.debug -rw------- 1 root system 288599 Sep 23 09:00 /var/hacmp/log/clutils.log -rw-r--r-- 1 root system 353016 Sep 15 15:33 /var/hacmp/log/cspoc.log -rw-r--r-- 1 root system 11500 Sep 15 15:33 /var/hacmp/log/hacmprd_run_rcovcmd.debug
CAA-Cluster
/var/adm/ras/syslog.caaPowerHA 6.1 basiert noch nicht auf dem CAA-Cluster. Daher sind Informationen aus dieser Datei erst ab PowerHA 7.1 relevant.
Dynamische Rekonfiguration (CSPOC)
1. »cl_«- versus »cli_«-Kommandos
Die meisten Kommandos in diesem Abschnitt finden sich unter /usr/es/sbin/cluster/sbin
und beginnen mit »cl_
«
gefolgt vom bekannten AIX LVM-Befehl. Es sei aber angemerkt, dass diese Kommandos von den CSPOC SMIT-Menüs genutzt werden und eigentlich nicht
zur direkten Benutzung auf der Shell gedacht sind. Allerdings haben bereits viele AIX-Administratoren die Kommandos mit F6 aus den SMIT-Menüs gefischt
und verwenden sie seitdem rege. Sie scheinen also ihre Feuertaufe bestanden zu haben.
Mit HACMP 5.5 SP1 schließlich hat IBM eine "offizielle" Kommandozeilenschnittstelle (CLI) zu CSPOC eingeführt. Diese neuen Kommandos befinden sich unter
/usr/es/sbin/cluster/cspoc
. Im Gegensatz zu den CSPOC-Befehlen, die SMIT benutzt, beginnen die offiziellen Kommandos mit »cli_
«
(beachten Sie das zusätzliche i ) gefolgt vom bekannten AIX LVM-Befehl. Eingeführt wurden die offiziellen Kommandos, um es zu ermöglichen,
CSPOC-Kommandos in Batch-Skripts außerhalb von SMIT zu benutzen. Daher mögen diese Kommandos die bessere Wahl sein als die »cl_
«-Kommandos.
Die folgende Tabelle gibt einen Überblick über die wichtigsten LVM-Befehle und ihre CSPOC-Entsprechungen:
AIX | SMIT/CSPOC | "offizielles" CLI |
---|---|---|
(/usr/sbin) | (/usr/es/sbin/cluster/sbin) | (/usr/es/sbin/cluster/cspoc) |
chfs | cl_chfs | cli_chfs |
chlv | cl_chlv | cli_chlv |
chvg | cl_chvg | cli_chvg |
crfs | cl_crfs | cli_crfs |
extendlv | cl_extendlv | cli_extendlv |
extendvg | cl_extendvg | cli_extendvg |
mirrorvg | cl_mirrorvg | cli_mirrorvg |
mklv | cl_mklv | cli_mklv |
mklvcopy | cl_mklvcopy | cli_mklvcopy |
mkvg | cl_mkvg | cli_mkvg |
reducevg | cl_reducevg | cli_reducevg |
rmfs | cl_rmfs | cli_rmfs |
rmlv | cl_rmlv | cli_rmlv |
rmlvcopy | cl_rmlvcopy | cli_rmlvcopy |
syncvg | cl_syncvg | cli_syncvg |
unmirrorvg | cl_unmirrorvg | cli_unmirrorvg |
Die Syntax der Befehle aus einer Zeile der obigen Tabelle ist ähnlich, jedoch nicht identisch. Weiterführende Informationen finden sich im IBM-Redbook
PowerHA for AIX Cookbook, Kapitel 7.4.6
2. Volume Group erweitern
Eine oder mehrere PVs können mit cl_extendvg einer Cluster-VG hinzugefügt werden. Da die PVs (lies: hdisks) nicht unbedingt gleich nummeriert sind auf den verschiedenen Clusterknoten, muss ein Referenzknoten ("-R") angegeben werden.
nodeA# /usr/es/sbin/cluster/sbin/cl_extendvg -cspoc -n'nodeA,nodeB' -R'nodeA' VolumeGroup hdiskA hdiskB hdisk...
3. Volume Group verkleinern
nodeA# /usr/es/sbin/cluster/sbin/cl_reducevg -cspoc -n'nodeA,nodeB' -R'nodeA' VolumeGroup hdiskA hdiskB hdisk...
Auch hier muss natürlich ein Referenzknoten angegeben werden.
4. Neues Dateisystem in vorhandener VG anlegen
nodeA# /usr/es/sbin/cluster/sbin/cl_mklv -cspoc -n'nodeA,nodeB' -R'nodeA' -y'LVName' -c'2' -t'jfs2' -a'e' -e'x' -u'2' -s's' VolumeGroup LPs hdiskA hdiskB
Es empfiehlt sich, mit dem Schalter '-u' eine Upperbound anzugeben, die der Anzahl der PVs für eine Spiegelkopie entspricht. So werden Fehler vermieden, sollte das Dateisystem einmal erweitert werden.
Alternativ kann auch ein Map-File verwendet werden:
nodeA# /usr/es/sbin/cluster/sbin/cl_mklv -cspoc -n'nodeA,nodeB' -R'nodeA' -y'LVName' -c'2' -t'jfs2' -m MapFile VolumeGroup LPs nodeA# /usr/es/sbin/cluster/cspoc/cli_chlv -e x -u'2' -s's' LVName
Das Format des Map-Files ist wie folgt:
hdiskA:PP1 hdiskB:PP1 : hdiskC:PP2 hdiskD:PP2
Im Map-File werden erst die Mappings für Spiegelkopie 1 und dann die Mappings für Spiegelkopie 2 angegeben. Deshalb aufpassen bei der Anzahl der LPs im Kommando!
Das Dateisystem wird dann mit cl_crfs auf dem soeben erstellten LV angelegt, also etwa
nodeA# /usr/es/sbin/cluster/sbin/cl_crfs -cspoc -n'nodeA,nodeB' -v jfs2 -d'LVName' -m'/mountpoint' -p'rw' -a agblksize='4096' -a'logname=INLINE'
Das Dateisystem wird automatisch mit "mount = false" angelegt und auf dem richtigen Clusterknoten eingehängt.
5. Dateisystem erweitern
Ist auf den vorhandenen Platten noch genügend Platz, Superstrictness und Upperbound korrekt gesetzt, kann dies einfach mit AIX-Bordmitteln geschehen, also etwa
nodeA# chfs -a size=512G /mountpoint
Müssen der VG zunächst neue Platten hinzugefügt werden (1. Volume Group erweitern), benutzt man am besten ein Map-File, damit die Spiegelkopien korrekt verteilt werden:
nodeA# /usr/es/sbin/cluster/sbin/cl_extendlv -R'NODE' -u'8' -m'MapFile' LVName LPs nodeA# chfs -a size=512G /mountpoint
Die Upperbound muss an die neue Anzahl von PVs angepasst werden. Das Format des Map-Files ist dasselbe wie im Falle eines neuen Dateisystems - allerdings darf es nur die zusätzlichen PPs beinhalten. Gegebenenfalls muss vorher die maximale Zahl von LPs für dieses LV erhöht werden:
nodeA# /usr/es/sbin/cluster/sbin/cl_chlv -x'2048' LVName
6. Logical Volume spiegeln
# /usr/es/sbin/cluster/sbin/cl_mklvcopy -R'NODE' -e'x' -u'1' -s's' LVNAME 2 hdiskA hdiskB hdisk...
Da die hdisk-Nummerierung nicht unbedingt auf allen Clusterknoten identisch ist, muss zwingend ein Referenzknoten angegeben werden. Superstrictness und Upperbound müssen nur gesetzt werden, wenn sie nicht schon korrekt sind.
Möchte man genau kontrollieren wohin der Spiegel gehen soll, kann auch ein Mapfile¹ angegeben werden:
# /usr/es/sbin/cluster/sbin/cl_mklvcopy -m'/root/LVNAME.map' LVNAME 2
Unverständlicherweise kann hier kein Referenzknoten angegeben werden! Deshalb muss das Mapfile vom Knoten stammen, auf dem der Befehl abgesetzt wird. Am besten arbeitet man also auf der aktiven Seite.
7. Einen LV-Spiegel entfernen
# /usr/es/sbin/cluster/sbin/cl_rmlvcopy -R'NODE' LVName 1 hdiskA hdiskB hdisk...
Auch hier ist die Angabe eines Referenzknotens zwingend.
8. LV-Spiegel synchronisieren
Alle Spiegel einer Volume Group können mit dem Kommando
# /usr/es/sbin/cluster/cspoc/cli_syncvg -P 4 -v VGNAME
synchronisiert werden. Mit dem optionalen Schalter »-P 4« erreicht man, dass 4 LPs parallel synchronisiert werden.
9. Logical Volume löschen
# /usr/es/sbin/cluster/sbin/cl_rmlv 'LVName'
Das LV muss vorher geschlossen werden bzw. das entsprechende Dateisystem muss vorher abgehängt werden.
10. Logical Volume verschieben
In der Tabelle der Cluster-LVM-Befehle fehlt ein Kommando: migratepv
.
Wie lässt sich dennoch ein LV von einem PV zu einem anderen verschieben, während alle Cluster-Ressourcen online bleiben?
- Eine weitere Spiegelkopie auf der Zielplatte anlegen
/usr/es/sbin/cluster/sbin/cl_mklvcopy -R'NODE' -u'1' -s's' LV 3 Ziel-PV
- Spiegel synchronisieren
/usr/es/sbin/cluster/cspoc/cli_syncvg -P 4 -v VG
- Spiegelkopie von der Quellplatte entfernen
/usr/es/sbin/cluster/sbin/cl_rmlvcopy -R'NODE' LV 2 Quell-PV
- Schritte 1 -3 für die zweite Spiegelkopie wiederholen
Resource Group Management
1. Resource Group listen
# /usr/es/sbin/cluster/utilities/cllsgrp RG1 RG2
2. Resource Group schwenken
# /usr/es/sbin/cluster/utilities/clRGmove -g RG -n NODE -m
Man kann auch mehrere Resource Groups auf einmal schwenken:
# /usr/es/sbin/cluster/utilities/clRGmove -g "RG1,RG2,RG3" -n NODE -m
3. Resource Group deaktivieren
# /usr/es/sbin/cluster/utilities/clRGmove -g RG -n NODE -d
Mehrere Resource Groups werden mit Kommas aneinander gehängt: -g "RG1,RG2,RG3"
4. Resource Group aktivieren
# /usr/es/sbin/cluster/utilities/clRGmove -g RG -n NODE -u
Mehrere Resource Groups werden mit Kommas aneinander gehängt: -g "RG1,RG2,RG3"
Informationen über den Cluster
1. Wo liegen die Logfiles?
# /usr/es/sbin/cluster/utilities/cllistlogs /var/hacmp/log/hacmp.out /var/hacmp/log/hacmp.out.1 /var/hacmp/log/hacmp.out.2
2. Wo liegen die Start/Stop-Skripts?
# /usr/es/sbin/cluster/utilities/cllsserv AppSrv1 /etc/cluster/start_appsrv1 /etc/cluster/stop_appsrv1 AppSrv2 /etc/cluster/start_appsrv2 /etc/cluster/stop_appsrv2
3. Wie ist eine bestimmte Resource Group konfiguriert?
# /usr/es/sbin/cluster/utilities/clshowres -g RG
Will man die Konfiguration aller Resource Groups sehen, kann das Kommando ohne Parameter aufgerufen werden:
# /usr/es/sbin/cluster/utilities/clshowres
4. Die Cluster-IP-Konfiguration
# /usr/es/sbin/cluster/utilities/cllsif
Clusterstatus
1. Clusterstatus
Am bekanntesten ist wohl der Cluster-Monitor clstat:
# /usr/es/sbin/cluster/clstat -a
Der Schalter "-a" steht übrigens nicht für "all" wie man meinen könnte sondern für ASCII. Ist eine DISPLAY-Variable gesetzt, öffnet clstat ohne diesen Schalter nämlich ein X-Fenster mit grünen bzw. roten Bereichen je nach Status UP oder DOWN.
Die Informationen, die clstat liefert, bekommt man auch mit
# /usr/es/sbin/cluster/utilities/cldump
Beide Befehle benötigen snmp und den Cluster-Dämon clinfoES. Möchte man etwas über den Cluster erfahren,
wenn diese beiden Dienste nicht laufen, hilft eine
2. Abfrage des Clustermanagers
# lssrc -ls clstrmgrES Current state: ST_STABLE sccsid = "@(#)36 1.135.1.101 src/43haes/usr/sbin/cluster/hacmprd/main.C, hacmp.pe, 53haes_r610 11/16/10 06:18:14" i_local_nodeid 0, i_local_siteid -1, my_handle 1 ml_idx[1]=0 ml_idx[2]=1 There are 0 events on the Ibcast queue There are 0 events on the RM Ibcast queue CLversion: 11 local node vrmf is 6103 cluster fix level is "3" The following timer(s) are currently active: Current DNP values DNP Values for NodeId - 1 NodeName - barney PgSpFree = 16743822 PvPctBusy = 3 PctTotalTimeIdle = 90.121875 DNP Values for NodeId - 2 NodeName - betty PgSpFree = 16746872 PvPctBusy = 0 PctTotalTimeIdle = 97.221894
Die wichtigsten Informationen sind rot markiert.
3. Auf welchem Knoten sind aktive Ressouren?
# /usr/es/sbin/cluster/utilities/clRGinfo ----------------------------------------------------------------------------- Group Name Group State Node ----------------------------------------------------------------------------- RES_GRP_01 ONLINE barney OFFLINE betty RES_GRP_02 ONLINE betty OFFLINE barney
Neue Befehle ab PowerHA 7.1
Mit PowerHA 7.1 hat IBM den Schwenk auf den CAA-Cluster gemacht. Damit ist auch ein neues Kommando »clmgr« gekommen. Mit diesem Kommando können Informationen des zugrundeliegenden CAA-Clusters¹ angezeigt ("query") oder auch verändert ("modify") werden.
1. Repository Disks listen
# /usr/es/sbin/cluster/utilities/clmgr query cluster | grep REPOSITORIES REPOSITORIES="hdisk11 (00f8cbdcbaab7db6), hdisk10 (00f8cbdcbaab7e99)"
2. HACMP-Netzwerke anzeigen
# /usr/es/sbin/cluster/utilities/clmgr query networks net_ether_01 net_ether_02
3. Informationen über ein bestimmtes Netzwerk anzeigen
(hier über das Netzwerk net_ether_01 aus der Ausgabe oben)
# /usr/es/sbin/cluster/utilities/clmgr query network net_ether_01
4. Einen Netzwerk-Parameter ändern
Hier wird der Parameter RESOURCE_DIST_PREF auf NOALI gesetzt ( Reihenfolge der IP Aliase auf einem Interface)
# /usr/es/sbin/cluster/utilities/clmgr modify network net_ether_01
RESOURCE_DIST_PREF=NOALI