Jobvariablen (JVs) sind Speicherbereiche zum Austausch von Informationen. Sie können auf Kommando- und Programmebene angesprochen werden. Sie haben einen Pfadnamen und werden im Dateikatalog abgelegt.
Unter VM2000 dienen Jobvariable zur Übergabe von Informationen von VM2000 an eine Instanz, die eine VM überwachen soll. Virtuelle Maschinen können so mit Jobvariablen überwacht werden.
Beim Initialisieren der VM wird dazu eine überwachende Jobvariable (MONJV, monitoring jobvariable) festgelegt.
Der Ablageort und die Gültigkeit der MONJV richten sich nach der Ablaufumgebung des Kommando-Senders. VM2000 verwaltet und aktualisiert die MONJV solange die VM existiert. Durch geeignete Prozeduren kann die VM2000-Administration automatisch auf die in der MONJV abgelegten Informationen reagieren und so die VM2000-Administration erleichtern.
Nach Beendigung der VM bleibt die MONJV als Benutzer-Jobvariable erhalten.
Auch mit /ACTIVATE-VM-DEFINITION
initialisierte VMs können mit Jobvariablen überwacht werden. Nähere Informationen dazu finden Sie im Abschnitt „Arbeiten mit VM-Definitionen".
Voraussetzung für das Arbeiten mit Jobvariablen ist das Software-Produkt JV. Näheres zu Jobvariablen finden Sie im Handbuch „Jobvariablen“ [17], speziell Abschnitt „Auftrags-/Programmüberwachung mit Jobvariablen“.
Ein Beispiel für den Einsatz der MONJV zur Überwachung einer VM finden Sie am Ende dieses Abschnitts.
MONJVs können auch zur Überwachung von VM-Migrationen und von Hauptspeicher-Rekonfigurationen eingesetzt werden.
Beginn und Ende der Überwachung
Die MONJV zur Überwachung der VM wird beim Initialisieren der VM durch die Angabe des Operanden MONJV
eingerichtet. Ab diesem Zeitpunkt beginnt die Überwachung der VM, die MONJV wird von VM2000 versorgt.
Existiert bereits eine MONJV mit dem angegebenen Namen und einem Kennwort, so kann im Operanden JV-PASSWORD
dieses Kennwort zur Prüfung der Zugriffsberechtigung angegeben werden.
Die Überwachung endet mit der Beendigung der VM, nach der Migration der VM oder beim Beenden von VM2000 (implizites /DELETE-VM VM-ID=*ALL
). Die MONJV bleibt auch nach dem Ende der Überwachung als Benutzer-Jobvariable ohne MONJV-Schutz erhalten.
Schutz der MONJV
Das Betriebssystem schützt die ersten 128 Bytes (Systembereich) der MONJV vor unberechtigten Schreibzugriffen.
Die MONJV selbst ist gegen Löschen und Ändern der Schutzattribute geschützt. Die BS2000-Systembetreuung sollte zur Vermeidung von Inkonsistenzen diesen Schutz nicht aufheben. Nötigenfalls (z.B. nach abnormaler Systembeendigung im Monitorsystem ohne Restart) kann der MONJV-Schutz aufgehoben werden mit:
/MODIFY-JV-ATTRIBUTES JV-NAME=<monjv name>,
PROTECTION=*PARAMETERS(MONJV-PROTECTION=*NO)
Nach der regulären Beendigung der VM bleibt die MONJV als Benutzer-Jobvariable (Zustand $T
) ohne MONJV-Schutz erhalten.
Ablageort der MONJV
Die MONJV kann auf einem beliebigen Pubset im Monitorsystem angelegt werden. Zulässige Katalog- und Benutzerkennungen der MONJV richten sich nach der Ablaufumgebung des Kommando-Senders.
Kommandoeingabe aus Benutzertask
Privilegierte Benutzer (TSOS) können die MONJV unter einer beliebigen Benutzerkennung anlegen. Nicht-privilegierte Benutzer können die MONJV nur unter der eigenen Benutzerkennung anlegen.
Ohne Angabe von Katalog- und Benutzerkennung wird die MONJV von VM2000 unter der Benutzerkennung des Kommando-Senders als gemeinsam benutzbar und ohne Kennwort angelegt, wenn dort noch keine Jobvariable mit dem angegebenen Namen existiert.
Kommandoeingabe von KVP-Konsole oder logischer Konsole
Kommando-Sender ohne Operator-Logon können die MONJV nur unter TSOS anlegen. Ohne Angabe von Katalog- und Benutzerkennung wird die MONJV von VM2000 auf dem Home-Pubset des Monitorsystems unter TSOS als gemeinsam benutzbar und ohne Kennwort angelegt, wenn dort noch keine Jobvariable mit dem angegebenen Namen existiert.
Für Kommando-Sender mit Operator-Logon wird der Ablageort analog der Kommandoeingabe aus Benutzertask abhängig von den Einstellungen des Operator-Logon bestimmt.
Kommandoeingabe über $VMCONS
Benutzerkennung und Operator-Rolle für die Kommandoeingabe über $VMCONS ist die VMCONS-OPERID bzw. die VMCONS-OPERATOR-ROLE (siehe "Einrichten des VM2000-Monitors").
Der Ablageort der MONJV wird analog der Kommandoeingabe aus Benutzertask abhängig von den Einstellungen der VMCONS-OPERID und der VMCONS-OPERATOR-ROLE bestimmt.
Empfehlung
Die VM2000-Administration sollte bei der Vorbereitung des MONJV-Einsatzes geeignete organisatorische Maßnahmen treffen, um das Anlegen von MONJVs und den Zugriff auf die MONJVs zu koordinieren.
Soll z.B. von unterschiedlichen Kennungen auf die selbe MONJV zugegriffen werden, so empfiehlt es sich diese MONJV zuvor mit entsprechenden Schutzattributen zentral einzurichten und bekannt zu machen. In den VM2000-Kommandos und bei Zugriffen auf den Inhalt sollte dann die MONJV unter Angabe von Katalog- und Benutzerkennung angesprochen werden.
Werte für die MONJV
Eine MONJV für eine VM besteht aus einem Systemteil (Byte 1-128) und einem Benutzerteil (Byte 129-256).
Während der Existenz der VM werden von VM2000 in den Systemteil der MONJV zu bestimmten Zeitpunkten festgelegte Werte eingetragen.
Byte | Bedeutung / mögliche Werte |
---|---|
1-3 | Zustand der Überwachung (linksbündig, gefolgt von einem Leerzeichen):
|
4 | Reserviert, enthält den Wert Null (0) |
5-8 | Reserviert, enthält Leerzeichen |
9-12 | Katalogkennung des Home-Pubset des Monitorsystems (linksbündig, gefolgt von Leerzeichen) |
13-16 | Reserviert, enthält Leerzeichen |
17 | Typ der MONJV: Zeichen V (VM2000) |
18-20 | Aktuelle Systemlaufnummer (<integer 1..999> ) |
21-36 | Beginn der Überwachung (Öffnen der MONJV) in UTC-Zeit (Format: yyyy-mm-ddhhmmss ) |
37-70 | Reserviert |
71-78 | Name der VM (<name 1..8> , nicht für Zustand $S und $A ) |
79-81 | Index der VM abdruckbar (<name 3..3> , z.B. 002 ) |
82-86 | Zustand des Gastsystems:
|
87-94 | Migrations-Zustand der VM:
|
95-128 | Reserviert |
129-256 | Reserviert für Benutzer |
Anzeige der MONJV
Die Inhalte und Attribute der MONJV können Sie mit den Kommandos und Makros der Jobvariablen abfragen, z.B. /SHOW-JV
und /SHOW-JV-ATTRIBUTES
(siehe Handbuch „Jobvariablen“ [17]).
Der Name der MONJV wird in den VM2000-Kommandos /SHOW-VM-ATTRIBUTES
und /SHOW-VM-RESOURCES
über den Operanden INFORMATION=*MONJV/*ALL
als VM-MONJV
angezeigt.
Verhalten bei Migration der VM
Eine MONJV zur Überwachung der VM wird bei einer VM-Migration nicht auf die Ziel-SU migriert. Nach Beendigung der VM auf der lokalen Server Unit bleibt die MONJV als Benutzer-Jobvariable erhalten. Nach erfolgreicher Migration der VM auf die Ziel-SU enthält die MONJV den Überwachungszustand $T
(VM beendet).
Eine migrierte VM kann nicht mit einer MONJV überwacht werden.
Verhalten bei abnormaler Systembeendigung im Monitorsystem
MONJVs bleiben nach abnormaler Systembeendigung im Monitorsystem erhalten. Ihr Zustand ist zunächst derjenige, der vor der abnormalen Systembeendigung eingestellt war. Nach einem Restart des Monitorsystems werden die MONJVs baldmöglichst aktualisiert.
Ohne Restart des Monitorsystems
MONJVs bleiben in ihrem Zustand (mit MONJV-Schutz) vor der abnormalen Systembeendigung erhalten. Zustandsänderungen können nicht angezeigt werden.
In einer späteren Session kann diese MONJV beim Initialisieren einer neuen VM wieder zur Überwachung einer VM eingesetzt werden.
Mit Restart des Monitorsystems
Die MONJVs bleiben auch in der Session, die durch den Restart eingeleitet wird, gültig.
Wenn sich der Zustand des Gastsystems oder der VM während der Restart-Phase ändert, so werden die MONJVs aktualisiert, sobald auf das entsprechende Pubset zugegriffen werden kann:
Die MONJVs auf dem Home-Pubset werden bei
SYSTEM READY
aktualisiert.MONJVs auf einem Daten-Pubset werden nach dem Import des Pubset aktualisiert. Wenn der Pubset auch nach einer Stunde nicht wieder verfügbar ist, wird kein weiterer Versuch unternommen, auf die MONJVs zuzugreifen. Wenn sich der Zustand des Gastsystems oder der VM danach ändert, so versucht VM2000 erneut, die entsprechende MONJV zu aktualisieren. Bei jedem vergeblichen Versuch, auf eine MONJV zuzugreifen, wird an der BS2000-Konsole des Monitorsystems die Meldung
VMS4343
ausgegeben.
Beispiel
Die folgende Beispielprozedur kann z.B. eingesetzt werden, um nach dem Shutdown der Gastsysteme (z.B. mit /SHUTDOWN-VM VM-ID=*VM-GUESTS
) eine Folgeverarbeitung (z.B. Datensicherung) durchzuführen.
/SET-PROC-OPT /" **************************************************************" /" ** PROZEDUR VMCHECK *******" /" **************************************************************" /" ** DIE PROZEDUR WIRD IM MONITORSYSTEM AUFGERUFEN. " /" ** NICHT LAUFENDE VMS WERDEN BEENDET. " /" ** BEI LAUFENDEN VMS WIRD AUF DEREN SYSTEMBEENDIGUNG GEWARTET." /" ** WESENTLICHE SCHRITTE: " /" ** - VERBINDUNGSAUFBAU ZU VM2000 " /" ** - UEBERPRUEFEN DER EINGERICHTEN VMS " /" ** - BEENDEN DER NICHT LAUFENDEN VMS " /" ** - WARTEN AUF SYSTEMBEENDIGUNG IN DEN GASTSYSTEMEN DURCH " /" ** AUSWERTEN DER MONJV " /" ** - VERBINDUNGSABBAU ZU VM2000 " /" **************************************************************" /" **************************************************************" /DECLARE-VARIABLE NAME=SHVMR(TYPE=STRUCTURE),MULT-E=*LIST /DECLARE-VARIABLE NAME=TXT(TYPE=STRING,INIT-VALUE='OK') /DECLARE-VARIABLE NAME=I(TYPE=INT) /ASSIGN-SYSLST LST.VMCHECK /MODIFY-JOB-OPTIONS LOG=*PAR(LIST=Y) /MAIN: BEGIN-BLOCK DATA-INSERT=Y /"** VERBINDUNG ZU VM2000 AUFBAUEN " /BEGIN-VM-DIALOG VM-ID=1 /"** VMS ERMITTELN UND DEREN STATUS ABFRAGEN " /EXEC-CMD (SHOW-VM-RESOURCES INF=*ALL),STRUCT-OUT=SHVMR /FOR I=*COUNT(FROM=2, TO= SIZE('SHVMR'), INCR=1 ) /"** NICHT LAUFENDE VM'S SOFORT BEENDEN " / IF (SHVMR#I.STA NE '*RUN') / DELETE-VM VM-ID=&(SHVMR#I.VM-INDEX) / IF-CMD-ERROR / TXT = 'KEINE BEENDIGUNG DER VM &(SHVMR#I.VM-INDEX)' / GOTO LABEL = ERROR / END-IF / ELSE "** SONST AUF GASTYSTEM ENDE WARTEN **" / WAIT-EVENT *JV(((&(SHVMR#I.VM-MONJV),1,2) <> '$R'),TIME-LIM=300) / IF-CMD-ERROR / TXT = 'KEIN SYSTEMENDE DER VM &(SHVMR#I.VM-INDEX) ' / GOTO LABEL = ERROR / END-IF / JVMON = JV(SHVMR#I.VM-MONJV) / IF NOT (SUBSTRING(JVMON,1,2) = '$D' AND SUBSTRING(JVMON,82,5) = 'NTERM') / TXT = 'VM &(SHVMR#I.VM-INDEX) NICHT NORMAL TEMINIERT' / SEND-MSG TO=OPER,MSG='*** WARNUNG IN VMCHECK: &TXT ***' / TXT = 'NICHT ALLE VMS BEENDET' / ELSE / DELETE-VM VM-ID=&(SHVMR#I.VM-INDEX) / END-IF / END-IF /END-FOR /END-BLOCK MAIN /IF-BLOCK-ERROR "BEHANDLUNG UEBRIGE ERROR" / TXT = 'UEBRIGE BLOCK-FEHLER' / GOTO LABEL = ERROR /END-IF /"** NORMALES ENDE " /ERROR: /END-VM-DIALOG VM-ID=1 "ABMELDEN VON VM2000" /IF-CMD-ERROR; END-IF /IF (TXT = 'OK') / SEND-MSG TO=OPER,MSG='*** VMCHECK: ALLE GASTSYSTEME BEENDET ***' /ELSE / SEND-MSG TO=OPER,MSG='*** FEHLER IN VMCHECK: &TXT ***' /END-IF /MOD-JOB-OPTIONS LOG=*PAR(LIST=NO) /ASSIGN-SYSLST *PRIMARY /END-PROC