NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory...

129
NBS Protokolle und Datenstrukturen Joachim Backes Dr. Martin Bürkle REGIONALES HOCHSCHULRECHENZENTRUM KAISERSLAUTERN RHRK PFAFFENBERGSTRASSE 95, D-6750 KAISERSLAUTERN, TEL.: (0631) 205-2263

Transcript of NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory...

Page 1: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

NBS

Protokolle undDatenstrukturen

Joachim BackesDr. Martin Bürkle

REGIONALES HOCHSCHULRECHENZENTRUM KAISERSLAUTERN

RHRK

PFAFFENBERGSTRASSE 95, D-6750 KAISERSLAUTERN, TEL.: (0631) 205-2263

Page 2: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Inhaltsverzeichnis1 Allgemeine Protokoll-Konventionen............................................................................................................................................................................................ 62 Auflistung der einzelnen Kommandos......................................................................................................................................................................................... 8

2.1 Externe Kommandos..................................................................................................................................................................................................................... 82.2 Antworten auf Kommandos........................................................................................................................................................................................................... 9

3 Beschreibung der einzelnen Kommandos................................................................................................................................................................................. 103.1 CPW: Directory-, Administrator- oder Poolpasswort ändern........................................................................................................................................................ 113.2 DCR: Directory einrichten........................................................................................................................................................................................................... 123.3 DDE: Directory löschen............................................................................................................................................................................................................... 133.4 PWT: Gebe Passworttabelle bekannt........................................................................................................................................................................................... 143.5 PMG: Einen Pool administrieren.................................................................................................................................................................................................. 153.6 FRM: Einen Dateibackup aus einem Directory entfernen............................................................................................................................................................. 173.7 FRE: Restaurieren von Dateien.................................................................................................................................................................................................... 193.8 FIN: Information über einen speziellen Backup........................................................................................................................................................................... 223.9 FSA: Einen Dateibackup erzeugen............................................................................................................................................................................................... 243.10 DSH: Eigenschaften eines Directorys protokollieren.................................................................................................................................................................. 263.11 DSH: Inhalt eines Pools protokollieren...................................................................................................................................................................................... 273.12 NSH: Hauptlisten von NBS anzeigen......................................................................................................................................................................................... 283.13 TPE: Die Eigeschaften eines Gerätetyps festlegen oder ändern.................................................................................................................................................. 293.14 NOP: Leerelement..................................................................................................................................................................................................................... 303.15 SHU: Herunterfahren des NBS-Servers...................................................................................................................................................................................... 313.16 MDM: Dump Backup-Medium................................................................................................................................................................................................... 323.17 MCP: Kopiere Backup-Medium.................................................................................................................................................................................................. 343.18 MCM: Vergleiche Backup-Medien.............................................................................................................................................................................................. 353.19 BCO: Meldung con Nbs_save über kopierte Bufferfiles beim Savevorgang................................................................................................................................ 363.20 RCO: Nbs_restore hat einen Restorevorgang abgeschlossen...................................................................................................................................................... 383.21 MDO: Meldung von Nbs_dumptape: Dumpvorgang abgeschlossen........................................................................................................................................... 393.22 MCO: Meldung von Nbs_copytape: Kopiervorgang abgeschlossen............................................................................................................................................. 403.23 MPO: Meldung von Nbs_comptape: Medium-Vergleichsvorgang abgeschlossen........................................................................................................................ 413.24 CCO: Meldung von Nbs_compress: Kompressteilschritt abgeschlossen...................................................................................................................................... 42

4 Bedeutung der NBS-Fehlerschlüssel.......................................................................................................................................................................................... 434.1 Bedeutung der BCO-Fehlerschlüssel............................................................................................................................................................................................ 43

Seite 2 Backes/Bürkle 21.11.1996

Page 3: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4.2 Bedeutung der Restore-Fehlerschlüssel (RCO)............................................................................................................................................................................ 444.3 Bedeutung der Dump-Fehlerschlüssel (MDO)............................................................................................................................................................................. 464.4 Bedeutung der Copy-Fehlerschlüssel (MCO)............................................................................................................................................................................... 474.5 Bedeutung der Compare-Fehlerschlüssel (MPO)......................................................................................................................................................................... 484.6 Bedeutung der Compress-Fehlerschlüssel (CCO)......................................................................................................................................................................... 49

5 Kommunikationselemente xbabresR Nbs_ud⇔ ........................................................................................................................................................................ 505.1 FRE: Restaurieren einer Datei (xbaresR)..................................................................................................................................................................................... 50

6 Server- und Dämon-Schnittstellen............................................................................................................................................................................................. 516.1 ARGV-Parameterliste für Nbs_mux.............................................................................................................................................................................................. 52

7 ARGV-Parameterliste für Nbs_serv............................................................................................................................................................................................ 537.1 ARGV-Parameterliste für Nbs_fork.............................................................................................................................................................................................. 54

7.1.1 STDIN-Versorgung von Nbs_fork für eine Save-Lauf........................................................................................................................................................... 567.1.2 STDIN-Versorgung von Nbs_fork für einen Restore-Lauf..................................................................................................................................................... 587.1.3 STDIN-Versorgung von Nbs_fork für einen Compress-Lauf.................................................................................................................................................. 607.1.4 STDIN-Versorgung von Nbs_fork für einen Dump-Lauf....................................................................................................................................................... 617.1.5 STDIN-Versorgung von Nbs_fork für einen Medium-Kopier-Lauf........................................................................................................................................ 627.1.6 STDIN-Versorgung von Nbs_fork für einen Medium-Compare-Lauf..................................................................................................................................... 63

7.2 ARGV-Parameterliste für Nbs_save.............................................................................................................................................................................................. 647.3 ARGV-Parameterliste für Nbs_restore.......................................................................................................................................................................................... 657.4 Versorgung für Nbs_mount......................................................................................................................................................................................................... 66

7.4.1 Anweisungen an nbs mount (intern über nbs save.... und extern über nbs reply)................................................................................................................677.5 ARGV-Parameterliste für Nbs_dumptape..................................................................................................................................................................................... 697.6 ARGV-Parameterliste für Nbs_copytape....................................................................................................................................................................................... 717.7 ARGV-Parameterliste für Nbs_comptape..................................................................................................................................................................................... 727.8 ARGV-Parameterliste für Nbs_compress...................................................................................................................................................................................... 747.9 Versorgung für Nbs_ud................................................................................................................................................................................................................ 76

7.9.1 Optionen für Nbs_ud........................................................................................................................................................................................................... 767.9.2 STDIN-Versorgung für Nbs_ud............................................................................................................................................................................................ 777.9.3 Beispiel für einen Nbs_ud-Start........................................................................................................................................................................................... 77

8 Auflistung der Schlüsselworte XbaresN..................................................................................................................................................................................... 788.1 Xbares-Kommandos..................................................................................................................................................................................................................... 788.2 Die Optionen............................................................................................................................................................................................................................... 79

9 Auflistung der intern verwendeten Schlüsselwörter XbaresNI.................................................................................................................................................. 8210 Realisierungs-Einschränkungen im Protokoll xbares/xbaresP NBS⇔ .................................................................................................................................... 84

Seite 3 Backes/Bürkle 21.11.1996

Page 4: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

11 NBS-Konfiguration im Zusammenhang mit einem Bandroboter............................................................................................................................................. 8512 Aufbau der Containerinhalte................................................................................................................................................................................................... 87

12.1 Dateitypunabhängiger Teil der Containerinformation............................................................................................................................................................... 8712.2 Containerinformation für Dateien............................................................................................................................................................................................. 8812.3 Containerinformation für Links................................................................................................................................................................................................. 8812.4 Containerinformation für Directories......................................................................................................................................................................................... 88

13 Datenstrukturen des Servers Nbs_serv.................................................................................................................................................................................... 8913.1 Die MAINLIST........................................................................................................................................................................................................................... 89

13.1.1 Die eigentliche MAINLIST................................................................................................................................................................................................. 9013.1.2 PARAM-LIST..................................................................................................................................................................................................................... 9113.1.3 DIR-LIST........................................................................................................................................................................................................................... 9213.1.4 BUFFER-LIST: Liste der vorhandenen Buffer-Dateien........................................................................................................................................................ 9313.1.5 Pool-LIST........................................................................................................................................................................................................................... 9413.1.6 DEVLIST............................................................................................................................................................................................................................ 9513.1.7 SYSLIST............................................................................................................................................................................................................................. 96

13.2 VOLIST...................................................................................................................................................................................................................................... 9713.3 Archivdirectorys...................................................................................................................................................................................................................... 100

13.3.1 Verweis-Records.............................................................................................................................................................................................................. 10013.3.2 Archivrecords.................................................................................................................................................................................................................. 102

13.3.2.1 Recordkopf............................................................................................................................................................................................................. 102 13.3.2.2 Informationsteil der Archivrecords......................................................................................................................................................................... 102

13.3.3 Beispiel-Tree................................................................................................................................................................................................................... 10513.3.4 Operationen auf dem Archivdirectory.............................................................................................................................................................................. 108

13.3.4.1 Einrichten Archiv-Directory.................................................................................................................................................................................... 109 13.3.4.2 Löschen Archiv-Directory....................................................................................................................................................................................... 109 13.3.4.3 Backup von Benutzerdateien.................................................................................................................................................................................. 109 13.3.4.4 Restore von Benutzerdateien.................................................................................................................................................................................. 109 13.3.4.5 Informieren über Benutzerdateien.......................................................................................................................................................................... 109 13.3.4.6 Löschen von Benutzerbackups................................................................................................................................................................................ 110 13.3.4.7 Umbenennen von Benutzerdateien......................................................................................................................................................................... 110 13.3.4.8 Kompression von n Datenträgern (inkl. Ihrer Duplikate)....................................................................................................................................... 110 13.3.4.9 Sichern eines Archivdirectoys................................................................................................................................................................................. 111 13.3.4.10 Konsistenzprüfung für ein Directory (??)............................................................................................................................................................. 111 13.3.4.11 Directory entladen................................................................................................................................................................................................ 111

Seite 4 Backes/Bürkle 21.11.1996

Page 5: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.4.12 Ändern Directory-Passwort................................................................................................................................................................................... 111 13.3.4.13 Löschen Benutzerpasswort.................................................................................................................................................................................. 112 13.3.4.14 Teilen eines Directoryrecord................................................................................................................................................................................. 112 13.3.4.15 Löschen eines Directoryrecords............................................................................................................................................................................ 112 13.3.4.16 Verschmelzung zweier Directorys......................................................................................................................................................................... 112 13.3.4.17 Einfügen eines neuen Entrys................................................................................................................................................................................ 113

14 Datenträgeraufbau................................................................................................................................................................................................................ 11414.1 Allgemeines zum Datenträgeraufbau....................................................................................................................................................................................... 11414.2 Struktur der Container............................................................................................................................................................................................................ 11414.3 Merkposten............................................................................................................................................................................................................................. 11614.4 Container-Buffer...................................................................................................................................................................................................................... 11614.5 Buffernutzung bei Backups...................................................................................................................................................................................................... 11714.6 Buffernutzung bei Restore....................................................................................................................................................................................................... 117

15 Einschränkungen................................................................................................................................................................................................................... 11816 Sonstiges................................................................................................................................................................................................................................ 119

16.1 Merkpositionen....................................................................................................................................................................................................................... 11916.2 Offene Fragen.......................................................................................................................................................................................................................... 121

17 Anhänge................................................................................................................................................................................................................................. 12217.1 Motivation der Restauration von Objekten durch den User (xbaresR)..................................................................................................................................... 122

17.1.1 Wie verfahren wir momentan?........................................................................................................................................................................................ 12217.1.2 Problematik..................................................................................................................................................................................................................... 12217.1.3 Aufgabenstellung............................................................................................................................................................................................................. 12217.1.4 Vorschlag zur Realisierung.............................................................................................................................................................................................. 124

17.1.4.1 User-Interface (aus xbares abgeleitet).................................................................................................................................................................... 124 17.1.4.2 Der Daemon Nbs_ud (User-Daemon)..................................................................................................................................................................... 124 17.1.4.3 Änderungen und xbares und xbaresS..................................................................................................................................................................... 125 17.1.4.4 Protokollierung...................................................................................................................................................................................................... 125

17.2 Vorschlag zur Nbs-mux-Integration in Nbs_serv...................................................................................................................................................................... 12617.2.1 Initialisieren der Schnittstelle.......................................................................................................................................................................................... 12617.2.2 Einfaches Senden zum Client.......................................................................................................................................................................................... 12817.2.3 Senden zum Client mit Zwischenpufferung zum Aufsammeln......................................................................................................................................... 12917.2.4 Empfangen vom Client.................................................................................................................................................................................................... 130

Seite 5 Backes/Bürkle 21.11.1996

Page 6: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

1 Allgemeine Protokoll-KonventionenDie cIientseitigen Funktionen sind gesplittet und teilen sich auf in folgende Programme:

Programm Funktion Vom User aufrufbar

xbares Allgemeine User-Schnittstelle Y

xbaresS Interne Schnittstelle zum Server-Kontakt N

xbaresP Filterprogramm für Save und Restore (Einsatz in einer Pipe) Y

xbaresR Lightweight-Kommandoschnittstelle zum Restaurieren/Informieren ohne Angaben zum Archiv Y

xbaresZ Userseitige Behandlung von Komprimierung/Entkomprimierung bei Save/Restore N

XbaresR als Lightweight-Kommando-Schnittstelle dient zum Restaurieren einer Datei, bei der Angaben zum Archiv nicht erforderlich sind. Die Kommunikation erfolgt hierbei mit dem Dämon Nbs_ud, der mit root-Rechten zu starten ist, wo ein NBS-Pool-Administrator Backupvorgänge durchführt, und seinerseits einen eigentlichen xbares-Prozess zur Restauration initialisiert.

Die Serverschnittstelle ist ebenfalls gesplittet. Die Datenblöcke, die zwischen Nbs_mux ( = Master- und -Multiplexserver) und Nbs_serv (=Nachrichten-Verarbeitungsserver) ausgetauscht werden, besitzen alle einen 15 Bytes langen Header. Die ersten vier Bytes dieses Headers enthalten dezimal mit führenden Nullen eine von Nbs_mux vergebene laufende Nummer, mithilfe derer Nbs_mux den Socket zum Client xbaresS identifizieren kann (Socket-ID). Die restlichen 11 Bytes enthalten dezimal mit führenden Nullen die Gesamt- Blocklänge ohne den 15 Bytes langen Header. Neben diesen Einzelblöcken gibt es noch sog. SM-Blöcke, die aus mehreren, direkt hintereinander liegenden Einzelblöcken im Shared Memory aufgebaut sind. Innerhalb der Folge der Einzelblöcke im SM-Block dürfen Blöcke, die vom Partner eine Antwort erfordern, nur am Ende auftreten, und die Socket-ID ändert sich nicht. Auf der Kommunika-tionsschnittstelle wird lediglich ein 31 Bytes langes Feld übertragen, und zwar mit dem 15 Byte langen Header (mit Gesamt-Blocklänge 0),

Seite 6 Backes/Bürkle 21.11.1996

Page 7: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

8 Hex-Zeichen als Shared-Memory-ID (shmid) und 8 Hex-Zeichen als Länge des SM-Blockes (ohne 31er-FeId).

Das Weiterreichen des Verweises auf die Socket-ID ist erforderlich, damit Nbs_mux beim Datenempfang von Nbs_serv den entspre- chenden xbares/xbaresR bzw. Nbs_save- oder Nbs_restore-Prozess zuordnen kann.

Nbs_serv startet gleich zu Beginn den Tochterprozeß Nbs_fork, welcher im Falle längerer Vorgänge wie z.B. eines Save, Restore oder Compress über Forking Subprozesse wie Nbs_save und Nbs_restore erzeugt. Die Kommunikation Nbs_serv Nbs_fork Sub-prozesse erfolgt über ein weiter unten festgelegtes Protokoll. Anzumerken ist an dieser Stelle aber, dass Prozesse wie Nbs_save,... Rückmeldungen an Nbs_serv ebenfalls über Nbs_mux vornehmen, d.h. sie verhalten sich Nbs_mux gegenüber wie clients, wobei der Header ggf. ebenfalls durch den Socket-Verweis überlagert wird. Dies ist z. B. dann von Bedeutung, wenn bei Restore Blöcke direkt, ohne Umweg über Nbs_serv, an den xbaresS-CIient geschickt werden.

Nbs_mux als Master und Prozessgroup-Leader startet neben Nbs_serv auch den Mount-Daemon Nbs_mount. Im Falle eines Abbruchs eines dieser beiden ChiId-Prozesse bricht Nbs_mux als Groupleader alle Subprozesse ab - nicht nur Nbs_serv und Nbs_mount-, um damit ein geordnetes Wiederaufsetzen zu ermöglichen.

Nbs_save, Nbs_restore,... geben über den Dämon Nbs_mount die Mountanfragen entweder auf einem TTY-ähnlichen Gerät, auf der Konsole (/dev/console) oder einem X-TerminaI aus. Sie werden vom Operateur mit dem Shellskript Nbs_reply beantwortet, bei X-Terminals dagegen über einen grafischen Dialog.

Seite 7 Backes/Bürkle 21.11.1996

Page 8: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

2 Auflistung der einzelnen Kommandos2.1 Externe Kommandos

cmd_CHANGE_PWD CPW Administrator- und/oder Directory-Passwort ändern

cmd_SAVE FSA Dateien sichern

cmd_RESTORE FRE Dateien restaurieren

cmd_SHOW FIN Inhalt eines Directories anzeigen

cmd_DELETE FRM Dateien aus einem Directory austragen

cmd_MANAGE_POOL PMG Kreation/Löschung/Erweiterung/Verkürzung eines Datenträgerpools

cmd_Nbs_SHOW NSH Hauptlisten von NBS anzeigen

cmd_CREATE_DIRECTORY DCR Kreation eines Directories

cmd_DELETE_DIRECTORY DDE Löschen eines Directories

cmd_SHOW_DIRECTORY DSH Eigenschaften eines Directories anzeigen

cmd_TYPEDIT TPE Die Eigenschaften eines Gerätetyps festlegen

cmd_SHUTDOWN SHU NBS-Server kontrolliert beenden

cmd_DUMP_MEDIA MDM Backup-Medium dumpen

cmd_COPY_MEDIA MCP Backup-Medium kopieren

cmd_COMP-MEDIA MCM Backup-Medien vergleichen

cmd_CPRS_MEDIA MCR Backup-Media komprimieren

cmd_PASSWORD_TABLE PWT Passworttabelle bekanntgeben

Seite 8 Backes/Bürkle 21.11.1996

Page 9: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

2.2 Antworten auf Kommandos

cmd_BREAK BRK Die Verbindung zwischen xbares und Nbs_mux wurde abgebrochen

cmd_CONNECTED CON Die Verbindung zwischen xbares und Nbs_mux wurde aufgebaut

cmd_NOP NOP Leerelement

cmd_BUFFER_COPY BCO Rückmeldung über Buffer-Kopie von Nbs_save an Nbs_serv

cmd_RESTORE_COMPLETED RCO Rückmeldung über vollzogenen Restorelauf von Nbs_restore an Nbs_serv

cmd_COMPRESS_STEP CCO Rückmeldung über Compress-Step von Nbs_comptape and Nbs_serv

cmd_DUMP_MEDIA_DONE MDO Rückmeldung über vollzogenen Dump eines Backup-Mediums

cmd_COPY_MEDIA_DONE MCO Rückmeldung über vollzogene Kopie eines Backup-Mediums

cmd_COMP-MEDIA_DONE MPO Rückmeldung über vollzogenen Vergleich zweier Backup-Media

Seite 9 Backes/Bürkle 21.11.1996

Page 10: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3 Beschreibung der einzelnen Kommandos

Bei der Beschreibung der einzelnen Kommandos wird für die Werte folgende Schreibweise gewählt: Fettschrift bedeutet ein direkt einzugebendes Schlüsselwort, bei Kursivschrift ist entsprechend der variable Wert einzugeben.

Ein einzelnes Keyword wird stets mit = abgeschlossen. Dies wird in den Kommandobeschreibungen nicht gesondert erwähnt.″ ″

Wenn xbares im Batchbetrieb läuft, d.h. wenn kein X-Window- Betrieb möglich ist, oder wenn der Benutzer dies explizit verlangt durch Vorgabe einer Aktion, oder wenn xbaresP läuft, so wird die Angabe "continuation={yes|no}" prinzipiell durch "continuation=batch" ersetzt. Dies gilt für alle nachstehend beschriebenen Kommandos.

Die im Verkehr zwischen xbares/xbaresP und Nbs auftretenden Elemente vom Typ TXT und ERROR sind an beliebigen Stellen des Protokollflusses möglich. Sie werden deshalb bei den nachstehenden Einzelbeschreibungen nicht mitaufgeführt.

Seite 10 Backes/Bürkle 21.11.1996

Page 11: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.1 CPW: Directory-, Administrator- oder Poolpasswort ändern

Keyword Wert Bedeutung

continuation {yes|no} wenn Directorypasswort zu ändern ist

directory directory_name wenn Directorypasswort zu ändern ist

dirpassword directompassword wenn Directorypasswort zu ändern ist

admpassword admin_password wenn Administratorpasswort zu ändern ist

newadmpassword new_admin_password wenn Administratorpasswort zu ändern ist

pool pool_name wenn Poolpasswort zu ändern ist

poolpassword pool_password wenn Poolpasswort zu ändern ist

newpoolpassword new_pool_password wenn Poolpasswort zu ändern ist

Alternativ kann statt poolpassword auch admpassword angegeben werden, und alternativ zu dirpassword auch poolpassword oder admpassword, d.h. Verwalter mit höheren Rechten können auch niederwertigere Passwörter ändern.

Seite 11 Backes/Bürkle 21.11.1996

Page 12: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.2 DCR: Directory einrichten

Keyword Wert Bedeutung

continuation {yes|no}

action {create|modify} Angabe, ob ein Directory neu eingerichtet werden soll oder ob Eigenschaften zu ändern sind. Keine Angabe des action-Parameters hat die gleiche Wirkung wie create.

pool pool_name

admpassword administrator_password Die Angabe ist optional. Sie wird nur dann gesendet, wenn keine Poolpasswort angegeben wurde.

poolpassword pool_password

dispassword directory_password Diese Angabe ist nur bei der Kreation eines Directorys erforderlich

language {english|german} kann noch um weitere Sprachen erweitert werden

generations generation_number

Seite 12 Backes/Bürkle 21.11.1996

Page 13: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.3 DDE: Directory löschen

Keyword Wert Bedeutung

continuation {yes|no}

directory directory_name Die Angabe ist optional

admpassword administrator_password Ein richtiges Administratorpasswort hat Vorrang vor einem angegebenen

poolpassword pool_password

Seite 13 Backes/Bürkle 21.11.1996

Page 14: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.4 PWT: Gebe Passworttabelle bekannt

Keyword Wert Bedeutung

continuation {yes|no}

INADDR internet_address IP-Adresse des xbares/xbaresP-Clients

ID own_pid Prozess-ID des xbares/xbaresP-Clients

CHID own_uid User-ID des xbares/xbaresP-Clients

admpassword administrator_password Kann auch leer sein

pool pool_name Kann auch leer sein

poolpassword pool_password Kann auch leer sein

directory directory_name Kann auch leer sein

dirpassword directory_password Kann auch leer sein

Nbs_serv antwortet, abhängig von des angegebenen Passworten, folgendermaßen:

TK1=<genau 7-stelliges Token für admpassword>TK1=<genau 7-stelliges Token für poolpassword>TK1=<genau 7-stelliges Token für dirpassword>

Besteht ein Token aus 7 Nullen ("0000000"), dann war das angegebene Passwort nicht korrekt.

Anmerkung: Tokens können nicht nur als Antwort auf PWT rückgemeldet werden, sondern sie sind auch möglich nach jedem Kommando,welches ein Passwort sendet. Dies wird bei den einzelnen Kommandobeschreibungen nicht gesondert erwähnt.

Seite 14 Backes/Bürkle 21.11.1996

Page 15: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.5 PMG: Einen Pool administrieren

Keyword Wert Bedeutung

continuation {yes|no}

admpassword admin_password

action {create|delete|extend|reduce|compress}

pool pool_name

poolpassword pool_password Nur bei action={create|compress}. Im Falle von action=compress ist die Strategie folgende: Ist auch ein Administratorpasswort angegeben (von einem Leerstring verschieden), so wird das Poolpasswort ignoriert. Es wird von xbares nur dann ausgwertet und gesendet, wenn kein Administratorpasswort angegeben wurde.

contsize container_size Maximalgröße. 256⩽contsize⩽65535. Wird nur beim Pool-Einrichten verwendet

copies copy_number Wird nur beim Pool-einrichten verwendet

volumes volumes In der Form vsn/typ[,vsn/typ...]. Es gilt 0⩽typ⩽31. Wird nicht bei action=delete angegeben.Im Fall action=compress kann unter volumes nicht nur ein Volume in der Form <vsn>/00 angegeben werden, sondern auch:

*MAXIMUM: maximale Kompression*DIRECTORY: Directory-Volums komprimieren*SHOW Liste komprimierbarer Volumes ausgeben lassen (zur Abschätzung

des Kompressionseffektes)%<zahl> Angegebene Zahl Volumes durch Kompression zusätzlich freigeben.

Außer bei *DIRECTORY beziehen sich die Kompressionsangaben nur auf Dateiarchivmedien

Seite 15 Backes/Bürkle 21.11.1996

Page 16: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Im Falle von volumes=*MAXIMUM und volumes=%<zahl> quittiert Nbs_serv vor dem Endeblock mit einer Liste einzelner Volumeangaben, aus denen xbares pro angegebener, unverändert übernommener Volumeangabe einen internen separaten PMG-Auftrag mit action=compress generiert.

Diese Liste ist folgendermaßen aufgebaut:

volumes=<vol1>/<typ1>...volumes=<voln>/<typn>

Seite 16 Backes/Bürkle 21.11.1996

Page 17: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.6 FRM: Einen Dateibackup aus einem Directory entfernen

Keyword Wert Bedeutung

continuation {yes|no}

directory directory_name

dirpasswordpoolpasswordadmpassword

passwordGenau eines der drei Passwörter ist anzugeben

removemode {oldest|mostrecent|all|enforce|<date>} oldest Älteste Version löschen

mostrecent Jüngste Version löschen

all Alle Versionen löschen; Directorynodes nur dann, wenn sie leer sind

enforce Alle Versionen löschen, Directorynodes ebenfalls einschließlich aller Versionen aller Subnodes. In diesem Fall muss als Passwort eine korrektes Pool- oder Administratorpasswort angegeben sein.

<date> Version lt. angegebenem Datum löschen. Die Datumsangabe erfolgt im Format gemäß TOUCHDATE. Die Datumsangabe gemäß removemode bewirkt eine Voreinstellung für die nachfolgenden Dateien, für die kein explizites Datum über date= angegeben wurde.

Danach erfolgen beliebig viele Zeilen der Form (Angaben für eines Datei sind, einander auschließend, über FILE oder TFI möglich)″ ″ ″ ″

date date Intern verschlüsselt gemäß TOUCHDATE. Wenn angegeben, wird removemode für diese Datei ignoriert.

FILE file_name Kompletter Dateiname: Angabe der aus dem Backup zu entfernenden Datei.

TFI <cccc><rest des file_name> Konstruktionsvorschrift für einen Dateinamen: Von dem Vorgängerdateinamen (FRM=) werden von vorne cccc Zeichen übernommen, daran wird <rest des file_name> angehängt. cccc muss eine eine genau vierstellige Dezimalzahl sein.Achtung: Bei jedem der FRM-Aufrufe wird dieser Algorithmus neu aufgesetzt, d.h. der Vorgängerdateiname wird neu festgelegt.

Seite 17 Backes/Bürkle 21.11.1996

Page 18: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Um den Multiplexbetrieb von Nbs_serv nicht zu stark zu behindern, teilt xbares, wenn mehr als (z.Zt.) 100 Dateibackups angegeben sind, diese Menge in Segmente von (z.Zt.) 100 Dateinamen auf und generiert daraus entsprechende viele unabhängige FRM-Aufrufe.

Seite 18 Backes/Bürkle 21.11.1996

Page 19: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.7 FRE: Restaurieren von Dateien

Keyword Wert Bedeutung

continuation {yes|no}

CV client_version Aktuelle Version des Client (xbaresS/xbaresP)-Teils

directory directory_name

dirpassword directory_password

restoremode {oldest|mostrecent|actual|<date>}

Bei der Angabe restoremode=<date> erfolgt die Datumsangabe im TOUCHDATE-Format. Die Datumsangabe gemäß restoremode bewirkt eine Voreinstellung für die nachfolgenden Dateien, für die kein explizites Datum über date= angegegeben wurde.

restoreselect {all|input} all bedeutet, dass zu jeder Angabe unter FILE ggfls. auch der komplette Subtree restauriert wird.

XBPORT port_number Port, über dem xbaresS/xbaresP die Container von Nbs_restore empfängt (bei externen Ge-räten)

INADDR internet_address IP-Adresse des xbaresS/xbaresP-Clients, relevant bei externen Geräten

encryptkey encryptkey_encrypted Mit sich selbst verschlüsselter Key

encryptkey2 encryptkey_encrypted Mit sich selbst verschlüsselter zusätzlicher Key, optional

encryptkey3 encryptkey_encrypted Mit sich selbst verschlüsselter zusätzlicher Key, optional

archivpath archiv_path Optional. Eine Angabe bedeutet, dass bei den angegebenen Dateien unter FILE am Anfang der archiv_path durch client_path zu ersetzen ist. Der sich so ergebende Dateiname wird im Normalfall auf eine gesichrte Datei einer anderen Machine verweisen. Damit kann man im Zusammenhang mit client_path Dateien anderer Systeme auf die eigene Maschine restau-rieren, oder in eine andere Datei hinein restaurieren.

clientpath client_path Optional und nur in Zusammenhang mit archivpath sinnvoll. Ergibt den neuen lokalen Datei-Namenspräfix, nachdem der archivpath abgestreift wurde.

date date Intern verschlüsselt gemäß TOUCHDATE. Eine solche Angabe setzt die Parameter gemäß restoremode für diese Datei außer Kraft.

FILE file_names die Angabe kann mehrfach auftreten

Seite 19 Backes/Bürkle 21.11.1996

Page 20: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

ACK 0x00000000 Abschluss der Dateinamensfolge

ACK container_counter Mehrfach eingestreut! 4 Bytes binäre Containernummer, Quittung für empfangenen Container. Ist das ACK-Feld länger als 4 Bytes (9 Bytes), so enthält es zusätzlich die binäre ID der letzten Datei, die nicht restauriert werden konnte, ohne Trennzeichen.

NBS antwortet folgendermaßen:

ACC= ack_counter 4 Bytes binär; Angabe, nach wievielen Sendungen xbaresS/xbaresP mit ACK antworten müssen; nur einmal

EXTERN {yes|end|restore_id} Nbs_serv sendet yes, bevor ein Nbs_restore für den Offline-Anteil eines Backups gestar-tet wird. XbaresS/xbaresP antworten mit ACK=<container_counter>. Danachwird ein Nbs_restore-Prozess gestartet.

Nbs_serv sendet die Restore-ID's [0-9a-z], also max. 36 Zeichen,► zu Beginn des möglichen ersten Online-Anteil eines Backups► beim Ende des Offline-Anteils des für die ID zuständigen Nbs_restore-

Prozesses► beim restlichen Online-Anteil

Nbs_restore sendet► zu Beginn seine Restore-ID► end vor Prozess-Ende. XbaresS antwortet mit ACK=<container_counter>. Danach sendet Nbs_restore die RCO- Quittung an Nbs_serv.

Durch die verschiedenen ID's kann xbaresS den einlaufenden socketspezifischen Datenstrom den entsprechenden zu restaurierenden Files genau zuordnen. Es ist durchaus möglich, dass nacheinander die gleiche Restore-ID für unterschiedliche Nbs_restore-Prozesse verwendet wird. Die EXTERN-Anweisung kann mehrfach auftreten. Unabhängig davon wird das abschließende <newline> stets von Nbs_serv gesendet.

encryptkey {1|2|3|0} Gibt an, der wievielte im aktuellen FRE ampfangene Kryptschlüssel zu der gerade bearbeiteten Datei passt. 0 bedeutet, dass der aktuelle Container nicht verschlüsselt ist. Kann mehrfach auftreten. Diese Angabe gilt bis zur nächsten encryptkey-Angabe.

SYSTEM system_type Gibt bis zur nächsten SYSTEM-Angabe an, von welchem Ursprungssystem die zu restaurierende Datei stammt. Kann mehrfach auftreten.

FILE file_name Name der Datei. deren Information anschließend kommt.; angehängte Kennungen wie ";W" (Warnung) und ";E" (Error) sind möglich.

Seite 20 Backes/Bürkle 21.11.1996

Page 21: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

ID file_id 5 Bytes binär

INF datei_information Kann mehrfach auftreten

ACC <4 binäre Nullbytes> Abschluss der Containerfolge

EXTERN end Bei Kommunikation mit Nbs_restore, s.o.

<newline> Abschluss mit Block der Länge 1

XbaresS/xbaresP antworten folgendermaßen:

<newline> Abschluss mit Block der Länge 1

Seite 21 Backes/Bürkle 21.11.1996

Page 22: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.8 FIN: Information über einen speziellen Backup

Keyword Wert Bedeutung

continuation {yes|no}

directory directory_name

dirpassword directory_password

showmode {oldest|mostrecent|all|date}

archivpath archiv_path Aufsetzpunkt im Archiv, am dem informiert werden soll; optional

date backup_time 2x5 Bytes, in der interen Kompaktform, nur bei showmode=date

dironly {yes|no} Angabe, ob nur Directory-, aber keine Fileinformation gelistet werden soll. Die Angabe ist optional, Voreinstellung ist "no".

dep tree_depth Relativ ab entry_node,1 ≤ tree_depth ≤ 100; 999 heißt: ohne Limit

select node_amount Optionale Angabe, wieviele Nodes aufzulisten sind

compress yes Optionale Angabe, ob die Dateinamen komprimiert sind

Nbs_serv schickt als Antwort eine Folge, bestehend aus Namen und Versionsdaten

FILE <file_name> oder

LINK <link_name> oder

DIRE <dir_name> oder

DFLI <dir_name|file_name|link_name>

Mischtyp, d.h. unter gleichem Namen gibt es Sicherungen unterschiedlichen Typs

date <intervall_begin><separator><intervall_end>

Als Separator wird standardmäßig "," ausgegeben. Falls es sich um eine Backup-Version handelt, die in dem zugehörigen Directorynode nicht mehr vorhanden ist, wird als Separator "?" ausgegeben.

Seite 22 Backes/Bürkle 21.11.1996

Page 23: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Ist compress=yes gesetzt, werden die Namen mit einem 4 Byte langen numerischen Feld eingeleitet, welches angibt, wieviele Zeichen am Namnesanfang mit dem des Vorgängers überinstimmen. Danach folgt nur noch der unterschiedliche Rest.

Seite 23 Backes/Bürkle 21.11.1996

Page 24: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.9 FSA: Einen Dateibackup erzeugen

Keyword Wert Bedeutung

1. Phase: xbaresS/xbaresP Nbs_serv➔

infomode {binary|text}

continuation {yes|no}

directory directory_name

dirpassword directory_password

TIMEOFDAY time_string In der internen Form

SYSTEM system_type

keystate {old|new} Nur relevant, wenn auch ein Key gesendet wird

encryptkey encryptkey_encrypted Verschlüsselter Ley, für alle gesendeten Container

wait {yes|no}

2. Phase: Nbs_serv xbaresS/xbaresP➔

ACK container_counter_0 8 binäre Bytes, nur die letzten 4 Bytes sind relevant. Sobals xbaresS/xbaresP einen Contai-ner senden wollen, dessen laufende Nummer größer ist als die zeitlich letzte per ACK be-stätigte Containernummer+container_counter_0, müssen xbaresS/xbaresP zunächst auf den nächsten ACK warten und dürfen erst dann senden. Im anderen Falle dürfen xbaresS und xbaresP unmittelbar senden.

contsize container_size Quittung vom Server, als Abschluss der 2. Phase

3. Phase: xbaresS/xbaresP Nbs_serv und Nbs_serv xbaresS/xbaresP➔ ➔

TFI file_name Mehrfach! Form: <touch_date><cccc><Name Datei/link>. <cccc> ist eine vierstellige Dezimalzahl, die angibt, in wievielen Bytes der Name mit dem des Vorgängers übereinstimmt.

TDI dir_name Mehrfach! Form: <touch_date><cccc><Name Directory><12 Zeichen langer Hashcode>. <cccc> ist eine vierstellige Dezimalzahl, die angibt, in wievielen Bytes der Name mit dem des Vorgängers übereinstimmt.

TOUCHFILE file_name Nbs_serv-Antwork bei akzeptiertem Backup. file_name enthält den kompletten Datei/Directore/Link-Namen.

TFI <cccc>rest Vierstelliger Zähler, der angibt, in wieviel Zeichen dieser Dateiname mit dem Vorgänger übereinstimmt, +differierenden Rest (durchgängig!)

Seite 24 Backes/Bürkle 21.11.1996

Page 25: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

TOUCHSYNCH <mindestens 1 Blank> Mehrfach, wird nach einer gewissen Anzahl TFI/TDI zur Synchronistation gesendet.^

TOUCHEND <" ">

3a. Phase: Nbs_serv xbaresS/xbaresP➔

TOUCHEND start_counter Startwert für den lfd. Zähler im ID-Feld (s.u.)

3b. Phase: xbaresS/xbaresP Nbs_serv➔

FILELINKDIRE

name Mehrfach! Name einer Datei, eines Links oder Directorys

CONTAINER container_number

ID file_id % Bytes, Clienttime im Kompaktform, um lfd. Zähler modifiziert: dies ist der eindeutige Identifier für Datei, Link oder Directory während des Transfers. ID=0 heißt, dass die Datei zum Transfer angemeldet, aber clientseitig nicht nicht durchführbar war, z.B. da die Datei nicht zum Lesen eröffnet werden konnte.

INF container Mehrfach, Containerinhalte

3c. Phase: Nbs_serv xbaresS/xbaresP➔

ACK container_counter Mehrfach, 4 oder 8 Bytes binär – die ersten 4 Bytes enthalten die Nummer des Containers, den Nbs_serv zuletzt empfangen hat. Ist die ACK-Quittung 8 Bytes lang, dann enthalten die 4 hinteren Bytes eine Neueinstellung von container_counter_0. Durch dieses Verfahren ist eine Anpassung des Datenflusses an die momentane Last möglich, abhängig von der Zahl laufender Saves und deren Containergröße.

Layout des ID-Feldes

Byte 4 Byte 3 Byte 2 Byte 1 Byte 0

Jahr-70, 6 Bit Monat, 4 Bit Tag, 4 Bit Stunde, 6 Bit Minute, 6 Bit Laufender Zähler, 14 bit

Seite 25 Backes/Bürkle 21.11.1996

Page 26: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.10 DSH: Eigenschaften eines Directorys protokollieren

Keyword Wert Bedeutung

continuation {yes|no}

directory directory_name

admpassword admin_password oder

poolpassword pool_password oder

dirpassword directory_password

showmode {full|summary|detail}

Seite 26 Backes/Bürkle 21.11.1996

Page 27: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.11 DSH: Inhalt eines Pools protokollieren

Keyword Wert Bedeutung

continuation {yes|no}

pool pool_name

admpassword admin_password Optional, alternativ zum Poolpasswort

poolpassword pool_password Optional, alternativ zum Administratorpasswort

showmode {directories|volumes|detail}

Seite 27 Backes/Bürkle 21.11.1996

Page 28: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.12 NSH: Hauptlisten von NBS anzeigen

continuation {yes|no}

admpassword admin_password

Seite 28 Backes/Bürkle 21.11.1996

Page 29: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.13 TPE: Die Eigeschaften eines Gerätetyps festlegen oder ändern

continuation {yes|no}

admpassword admin_password

devclass device_class Geräteklasse des Mediums, z.B. DAT, bis zu 4 Zeichen. Die spezielle Geräteklasse AFS be-deutet, dass es sich um eine Datei auf einem ggfls. zu montierenden Filesystem hadelt, die mit Standard-I/O zu bearbeiten ist und nicht mit Tape-I/O. Der komplette Dateiname ergibt sich aus dem Parameter devname (s.u.), daran angehängt ein Punkt sowie der Name des Volumes (siehe auch PMG, Pool administrieren).

devname device_name Präfix für die Auswahl der Gerätedateien, z.B. /dev/*dat* oder /dev/rmts. Die möglichen Geräte ergeben sich aber nur bei Wildcardangaben. Die Länge von device_name ist auf 65 Zeichen limitiert.

mediumname medium_type Typ des Mediums, z.B. MBK3480, maximal 8 Zeichen

devindex medium_index Textstring aus Ziffern, 0 bis zu maximal 31 Zeichen

gcontainer guaranteed_container_number

devnumber device_number Anzahl verfügbarer Laufwerke

compress {yes|no}

comprate compress_rate Nur relevant bei compress=yes: 1 ≤ compress_rate ≤ 10

maxcontainer max_container_number Nur relevant bei compress=yes

contsize max_possible_container_size Minimalwert = 256

blocksize device_block_size Ist diese Angabe von 0 verschieden, besitzt das Gerät eines feste Blockung, und die Containergröße ist davon ein vielfaches

roboter {*no|<roboter_type>} Optionale Angabe, ob die Volumes einer Bandgeräteklasse über einen Roboter gemountet werden, was bedeutet, dass nicht über Nbs_mount gemountet wird, sondern über ein plattform- und roboterspezifisches API. Die Länge von roboter_type ist auf 4 Zeichen limitiert. Keine Angabe bzw. *no heißt: Mountdialog über Nbs_mount.

Seite 29 Backes/Bürkle 21.11.1996

Page 30: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.14 NOP: Leerelement

<Längenfeld>NOP<newline>

Das NOP-Leerelement wird nicht zwischen xbares* und Nbs_serv, sondern zwischen xbares* und Nbs_mux. Es dient der Überprüfung des TCP/IP-Verbindung zwischen diesen beiden Komponenten auf Funktionsfähigkeit und darf nicht mit dem internen Schlüsselwort XbaresNInop verwechselt werden.

Seite 30 Backes/Bürkle 21.11.1996

Page 31: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.15 SHU: Herunterfahren des NBS-Servers

continuation {yes|no}

admpassword admin_password

cmode {soft|hard} Nbs_server fordert Nbs_fork über SIGUSR1 auf, sich ebenfalls zu beenden.

Seite 31 Backes/Bürkle 21.11.1996

Page 32: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.16 MDM: Dump Backup-Medium

continuation {yes|no}

admpassword admin_password Optional, alternativ zum Poolpasswort

pool pool_name Pool, dem die Medium-VSN zugeordnet ist

poolpassword pool_password optional

volin medium_vsn Ein defekt gesetztes Band kann wieder OK gesetzt werden mit

verify=yesabs=0skipeofs=0

wenn der Returncode bei MDM = 0 ist und die Containeranzahl bei MDM mindestens gleich dert Anzahl belegter Container ist und für den Pool keine Save-Aufträge mit größerer Containernummer vorliegen.

dumpvol1 {no|yes}

verify {no|yes} Bei "yes" ist zu überprüfen, ob bei jedem Container der CRC korrekt ist und die Directorys zum Pool gehören und die Containeranzahl auf dem Medium korrekt ist.

abs block_number Falls von 0 verschieden, stoppen, wenn die ersten block_number Blöcke gedumpt sind.

maxerr error_number Anzahl logischer Bandfehler, nach denen abgebrochen wird, Default=100

skipeofs skip_eof Skippe die ersten skip_eof (außer VOL1) EOF's

XBPORT port-number Port, auf dem xbaresS die Meldungen von Nbs_dumptape empfängt.

INADDR internet_address IP-Adresse des xbares-Clients

Nbs_serv antwortet:

EXTERN yes

Danach schaltet xbaresS auf den Port port_number um, und Nbs_dumptape/Nbs_serv antworten wie folgt:

ERROR error_text Fehlermeldungen von Nbs_dumptape/Nbs_serv, optional, ggfls. mehrfach

Seite 32 Backes/Bürkle 21.11.1996

Page 33: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

TXT free_text Dump-Standardausgaben, ggfls. mehrfach

EXTERN no

Seite 33 Backes/Bürkle 21.11.1996

Page 34: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.17 MCP: Kopiere Backup-Medium

continuation {yes|no}

admpassword admin_password Optional, alternativ zum Poolpasswort

pool pool_name Pool, dem die Medium-VSN zugeordnet ist

poolpassword pool_password optional

volout medium_vsn

XBPORT port-number Port, auf dem xbaresS die Meldungen von Nbs_copytape empfängt

INADDR internet_address IP-Adresse des xbaresS-Clients

Nbs_serv antwortet

EXTERN yes

Danach schaltet xbaresS um auf den Port port_number, und Nbs_copytape/Nbs_serv antworten wie folgt:

ERROR error_text Fehlermeldungen von Nbs_copytape/Nbs_serv, optional oder mehrfach

TXT free_text Standardausgaben beim Copy-Vorgang, ggfls. mehrfach

EXTERN no

Seite 34 Backes/Bürkle 21.11.1996

Page 35: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.18 MCM: Vergleiche Backup-Medien

continuation {yes|no}

admpassword admin_password Optional, alternativ zum Poolpasswort

pool pool_name Pool, dem die Medium-VSN zugeordnet ist

poolpassword pool_password optional

voloin first_vsn

volout second_vsn

errorstop {yes|no} Bei "yes" Abbruch bei negativem Vergleich

copylogging dump_bytes Bei einem negativen Vergleich die Umgebung von dump_bytes dumpen

abs block_number Dump stoppen nach den ersten dump_bytes Container

XBPORT port-number Port, auf dem xbaresS die Meldungen von Nbs_comptape empfängt

INADDR internet_address IP-Adresse des xbaresS-Clients

Nbs_serv antwortet

EXTERN yes

Danach schaltet xbaresS um auf den Port port_number, und Nbs_comptape/Nbs_serv antworten wie folgt:

ERROR error_text Fehlermeldungen von Nbs_copytape/Nbs_serv, optional oder mehrfach

TXT free_text Standardausgaben beim Copy-Vorgang, ggfls. mehrfach

EXTERN no

Seite 35 Backes/Bürkle 21.11.1996

Page 36: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.19 BCO: Meldung con Nbs_save über kopierte Bufferfiles beim Savevorgang

Nbs_save sendet an Nbs_serv über Nbs_mux

chid chid Eigene PID, dient der Nbs_serv-internen Identifizierung von Nbs_save

RETCODE return_code Dezimal-String. 0: Kein Fehler, eine von 0 verschiedene Zahl enthält den letzten Stand der errno-Variablen. Fehlerschlüssel ≥ 1000 sind eigene Fehlerschlüssel (weiter hinten aufgelistet)

ERROR error_message Fehlertext im Falle errno ≠ 0. Falls der Kopierauftrag für einen Bufferfile auf ein bestimmtes Medium mehrfach mit Fehler beendet wurde, wird dieser Auftrag aus den internen Nbs_serv-Listen gelöscht.

CONTAINER container_number Anzahl geschriebener Container

Achtung: bei einem neuen Keyword hinter CONTAINER= muss auch Nbs_mux angepasst werden.

Nbs_serv antwortet wie folgt:

BUFFERFILE buffer_file Name der zu sichernden Pufferdatei (die letzten 5 Zeichen dieses Namens identifizieren die Datei eindeutig, siehe auch ID), oder 5 Blanks. Wenn buffer_file von Blanks verschieden ist, werden auch die folgenden Parameter gesendet:

VSN tape_volume_serial Volume-Serial-Number des Datenträgers, auf den geschrieben wird, wird geprüft

DEVICEFILE special_file Präfix des Namens der Gerätedatei, z.B. /dev/rmts...

SEOF skip_container Anzahl der hinter VOL1 zu skippenden Container auf dem Zieldatenträger. Achtung: Auch bei Nichtbandwechsel wird immer ab VOL1 gezählt. Nbs_save berücksichtigt automatisch, ob Skips von der aktuellen Position aus erforderlich sind.

CONTSIZE container_size

CONTAINER container_number Anzahl aus der Datei zu kopierende Container, dezimal

DISKPOS disk_position Anzahl zu skippender Container in der Bufferdatei, dezimal, rel. zum Dateianfang

blocksize device_block_size Falls ungl. 0, besitzt das Gerät eine feste Blockung und die Containergröße ist ein vielfaches davon.

Seite 36 Backes/Bürkle 21.11.1996

Page 37: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

VOLTYPE device_class Geräteklasse des Datenträgers (Hinweise zur Behandlung!), z.B. DAT, 1..4 Zeichen

EOFDIFF container_diff Max. Containeranzahl zwischen 2 EOFs auf dem Zielband

BAS basic_container Erste Containernummer auf dem Zielband

roboter roboter_type|*no Angabe, ob der Volume der Geräteklasse über einen Roboter gemountet wird. In diesem Falle wird nicht mit Nbs_mount gemountet, sondern über ein plattform- und reboterspezifisches API. roboter_type ist maximal 4 Zeichen lang.

<Endeblock>

Abschlussbehandlung

Wenn Nbs_serv keinen weiteren Auftrag mehr für Nbs_save hat, sendet er lediglich

BUFFERFILE=<5 Blanks>

mit dem abschließenden Ende-Block. Nach dem letzten Bandapspann sendet Nbs_save ein BCO mit RETCODE=0 und CONTAINER=0 an Nbs_serv (Anmerkung: Nbs_serv hat bereits ein Multiplexelement gelöscht). Damit kann Nbs_serv den letzten Bufferfile freigeben und dies an Nbs_save mitteilen durch eine Sequenz, due nur aus dem Endeblock besteht.

Seite 37 Backes/Bürkle 21.11.1996

Page 38: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.20 RCO: Nbs_restore hat einen Restorevorgang abgeschlossen

Nbs_restore sendet an Nbs_serv über Nbs_mux

chid chid Eigene PID, dient der Nbs_serv-internen Identifizierung von Nbs_restore

RETCODE return_code Dezimal-String. 0: Kein Fehler, eine von 0 verschiedene Zahl enthält den letzten Stand der errno-Variablen. Fehlerschlüssel ≥ 1000 sind eigene Fehlerschlüssel (weiter hinten aufgelistet)

ERROR error_message Fehlertext im Falle errno ≠ 0.

DISKPOS byte_number Nummer des nächsten zu lesenden Bytes rel. zum Dateianfang (ab 0) der Anweisungsdatei, falls dort ein EXTERN=no gefunden wurde. byte_number verweist auf den Anfang der Zeichenkette "EXTERN...". Wenn die Datei bis EOF abgearbeitet ist, wird "DISKPOS=0" geliefert. byte_number ist ein Dezimalstring.

CONTAINER container_number Anzahl Container, die in diesem Restorelauf insgesamt an den Client gesendet wurden.

<Ende-Block>

Nach Absenden von RCO beendet sich Nbs_restore.

Achtung: bei einem neuen Keyword hinter CONTAINER= muss auch Nbs_mux angepasst werden.

Seite 38 Backes/Bürkle 21.11.1996

Page 39: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.21 MDO: Meldung von Nbs_dumptape: Dumpvorgang abgeschlossen

Nbs_dumptape sendet an Nbs_serv über Nbs_mux

chid chid Eigene PID, dient der Nbs_serv-internen Identifizierung von Nbs_dumptape

RETCODE return_code Dezimal-String. 0: Kein Fehler, eine von 0 verschiedene Zahl enthält den letzten Stand der errno-Variablen. Fehlerschlüssel ≥ 1000 sind eigene Fehlerschlüssel (weiter hinten aufgelistet)

ERROR error_message Fehlertext im Falle errno ≠ 0.

CONTAINER container_number Anzahl Container, die gelesen wurden.

<Ende-Block>

Nach Absenden von RCO beendet sich Nbs_dumptape. Eventuell wird ein defektes Band nach Erhalt von MDO wider auf OK gesetzt. Die Bedingungen dazu sind in der MDM-Beschreibung detailliert erläutert.

Achtung: bei einem neuen Keyword hinter CONTAINER= muss auch Nbs_mux angepasst werden.

Seite 39 Backes/Bürkle 21.11.1996

Page 40: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.22 MCO: Meldung von Nbs_copytape: Kopiervorgang abgeschlossen

Nbs_copytape sendet an Nbs_serv über Nbs_mux

chid chid Eigene PID, dient der Nbs_serv-internen Identifizierung von Nbs_copyptape

RETCODE return_code Dezimal-String. 0: Kein Fehler, eine von 0 verschiedene Zahl enthält den letzten Stand der errno-Variablen. Fehlerschlüssel ≥ 1000 sind eigene Fehlerschlüssel (weiter hinten aufgelistet)

ERROR error_message Fehlertext im Falle errno ≠ 0.

VSN error_vsn_list Optional. Bei Returncode=1099 die Liste der fehlerhaften VSNs, mit Blank getrennt.

<Ende-Block>

Nach Absenden von MCO beendet sich Nbs_copytape.

Seite 40 Backes/Bürkle 21.11.1996

Page 41: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.23 MPO: Meldung von Nbs_comptape: Medium-Vergleichsvorgang abgeschlossen

Nbs_comptape sendet an Nbs_serv über Nbs_mux

chid chid Eigene PID, dient der Nbs_serv-internen Identifizierung von Nbs_compptape

RETCODE return_code Dezimal-String. 0: Kein Fehler, eine von 0 verschiedene Zahl enthält den letzten Stand der errno-Variablen. Fehlerschlüssel ≥ 1000 sind eigene Fehlerschlüssel (weiter hinten aufgelistet)

ERROR error_message Fehlertext im Falle errno ≠ 0.

<Ende-Block>

Nach Absenden von MPO beendet sich Nbs_comptape.

Seite 41 Backes/Bürkle 21.11.1996

Page 42: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

3.24 CCO: Meldung von Nbs_compress: Kompressteilschritt abgeschlossen

Nbs_compress sendet an Nbs_serv über Nbs_mux

chid chid Eigene PID, dient der Nbs_serv-internen Identifizierung von Nbs_copyptape

RETCODE return_code Dezimal-String. 0: Kein Fehler, eine von 0 verschiedene Zahl enthält den letzten Stand der errno-Variablen. Fehlerschlüssel ≥ 1000 sind eigene Fehlerschlüssel (weiter hinten aufgelistet)

ERROR error_message Fehlertext im Falle errno ≠ 0.

SYNCH {yes|no} BUB-Beschreibungsdatei wurde oder wurde nicht upgedatet

EXIT {no|yes} Kompressionsvorgang ist unterbrochen bzw. beendet. Bei EXIT=yes wird auch SYNCH=yes gesetzt.

abs container_number 0 oder Anzahl auf Zieldatei/Bufferfile geschriebene Container

Achtung: Wenn hinter "CONTAINER=" ein weiteres neues Keywort hinzukommt, muss auch Nbs_mux angepasst werden!

Nbs_serv antwortet wie folgt:

BUFFERFILE buffer_file Name der zu beschreibenden Ausgabedatei

CONTAINER new_container Der erste in buffer_file neu zu schreibende Container hat die Nummer new_container. new_container wird auch im Container selbst vermerkt, archivrelativ!

BAS target_bas_cont Der esrte Container von buffer_file hat die archivrelative Containernummer target_bas_cont.

SYNCH {yes|no} Angabe, ob die BUB-Beschreibungsdatei upzudaten ist.

abs target_max_size Größe der Zieldatei in Containereinheiten.

VSN vsn_of_tape Neue VSN, nur bei vorhergehenden Bandfehlern geändert.

<Ende-Block>

Ist der Antwortteil vor dem Endeblock nicht leer, geht Nbs_compress in den nächsten Zyklus und antwortet nach I/O-Abschluss wieder mit der immer mit CCO eingeleiteten Fortsetzungssequenz. Dies wiederholt sich so lange bis Nbs_serv nur mit einem Endeblock quittiert.

Seite 42 Backes/Bürkle 21.11.1996

Page 43: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4 Bedeutung der NBS-Fehlerschlüssel4.1 Bedeutung der BCO-Fehlerschlüssel

Code Bedeutung Reaktion von Nbs_serv

1001 Fehler beim Öffnen des Band-Device-Files Nbs_serv beendet sich

1002 Fehler beim Öffnen der Buffer-Datei Fehlermeldung (RC = -1)

1006 Fehler beim Rückspulen des Bandes Fehlermeldung (RC = -1)

1010 Fehler beim Öffnen des eigenen FIFO-Files Nbs_serv beendet sich

1011 Fehler beim Öffnen des NBS-FIFO-Files Nbs_serv beendet sich

1012 Mountantwort von Nbs_mount nicht lesbar Nbs_serv beendet sich

1022 Fehler beim EOF-skippen Fehlermeldung (RC = -1)

1080 Kann Band-Device nach 10 Versuchen nicht öffnen Fehlermeldung (RC = -1)

1095 Keine aufsteigende Containernummer in Bufferdatei Nbs_serv beendet sich mit detaillierter Fehlermeldung

1096 Fehler beim Lesen aus der Bufferdatei Nbs_serv beendet sich mit detaillierter Fehlermeldung

1097 Fehler beim Skippen von Containsern auf dem Band Fehlermeldung (RC = -1)

1098 Bandaufspannauftrag vom Operateur abgelehnt Fehlermeldung (RC = -1)

1099 Fehler beim Schreiben auf Band Fehlermeldung (RC = -1)

Seite 43 Backes/Bürkle 21.11.1996

Page 44: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4.2 Bedeutung der Restore-Fehlerschlüssel (RCO)

Code Bedeutung Reaktion von Nbs_serv

1001 Fehler beim Öffnen des Band-Device-Files

1004 Fehler beim Öffnen der Control-Datei

1006 Fehler beim Rückspulen des Bandes

1007 Unzulässiges Kommand in Control-Datei

1010 Fehler beim Öffnen des eigenen FIFO-Files

1011 Fehler beim Öffnen des NBS-FIFO-Files

1012 Mountantwort von Nbs_mount nicht lesbar

1020 Fehler beim Skippen hinter VOL1

1022 Fehler beim EOF-skippen

1030 Fehler beim Skippen von Containern

1031 Fehler beim Empfang von ACK

1032 Empfangener ACK inkorrekt

1033 Für keine der zu restaurienden Dateien wurden in dem angegebene Containerintervall zutreffende Bereiche gefunden wegen fehlendem Directory-Treffer oder fehlendem File-ID-Treffer

1080 Band-Device auch nach 10 Versuchen immer noch busy Fehlermeldung (RC = -1)

1097 Senden an xbaresS-Client nicht möglich

1098 Operateur lehnt Band-Aufspannauftrag ab

1099 Fehler beim Lesen von Band: I/O-Error oder Blocklängenfehler oder falscher CRC des Containers, oder nach I(O-Fehler ist keine weitere Band-Kopie mehr verfügbar.

Seite 44 Backes/Bürkle 21.11.1996

Page 45: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4.3 Bedeutung der Dump-Fehlerschlüssel (MDO)

Code Bedeutung Reaktion von Nbs_serv

1006 Fehler beim Rückspulen des Bandes

1010 Fehler beim Öffnen des eigenen FIFO-Files

1011 Fehler beim Öffnen des NBS-FIFO-Files

1012 Mountantwort von Nbs_mount nicht lesbar

1030 Allgemeiner I/O-Error

1080 Band-Device auch nach 10 Versuchen immer noch busy Fehlermeldung (RC = -1)

1097 Senden an xbaresS-Client nicht möglich

1098 Operateur lehnt Band-Aufspannauftrag ab

Seite 45 Backes/Bürkle 21.11.1996

Page 46: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4.4 Bedeutung der Copy-Fehlerschlüssel (MCO)

Code Bedeutung Reaktion von Nbs_serv

1006 Fehler beim Rückspulen des Bandes

1010 Fehler beim Öffnen des eigenen FIFO-Files

1011 Fehler beim Öffnen des NBS-FIFO-Files

1012 Mountantwort von Nbs_mount nicht lesbar

1020 Fehler beim VSN-Vergleich

1022 Fehler beim Skippen von EOFs

1030 Allgemeiner I/O-Error

1080 Band-Device auch nach 10 Versuchen immer noch busy Fehlermeldung (RC = -1)

1097 Fehler beim Skippen von Containern

1098 Operateur lehnt Band-Aufspannauftrag ab

1099 Ersatzbandbeschaffung abgebrochen, Liste erschöpft

Seite 46 Backes/Bürkle 21.11.1996

Page 47: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4.5 Bedeutung der Compare-Fehlerschlüssel (MPO)

Code Bedeutung Reaktion von Nbs_serv

1006 Fehler beim Rückspulen des Bandes

1010 Fehler beim Öffnen des eigenen FIFO-Files

1011 Fehler beim Öffnen des NBS-FIFO-Files

1012 Mountantwort von Nbs_mount nicht lesbar

1020 Fehler beim Informationsvergleich

1030 Allgemeiner I/O-Error

1080 Band-Device auch nach 10 Versuchen immer noch busy Fehlermeldung (RC = -1)

1098 Operateur lehnt Band-Aufspannauftrag ab

Seite 47 Backes/Bürkle 21.11.1996

Page 48: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

4.6 Bedeutung der Compress-Fehlerschlüssel (CCO)

Code Bedeutung Reaktion von Nbs_serv

1001 Fehler beim Öffnen des Band-Devices

1002 Fehler beim Öfnnen der Ziel-Bufferdatei

1003 CRC-Fehler auf dem Quellband

1004 Fehler beim Öffnen der Conreol-Datei (BUB-File)

1006 Fehler beim Rückspulen des Bandes

1010 Fehler beim Öffnen des eigenen FIFO-Files

1011 Fehler beim Öffnen des NBS-FIFO-Files

1012 Mountantwort von Nbs_mount nicht lesbar

1013 Logischer Bandfehler: BUBs noch nicht abgearbeitet, aber aktueller Bandcontainer nicht zuzuordnen

1020 Fehler beim Skippen hinter VOL1

1022 Fehler beim EOF-Skippen

1080 Band-Device auch nach 10 Versuchen immer noch busy Fehlermeldung (RC = -1)

1098 Operateur lehnt Band-Aufspannauftrag ab

1099 Fehler beim Lesen von Bandblöcken

Seite 48 Backes/Bürkle 21.11.1996

Page 49: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

5 Kommunikationselemente xbabresR ⇔ Nbs_ud5.1 FRE: Restaurieren einer Datei (xbaresR)

Keyword Wert Bedeutung

files= file_name Name der zu restaurierenden Datei. Wird von xbaresR abgeändert, wenn die Datei zu einem remote gemounteten Filesystem gehört (der führende Pfadname wird durch den Server-maschine-relativen Pfad ausgetauscht.

USER= user_name Eigener Uuser-Name; wird zwangsweise zur Protokollierung an Nbs_ud übertragen.

GROUP= group_name Eigener Gruppen-Name; wird zwangsweise zur Protokollierung an Nbs_ud übertragen.

Seite 49 Backes/Bürkle 21.11.1996

Page 50: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

6 Server- und Dämon-SchnittstellenDieses Kapitel beschreibt die Versorgung und Kommando-Schnittstellen der NBS-Server und Agent-Prozesse, die nicht direkt von der Client-Schnittstelle aufgerufen werden. Nbs_mux wird über ein Skript gestartet. Nbs_serv wird von Nbs_mux gestartet. In der Initiali-sierungsphase startet Nbs_serv dann den Prozess Nbs_fork, welcher wiederum bei externen Geräten für Save-, Restore-... -Vorgänge sepa-rate Prozesse erzeugt, die für die Device-E/A zuständig sind. Die Versorgung der Prozesse erfolgt über zum Teil über die STDIN, die argv-Parameterliste, sowie über Pipes bei Prozessen, die Dauerkommunikation betreiben wie z.B. Nbs_serv mit nbs fork.

Der User-Daemon Nbs_ud, der zur Bedienung der vereinfachten Restore-Schnittstelle xbaresR eingesetzt wird, wird ebenfalls separat ge-startet, und zwar auf jedem Rechner, auf dem ein Pool-Administrator die Save-Vorgänge startet.

Seite 50 Backes/Bürkle 21.11.1996

Page 51: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

6.1 ARGV-Parameterliste für Nbs_mux

Nummer Bedeutung

1 Programmname von Nbs_serv

2 32 Testbits (31..0):Bit 0: Es sollen die Testoutput-Files erzeugt werdenBit 2: Nbs_serv schreibt Meldungen zusätzlich nach STDERRBit 3: Die Nbs_mux-Nbs_serv-Kommunikation erfolgt über Shared Memory

3 Kompletter Programmname von Nbs_save

4 Kompletter Programmname von Nbs_restore

5 FIFO-Filename (z.B. /usr/tmp/FIFO.Nbs_mount.<pid>)

6 Kompletter Programmname von Nbs_mount

7 Kompletter Programmname von Nbs_fork

8 Kompletter Programmname von Nbs_dumptape

9 Kompletter Programmname von Nbs_copytape

10 Kompletter Programmname von Nbs_comptape

11 Kompletter Programmname von Nbs_compress

Seite 51 Backes/Bürkle 21.11.1996

Page 52: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7 ARGV-Parameterliste für Nbs_serv

Nummer Bedeutung

1 Portnummer für Nbs_mux

2 Vollständiger Programmname von Nbs_save

3 Vollständiger Programmname von Nbs_restore

4 FIFO-Filename für die Kommunikation mit Nbs_mount (z.B. /usr/tmp/FIFO.Nbs_mount.<pid>)

5 Prozess-ID von Nbs_mount

6 Vollständiger Programmname von Nbs_fork

7 Shared-Memory-ID der Shared-Memory-Verwaltungsliste

8 Vollständiger Programmname von Nbs_dumptape

9 Vollständiger Programmname von Nbs_copytape

10 Vollständiger Programmname von Nbs_comptape

11 Vollständiger Programmname von Nbs_compress

Seite 52 Backes/Bürkle 21.11.1996

Page 53: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1 ARGV-Parameterliste für Nbs_fork

Nummer Bedeutung

1 Portnummer für Nbs_mux

2 Vollständiger Programmname von Nbs_save

3 Vollständiger Programmname von Nbs_restore

4 FIFO-Filename für die Kommunikation mit Nbs_mount (z.B. /usr/tmp/FIFO.Nbs_mount.<pid>)

5 Vollständiger Programmname von Nbs_dumptape

6 Vollständiger Programmname von Nbs_comptape

7 Vollständiger Programmname von Nbs_copytape

8 Vollständiger Programmname von Nbs_compress

9 Versionsnummer von Nbs_serv (Integer-String)

Sobald Nbs_fork läuft, liest das Programm seine (von Nbs_serv erhaltenen) Daten von STDIN mit Stream-l/O und schreibt seine Rückmel-dungen nach STDOUT (für Nbs_serv). Prinzipiell gilt das Format: <cmd> = <parameter>, wobei cmd genau 3 Zeichen lang ist, wäh-rend <parameter> variabel lang ist. Jede solche Zeile ist mit <newline> abgeschlossen. Ein führendes Längenfeld entfällt, da dies wegen der verwendeten Stream-I/O nicht erforderlich ist. Eingeleitet wird eine zusammengehörige Anweisungsfolge mit CMD=<command>, abgeschlossen wird sie mit CME=<genau ein beliebiges Zeichen>. Falls sich Nbs_serv beendet (z.B. bei einem SHUTDOWN), sendet Nbs_serv mit kiII(2) das Signal SIGUSRI an Nbs_fork, was wiederum heißt, dass Nbs_fork dann alle Unterprozesse Nbs_save,... abbricht. Steuerdaten, die von Nbs_fork nicht interpretierbar sind, werden ignoriert. Nbs_fork schickt über STDOUT an Nbs_serv Rückmeldungen:

Seite 53 Backes/Bürkle 21.11.1996

Page 54: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

ID= id ID des Lauf, 5 Zeichen; "?????", falls noch keine verfügbar ist

CHID= child_id

RETCODE= return_code 0 Kein Fehler

-1 Eingabe nicht in der Form <cmd>=...

Bei diesen Fehlern beendet sich Nbs_serv.

-2 Eingabe nicht in der Form CMD=...

-3 Kommando nach CMD= unbekannt

-4 Unbekanntes Kommando nach CMD=...

-5 Es fehlen Parameter nach CMD=...

-6 ID kürzer als 5 Zeichen

-7 Während CMD=... Parameter in <cmd>=<parameter> zu lang

-8 Nbs_fork kann Nbs_... nicht starten

-9 Überlauf der Prozessliste (mehr als 256-Nbs_...-Prozesse)

ERROR= error_message Fehlertext für den Fall, dass RETCODE von Null verschieden ist

Seite 54 Backes/Bürkle 21.11.1996

Page 55: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1.1 STDIN-Versorgung von Nbs_fork für eine Save-Lauf

1. Variante: Mitteilung, dass sich ein Nbs_save-Lauf beendet hat

1. CMD= FSA Meldung, dass ein Save-Lauf zu Ende ist

2. END= child_id Child-Prozess-ID von Nbs_save

3. CME= end_character

2. Variante: Mitteilung, dass ein Nbs_save-Lauf zu starten ist

1. CMD= FSA Meldung, dass ein Save-Lauf zu starten ist

2. BFL= buffer_file_name Name der Bufferdatei

3. VSN= vsn VSN des Zieldatenträgers

4. DFL= device_file_prefix Präfix des Devicefilenamens (z.B. /dev/rmts/), sie auch TPE, devname

5. SE#= skip_container Zahl der hinter VOL1 zu skippender Container auf dem Ziel. Kann 0 sein, wenn ein einem Folgezyklus der glieche Datenträger weiter beschrieben wird.

6. CT#= container_number Anzahl zu kopierender Container, Dezimalstring

7. CX#= max_container_size Maximale Containergröße, Dezimalstring

8. SC#= skip_container Anzahl zu skippender Container in der Bufferdatei, Dezimalstring

9. BS#= block_size Blockgröße des Ausgabegeräts bei fester Blockung (0=keine Blockung), Dezimalstring

10. DVT#= device_type Typ des Zieldatenträgers (Streamer, DAT,...). Format momentan nicht festgelegt. Siehe auch TPE, devclass!

11. CE#= container_diff Max. Containerzahl zwischen 2 EOFs auf dem Zielband, Dezimalstring

12. BAS= basic_container Erste Containernummer auf dem Zielband

13. ROB= {yes|no} Angabe, ob über einen Roboter gemountet werden soll

14. CME= end_character

Seite 55 Backes/Bürkle 21.11.1996

Page 56: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1.2 STDIN-Versorgung von Nbs_fork für einen Restore-Lauf

1. CMD= FRE Meldung, dass ein Restore-Lauf zu starten ist

2. RID= restore_id Von Nbs_serv vergebene eindeutige Id für den Restore-Lauf (5 Zeichen)

3. CP#= client_port XbaresS-Port, an den Nbs_restore über TCP/IP die zu restaurierenden Container sendet

4. INA= internet_address IP-Adresse des xbaresS-Clients

5. DIR= directory_name Name des Archivdirectorys (siehe auch directory)

6. ACC= ack_counter ACK-Counter, der angibt, nach wievielen gesendeten Blöcken Nbs_restore auf eine entsprechende XbaresS-Bestätigung warten muss (siehe auch ACC).

7. CT#= container_number Anzahl Container, die in diesem Restorelauf bereits zum Client gesendet wurden.

8. CFL= control_file Name einer Datei, welche eine Folge von Anweisungen zum Restaurieren der einzelnen Clientdateien enthält (vgl. auch FRE, Restaurieren von Dateien). Bei Datein, die sich nicht im Archiv befinden, sendet Nbs_serv direkt eine Fehlermeldung an xbaresS.Die Datei ist folgendermaßen aufgebaut:

BAS= Basic container number for actual volume

VSN= VSN des Quelldatenträgers

VSC= VSN von Kopiedatenträger, kann mehrfach vorkommen

DFL= Präfix des Gerätefile-Namens (z.B. /dev/rmts/), siehe auch TPE, devname

ROB= Roboter-Typ; Angabe, ob über einen Roboter gemountet wird

CE#= Maximale Containerzahl zwischen 2 EOFs auf dem Quellband

BS#= Blockgröße des Eingabegeräts oder 0

FB#= Erste relevante Blocknummer auf dem Quelldatenträger, beginnt bei 0, ohn VOL1 und EOFs

LB#= Letzte relevante Blocknummer auf dem Quelldatenträger, beginnt bei 0, ohn VOL1 und EOFs

CS#= NBS-Containerlänge

IDE= Optional, aber immer vor "FILE=" und nach Wechsel intern ⇔ extern. Backup-ID der Clientdatei, wie ID. Wird

Seite 56 Backes/Bürkle 21.11.1996

Page 57: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

nur zusammen mit dem danach empfangenen "FILE=" an den Client gesendet.

FILE= Laufender Clientdateiname. Diese Angabe ist optional und kommt nicht vor bei einem Wechsel von EXTERN=no zu EXTERN=yes innerhalb einer Datei, d.h. also wenn die Datei bereits vorher entsprechend angekündigt wurde. Ferner kommt sie nicht vor bei Volumewechsel innerhalb einer Clientdatei.

ENC= Wie encryptkey, optional

SYS= wie SYSTEM, optional

RDY= Aufsetzpunkt zum Senden der Container. Der erste Container bis zu einem solchen RDY-Abschnitt wird immer gesendet.

...

END= Als Abschluss

9. STD= byte_number Dezimalstring. Angabe des ersten zu lesenden Bytes (0,...) im Controlfile

10. CME= end_character

Eine Restaurieranweisung ist immer dann komplett, wenn RDY sowie ggfls. FILE und/oder IDE gelesen wurden. Nbs_restore beendet sich, wenn EXTERN=no in der Datei gelesen wurde, oder bei Dateiende.

Seite 57 Backes/Bürkle 21.11.1996

Page 58: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1.3 STDIN-Versorgung von Nbs_fork für einen Compress-Lauf

1. CMD= MCR Compress-Lauf starten

2. VSN= vsn VSN des Quelldatenträgers

3. DFL= device_file_prefiv Präfix des Devicefilenames (z.B. /dev/rmts/), siehe auch TPE, devname

4. BAS= basic_container Erste Containernummer auf dem Quelldatenträger, archivrelativ. Dabei ergibt sich die erste zu bearbeitende Containernummer aus der BUB-Liste

5. DIR= directory_number Anzahl aller Archivdirectorys

6. CX#= container_size Containergröße

7. BFL= target_file_name Name der Datei, in die der komprimierte Output zu schreiben ist.

8. CFL= bub_file Name der Datei, die die BUBs (Backup-Beschreibungen) enthält, oder *OLD. Die einzelnen (binären) Sätze sind Images von BUBENT-Strukturen. Folgende Felder sind relevant: number, fullc, lastc, dir1_ind,new_number, new_lastc, new_fullc. Vor den BUBENT-Strukturen steht die Liste der Directory-namen. Sie hat eine Länge von 8*directory_number Bytes. Anzahl der Strukturen = (<Dateilänge>-<Directoryliste>)/<Strukturlänge>.

9. BUB= {yes|no} Angabe, ob bub_file beim Senden von CCO upzudaten und abzuschließen ist.

10. CT#= new_container Archivrelative neu zu verwendende Containernummer.

11. TBA= target_bas_container Die Datei target_file_name hat als erste archivrelative Containernummer target_bas_container. Daraus ergibt sich als dateirelative Containernummer, ab der zu schreiben ist: CT#-TBA

12. TC# target_max_size Größe der Zieldatei in Containereinheiten. Bei Erreichen dieser Zahl sind ein CCO zu senden und eine neue Zieldatei anzufordern.

13. BS#= block_size Bei fester Geräteblockung Blockgröße des Eingabegeräts (0: keine erforderlich)

14. DVT= device_type Typ des Quelldatenträgers (Streamer, DAT,...). Noch nicht genau festgelegt.

15. CE#= container_diff Maximale Containerzahl zwischen 2 EOFs auf dem Quelldatenträger

16. ROB= roboter_type Robotertyp: Angabe, ob über einen Roboter gemountet wird.

17. CME= end_character

Seite 58 Backes/Bürkle 21.11.1996

Page 59: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1.4 STDIN-Versorgung von Nbs_fork für einen Dump-Lauf

1. CMD= MDM Dump-Lauf starten

2. RID= dump_id Vin Nbs-serv vergebene eindeutige ID für den Dump-Lauf (5 Zeichen)

3. CP= client_port xbaresS-Port, an den Nbs_dumptape über TCP/IP seine Meldungen schickt

4. INA= internet_address IP-Adresse des xbaresS-Clients

5. DFL= device_file_prefix Präfix des Devicefilenames (z.B. /dev/rmts/), siehe auch TPE, devname

6. DVT= device_type Typ des Datenträgers, z.B. DAT

7. VOL= volume_serial VSN des zu dumpenden Datenträgers

8. CS= container_size Containergröße

9. DV1= {yes|no} VOL1 zu dumpen ist

10. SB= stop_after_block Falls von 0 verschieden, nach Erreichen dieses Blocks abbrechen

11. SE= skip_eof Falls von 0 verschieden,, Anzahl zu skippender EOFs

12. EST= tape_errors Falls von 0 verschieden, Anzahl der Bandfehler, nach denen der Dump abzubrechen ist. 0 oder -1 heißt: kein Abbruch.

13. VER= {yes|no} Bei "yes" soll der Datenträger auf Konsistenz überprüft werden

14. DIR= directory_list Directorys, die sich lt. Poolbeschreibung auf dem Datenträger befinden müssen, per Blank getrennt

15. ROB= roboter_type Robotertyp: Angabe, ob über einen Roboter gemountet wird.

16. CME= end-character

Seite 59 Backes/Bürkle 21.11.1996

Page 60: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1.5 STDIN-Versorgung von Nbs_fork für einen Medium-Kopier-Lauf

1. CMD= MCP Kopier-Lauf starten

2. RID= copy_id Vin Nbs-serv vergebene eindeutige ID für den Copy-Lauf (5 Zeichen)

3. CP#= client_port xbaresS-Port, an den Nbs_copytape über TCP/IP seine Meldungen schickt

4. INA= internet_address IP-Adresse des xbaresS-Clients

5. DFI= device_file_prefix Präfix des Devicefilenames für das Eingabegerät (z.B. /dev/rmts/), siehe auch TPE, devname

6. DVO= device_file_prefix Präfix des Devicefilenames für das Ausgabegerät (z.B. /dev/rmts/), siehe auch TPE, devname

7. DVT= device_type Typ des Datenträgers, z.B. DAT

8. VOS= volume_serial VSN des Quelldatenträgers, optional dahinter die mit Komma voneinander getrennten VSNs der Kopiedatenträger

9. VOT= volume_serial VSN des Zieldatenträgers

10. CS#= container_size Containergröße

11. ROB= skip_eof Robotertyp: Angabe, ob über einen Roboter gemountet wird.

12. CME= end-character

Seite 60 Backes/Bürkle 21.11.1996

Page 61: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.1.6 STDIN-Versorgung von Nbs_fork für einen Medium-Compare-Lauf

1. CMD= MCM Vergleichs-Lauf starten

2. RID= copy_id Vin Nbs-serv vergebene eindeutige ID für den Vergleichs-Lauf (5 Zeichen)

3. CP#= client_port xbaresS-Port, an den Nbs_comparetape über TCP/IP seine Meldungen schickt

4. INA= internet_address IP-Adresse des xbaresS-Clients

5. DFI= device_file_prefix Präfix des Devicefilenames für das erste Gerät (z.B. /dev/rmts/), siehe auch TPE, devname

6. DVO= device_file_prefix Präfix des Devicefilenames für das zweite Gerät (z.B. /dev/rmts/), siehe auch TPE, devname

7. DVT= device_type Typ des Datenträgers, z.B. DAT

8. VOS= volume_serial VSN des ersten Datenträgers

9. VOT= volume_serial VSN des zweiten Datenträgers

10. EST= {yes|no} Angabe, ob bei Vergleichsfehlern abzubrechen ist

11. COL= dump_bytes Zahl zu dumpender Bytes in der Umgebung einer fehlerhaften Stelle

12. CS# container_size Containergröße

13. SB# stop_after_block Vergleichslauf nach stop_after_block Blöcken abbrechen

14. ROB= skip_eof Robotertyp: Angabe, ob über einen Roboter gemountet wird.

15. CME= end-character

Seite 61 Backes/Bürkle 21.11.1996

Page 62: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.2 ARGV-Parameterliste für Nbs_save

Nummer Bedeutung

0 <Nbs_save-Programmname>$$<Nbs_serv-Versionsnummer>

1 Name der Bufferdatei, davon bilden die 5 letzten Zeichen eine eindeutige ID

2 VSN des Zieldatenträgers

3 Präfix des Gerätedateinamens (z.B. /dev/rmts/...), siehe auch TPE, devname

4 Zahl hinter VOL1 zu skippender Conainer auf dem Zieldatenträger. Kann 0 sein, wenn der gleiche Datenträger in einem Folgezyklus beschrieben wird.

5 Zahl zu kopierender Container

6 Portnummer von Nbs_mux

7 Maximale Containergröße

8 Zahl zu skippender Container in der Bufferdatei

9 Blockgröße des Zielgerätes oder 0

10 Typ Zieldatenträger (DAT,...). Noch nicht genau festgelegt

11 FIFO-File für die Kommunikation mit Nbs_mount (/usr/tmp/FIFO.Nbs_mount.<pid>)

12 Maximale Containerzahl zwischen 2 EOFs auf dem Zieldatenträger

13 Erste Containernummer auf dem Zieldatenträger

14 Robotertyp; Gibt an ob der Zieldatenträger per Roboter gemountet wird.

Seite 62 Backes/Bürkle 21.11.1996

Page 63: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.3 ARGV-Parameterliste für Nbs_restore

Nummer Bedeutung

0 <Nbs_restore-Programmname>$$<Nbs_serv-Versionsnummer>

1 Von Nbs_serve vergebene eindeute ID für den Restorelauf (5 Zeichen 0-9a-z). Das vierte Zeichen dient als unterscheidende Stream-ID bei mehreren parallelen Nbs_restore-Prozessen.

2 xbaresS/xbaresP-Portnummer

3 xbaresS/xbaresP-IP-Adresse

4 Name des Archiv-Directorys

5 ACK-Counter, der angibt, nach wievielen gesendeten Datenblöcken Nbs_restore auf eine entsprechende Bestätigung von xbaresS/xbaresP warten muss

6 Vollständiger Pfadname der Datei, in der eine Folge von Anweisungen steht zur Restaurierung der einzelnen Client-Dateien. Angaben glieche Namens überschreiben ihren Vorgänger, d.h. nur die letzte Angabe gilt. Zum Aufbau der Datei siehe unter "Versorgung von Nbs_fork für einen Restore-Lauf".

7 Portnummer von Nbs_mux

8 FIFO-File für die Kommunikation mit Nbs_mount

9 Erstes zu lesendes Byte im Controlfile (dezimal, ab 0)

10 Zahl der in diesem Restorelauf bereits zum Client gesendeten Container

Seite 63 Backes/Bürkle 21.11.1996

Page 64: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.4 Versorgung für Nbs_mount

Nbs_mount liest beim Start zur korrekten Versorgung mehrere UmgebungsvariabIe ein:

1 MOUNT_DISPLAY Indikator des Gerätes, mit dem die Mount-Meldungen ausgetauscht werden. Dies kann entweder der Name einer Gerätedatei sein ("/dev/...", z.B. /dev/console), oder der Name eines X-Window-Displays. In dem letzteren Fall können alle gebräuchlichen Motif-TooIkit-Optionen wie z.B. Farben und/oder Geometrie-Resourcen angegeben werden, und dieser erste Parameter wird als DispIay-Adresse für Nbs_mount genommen. Ist MOUNT_DISPLAY nicht gesetzt, wird DISPLAY, falls vorhanden, verwendet. Ist auch diese nicht vorhanden, Fehlerabbruch!

2 MOUNT_SHELLPlD Obligat! Die eindeutige Nummer SHID (die Prozeß-ID der startenden Shell) zur Bildung von Dateinamen

3 MOUNT_FIFO Obligat! Name des FIFO-Files, über den Nbs_mount mit den Clients kommuniziert. Beispiel:

/tmp/FlF0.Nbs_mount.S{MOUNT_SHELLPlD}

Über diesen FIFO-FiIe übermittel Nbs_mount die Antworten zu den Mount/Unmount-Aufträgen an die Clients.

4 MOUNT_LOGG Optional! Name der Datei, in der Nbs_mount über die einzelnen CIient-Anforderungen und ihre Beantwortung Buch führen soll. [Das Programm ~buerkIe/v58/journaI liest solche Files von STDIN und gibt sie im Klartext aus. Beispiel:

/tmp/LOGG.Nbs_mount${MOUNT_SHELLPlD}

5 MOUNT_SCONSOLE Optional! Der Name eines Ersatzgerätes, welches statt des X- Displays genommen wird, wenn die Verbindung zum X-Server nicht aufgebaut werden konnte (wie unter 1). Voreinstellung ist /dev/console

6 NBSDIRECTORY Läuft Nbs_mount über ein X-Terminal, so muss diese Variable den Namen desjenigen Directories enthalten, welches die entsprechenden HeIp-Files von Typ xpm, xbm, html und gif beinhaltet (z.B. ~backes/nbs/nbs.directory)

Seite 64 Backes/Bürkle 21.11.1996

Page 65: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.4.1 Anweisungen an nbs mount (intern über nbs save.... und extern über nbs reply)

1. mount <id> <vsn> <tapedev> <mode> <devcIass> #Aufspannwunsch

emount <id> <vsn> <tapedev> <mode> <devclass> # Aufspannwunsch nach Fehlern

id Von Nbs_mount generierte ID des Nbs_save/Nbs_restore,...-Auftrages

vsn VSN des Bandes, das aufgespannt werden soll. Bei bestimmten Aktionen (Restore z.B.) ist auch eine Liste von VSNs möglich (Trennung durch ";")

tapedev Devicedatei des Bandgerätes, auf dem gemountet werden soll

mode Aufspannmodus (Read/Write)

devclass Geräteklasse des Laufwerks (DAT,...)

2. umount <id> <vsn> <tapedev> #Abspannwunsch

id Von Nbs_mount generierte ID des Nbs_save/Nbs_restore,...-Auftrages

vsn VSN des Bandes, das abgespannt werden soll

3. Operateur-Anforderungen/Antworten über Nbs_reply

* <id> umount { unload|ignore } # Abspann-Bestätigung

* <id> mount <vsn> <tapedev> # Aufspann-Bestätigung

* <id> cancel # Aufspann-Ablehnung

* premount <vsn> <tapedev> # Premount-Eintrag veranlassen

* dpremount <vsn> # Premount-Eintrag löschen

Seite 65 Backes/Bürkle 21.11.1996

Page 66: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

* q # Liste alle offenen Fragen auf

* qp # Liste alle Premount-Einträge auf

Nbs_repIy ist ein Shell-Script, mit dem die externen Aufträge an Nbs_mount über den Nbs_mount-eigenen FIFO-File übergeben werden. <id> ist eine externe Nummer, die bei den Auf- bzw. Abspannvorschlägen ausgegeben und intern auf die PlD des save/restore...-Prozesses abgebildet wird.

Das Script Nbs_reply wird wie folgt aufgerufen. Dabei ist <mpid> entweder SHID (s.o.) oder der Name des globalen Nbs_mount-Fifo-Files sowie <id> die von Nbs_mount vergebene externe Nummer:

Nbs_repl ? # Usage

Nbs_repIy <mpid> {q|qp} # Liste offene Fragen/Premounts auf

Nbs_repIy <mpid> <id> umount {unload|keep} # Unmount bestätigen

Nbs_repIy <mpid> <id> mount <vsn> <device> # Mount bestätigen

Nbs_reply <mpid> <id> cancel # Mount ablehnen

Nbs_reply <mpid> premount <vsn> <device> # Premount-Eintrag veranlassen

Nbs_reply <mpid> dpremount <vsn> # Premount-Eintrag löschen

Seite 66 Backes/Bürkle 21.11.1996

Page 67: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.5 ARGV-Parameterliste für Nbs_dumptape

Nbs_dumptape ist in zwei Modi lauffähig: einmal standarmäßig über xbares gestartet (GUI-Modus) mit Nbs_serv-Kontakt, deweiteren auch im Offlinemodus (ohne Nbs_serv zu kontaktieren). In diesem Fall sind nur die Parameter 7-16 relevant. Die Reihenfolge der Parameter ist bedeutungslos.

Online-Teil

0 <Nbs_dumptape-Programmname>$$<Nbs_serv-Versionsnummer>

1 -l Muss angegeben werden: Nbs_dumptape läuft in der Online-Version

2 -5 id Von Nbs_serv vergebene eindeutige ID für den Dumplauf (5 Zeichen)

3 -6 portx xbaresS-Portnummer

4 -7 inadr xbaresS-IP-Adresse

5 -8 portm Portnummer von Nbs_mux

6 -9 fifo Name der FIFO-Datei für die Kommunikation mit Nbs_mount (/tmp/FIFO.Nbs_mount.<pid>)

Übrige Parameter

7 -d device Präfix Devicename (/dev/dat/...)

8 -t device_type Typ des Datenträgers, z.B. DAT

9 -v vsn VSN des zu dumpenden Datenträgers

10 -c conts Containergröße auf dem Datenträger

11 [-s skip] Skippe skip EOFs hinter dem VOL1 vor Dump

12 [-b stop] Abbruch, nachdem block Blöcke gedumpt wurden

13 [-e ecount] Abbruch, nachdem ecount Bandfehler aufgetreten waren. 0 oder -1: kein Abbruch. Default: 100

14 [-u] Dumpe VOL1

Seite 67 Backes/Bürkle 21.11.1996

Page 68: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

15 [-m dirlist] Check Konsistenz des Mediums; die mit Komma untereinander getrennte Liste der Directorys ist anzugeben

16 [-r roboter_type] Robotertyp. Angabe, ob das Gerät über einen Roboter zu mounten ist.

Seite 68 Backes/Bürkle 21.11.1996

Page 69: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.6 ARGV-Parameterliste für Nbs_copytape

Nbs_copytape ist in zwei Modi lauffähig: einmal standarmäßig über xbares gestartet (GUI-Modus) mit Nbs_serv-Kontakt, deweiteren auch im Offlinemodus (ohne Nbs_serv zu kontaktieren). In diesem Fall sind nur die Parameter 7-14 relevant. Die Reihenfolge der Parameter ist bedeutungslos.

Online-Teil

0 <Nbs_copytape-Programmname>$$<Nbs_serv-Versionsnummer>

1 -l Muss angegeben werden: Nbs_copytape läuft in der Online-Version

2 -5 id Von Nbs_serv vergebene eindeutige ID für den Copylauf (5 Zeichen)

3 -6 portx xbaresS-Portnummer

4 -7 inadr xbaresS-IP-Adresse

5 -8 portm Portnummer von Nbs_mux

6 -9 fifo Name der FIFO-Datei für die Kommunikation mit Nbs_mount (/tmp/FIFO.Nbs_mount.<pid>)

Übrige Parameter

7 -i idevice Präfix Devicename (/dev/dat/...) für das Inputdevice

8 -o odevice Präfix Devicename (/dev/dat/...) für das Outputdevice

9 -t device_type Typ des Datenträgers, z.B. DAT

10 -1 ivsn VSN des zu Quelldatenträgers

11 -2 ovsn VSN des zu Zieldatenträgers

12 -c conts Containergröße auf dem Datenträger

13 [-g] Logging beim Kopieren einschalten

14 [-r roboter_type] Robotertyp. Angabe, ob das Gerät über einen Roboter zu mounten ist.

Seite 69 Backes/Bürkle 21.11.1996

Page 70: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.7 ARGV-Parameterliste für Nbs_comptape

Nbs_comptape ist in zwei Modi lauffähig: einmal standarmäßig über xbares gestartet (GUI-Modus) mit Nbs_serv-Kontakt, deweiteren auch im Offlinemodus (ohne Nbs_serv zu kontaktieren). In diesem Fall sind nur die Parameter 7-16 relevant. Die Reihenfolge der Parameter ist bedeutungslos.

Online-Teil

0 <Nbs_comptape-Programmname>$$<Nbs_serv-Versionsnummer>

1 -l Muss angegeben werden: Nbs_comptape läuft in der Online-Version

2 -5 id Von Nbs_serv vergebene eindeutige ID für den Vergleichslauf (5 Zeichen)

3 -6 portx xbaresS-Portnummer

4 -7 inadr xbaresS-IP-Adresse

5 -8 portm Portnummer von Nbs_mux

6 -9 fifo Name der FIFO-Datei für die Kommunikation mit Nbs_mount (/tmp/FIFO.Nbs_mount.<pid>)

Übrige Parameter

7 -i device_1 Präfix Devicename (/dev/dat/...) für das erste Input-Device

8 -o device_2 Präfix Devicename (/dev/dat/...) für das zweite Input-Device

9 -t device_type Typ des ersten Datenträgers, z.B. DAT

10 -1 vsn_1 VSN des ersten Datenträgers

11 -2 vsn_2 VSN des zweiten Datenträgers

12 -c conts Containergröße auf dem Datenträger

13 [-d width] Beim Unterschied von Containern die Containerumgebung in der Breite width dumpen

Seite 70 Backes/Bürkle 21.11.1996

Page 71: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

14 [-b stop] Breche den Vergleichsvorgang nach block Blöcken ab

15 [-s] Kein Abbruch beim Auftretzen nach Unterschieden

16 [-r roboter_type] Robotertyp. Angabe, ob das Gerät über einen Roboter zu mounten ist.

Seite 71 Backes/Bürkle 21.11.1996

Page 72: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.8 ARGV-Parameterliste für Nbs_compress

0 <Nbs_compress-Programmname>$$<Nbs_serv-Versionsnummer>

1 VSN des Quelldatenträgers

2 Präfix Devicename (z.B. /dev/rmts/...), siehe auch TPE, devname

3 Erste Containernummer auf dem Quelldatenträger, ab dem zu komprimieren ist, archivrelativ

4 Anzahl aller Archivdirectorys

5 Containergröße

6 Name der Datei, in die der komprimierte Output zu schreiben ist

7 Name der Datei, die die BUBs (Backupbeschreibungen) enthält, oder *OLD

8 {yes|no}, Angabe, ob die BUB-Dateiupzudaten und zu schließen ist

9 Erste neu zu verwendende Containernummer

10 Erste neue Containernummer,ab der in die Outputdatei geschrieben wird

11 Größe der Zieldatei in Containereinheiten

12 Blockgröße des Eingabegerätes bei fester Blockung, sonst 0

13 Nbs_mux-Portnummer

14 Quelldatenträger-Typ (DAT,...), Format noch festzulegen

15 FIFI-Dateiname für die Kommunkation mit Nbs_mount (/usr/tmp/FIFO.Nbs_mount.<pid>)

16 Maximale Containerzahl zwischen 2 EOFs auf dem Quelldatenträger

17 Robotertyp, falls die Volumes von einem Roboter gemountet werden

Seite 72 Backes/Bürkle 21.11.1996

Page 73: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Die Datei, die die BUBs enthält, hat folgendes Layout

1 Am Dateianfang stehen die zu bearbeitenden Directorynamen (8 Zeichen, mit NIL aufgefüllt). Die Directoryanzahl ergibt sich aus dem Parameter Nr. 4

2 Der Dateirest ist für die BUB-Beschreibungen reserviert. Ein BUB-Record ist folgendermaßen aufgebaut:

typedef struct /* BUB description, means: description of an extent (chunk) */{ /* ------------------------- Input part ------------------- */

Char id[5]; /* Not used ** ID without end character */char ichunk; /* Not used ** Index of chunk */char type; /* Not used ** F for file, D for directory, and link */short bubind; /* Not used ** Index of BUB in FIB */

int first_container; /* archive absolute number of first container of this extent */ * contained in the container itself, will be updated in target */

int full_container; /* describes the containers exclusively belonging to this extent * and whether the first/last do not or do completely belong to * this extent * +-----------------+---+---+ * | full containers | A | E | * +-----------------+---+---+ * A set or E set: the first resp. lst container does not belong * exclusively to this extent */

int last_container; /* archive absolute number of the last container of this extent */int entry_adress; /* Not used ** archive record relative address of this entry /int dirlist_ind; /* index of directory name in the received directory list

* starting with 0/* -------------------- Output part -------------------------*/

int n_first_container; /* new archive absolute number of the first container of this extent */int n_last_container; /* new archive absolute number of the last container of this extent /int n_full_container; /* for the output, describes the containers exclusively belonging

* to this extent, and whether the first/last do not or do completely * to this extent * +-----------------+---+---+ * | full containers | A | E | * +-----------------+---+---+ * A set or E set: the first resp. lst container does not belong * exclusively to this extent */

} BUBENT, *BUBENTP;

Seite 73 Backes/Bürkle 21.11.1996

Page 74: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.9 Versorgung für Nbs_ud

Nbs_:ud liest über Optionen directoryunabhängige Optionen ein. Die Liste der Directorys wird aus Sicherheitsgründen über STDein eingelesen, damit ein ps-Kommando, das auch Nbs_ud auflistet, keine Directorypasswörter anzeigt.

Da der Dämon Nbs_ud durch den xbares-Aufruf in der Lage sein muss, Dateien beliebiger User zu Restaurieren, muss er mit Rootrechten ausgestattet sein.

7.9.1 Optionen für Nbs_ud

1 -p own_port_number Voreinstellung ist 19999

2 -l logging_datei Eine Protokollierung der xbaresR-Anforderungen findet in der angegebenen Datei statt. Voreinstellung ist nbs.testoutput.udlogging im aktuellen Directory.

3

3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung ist /usr/rhrk/xbares.directory.

4 -x xbares_name Name des xbares-Programmes, u.U. mit Pfadangabe. Wegen des internen Starts von xbaresS durch Nbs_ud muss unabhängig davon bem Start von Nbs_ud der xbares- und xbaresS-Pfrad in den aktuellen Suchpfaden mitenthalten sein. Voreinstellung ist xbares.

5 -f Nbs_ud läuft im Vordergrund. Voreinstellung ist der Start als Dämon-Prozess.

Seite 74 Backes/Bürkle 21.11.1996

Page 75: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

7.9.2 STDIN-Versorgung für Nbs_ud

Nbs_ud liest von STDIN die Liste der NBS-Directorys, deren Passwort, Zielserver und Zielport ein dowie die Liste der Filesystemdirectorys, die in einem solchen NBS-Directory gesichert werden. Die einzelnen Angabe sind durch Blanks getrennt. Aufbau einer solchen Zeile:

NBS-Directoryname

NBS-Directorypasswort

Port-ID des zuständigen NBS-Servers

IP-Name des zuständigen NBS-Servers

Name eines Filesystemdirectories Mehrfach!

7.9.3 Beispiel für einen Nbs_ud-Start

Nbs_ud -p 19999 -1 Nbs_UD.LOGGING -d /usr/rh/xbadir <<EOF &dir dirp 020946 sc900.rhrk.uni-kl.de /usr/sc /usr/peopledir3 dirp 020947 gate-sc900.rhrk.uni-kl.de /usr/sc1 /usr/people1EOF

Seite 75 Backes/Bürkle 21.11.1996

Page 76: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

8 Auflistung der Schlüsselworte XbaresN...8.1 Xbares-Kommandos

Hierbei handelt es sich um die Kommandos, mit denen Aktionen im Batchmode bzw. aus dem xbares-Gedächtnis aufgerufen werden.

#define XbaresNsave save#define XbaresNrestore restore#define XbaresNrename rename#define XbaresNshow show#define XbaresNdelete delete#define XbaresNmanpool manpool#define XbaresNshmainlist shmainlist#define XbaresNshpool shpool#define XbaresNcrdir crdir#define XbaresNdeldir deldir#define XbaresNreorgdir reorgdir#define XbaresNshdir shdir#define XbaresNchangepwd changepwd#define XbaresNtypedit typedit#define XbaresNshutdown shutdown#define XbaresNrenamedir renamedir#define XbaresNrenamepool renamepool#define XbaresNmediacopy mediacopy#define XbaresNmediacompare mediacompare#define XbaresNdemdiadump mediadump#define XbaresNpwtable pwtable

Seite 76 Backes/Bürkle 21.11.1996

Page 77: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

8.2 Die Optionen

Die Optionen entsprechen den xbares-X-Resourcen. Es handelt sich um genau die Optionen, die in den jeweiligen Expertenkommandos bzw. in xbaresP anzugeben sind. Der C-String-Name ergibt sich durch weglassen von "XbaresN" und Einschluss in "...".

Die von Nbs_serv verwendeten internen Nummern sind jeweils vorangestellt.

Interne Nummer Name im CPP-Präpozessor

01 XbaresNdirpassword02 XbaresNadmpassword03 XbaresNdirectory04 XbaresNpool05 XbaresNmemory06 XbaresNmainframe07 XbaresNportnumber08 XbaresNdir09 XbaresNtimefont10 XbaresNfiles11 XbaresNdate12 XbaresNcopies13 XbaresNgenerations15 XbaresNvolumes16 XbaresNencryptkey17 XbaresNsavemode18 XbaresNremovemode19 XbaresNshowmode

Seite 77 Backes/Bürkle 21.11.1996

Page 78: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Interne Nummer Name im CPP-Präpozessor

20 XbaresNinformode21 XbaresNselect22 XbaresNtime23 XbaresNcontinuation24 XbaresNvolin25 XbaresNvolout26 XbaresNwait27 XbaresNdepth28 XbaresNrestoremode29 XbaresNrestoreselect30 XbaresNtree31 XbaresNaction32 XbaresNkeystate33 XbaresNoldfile34 XbaresNnewfile36 XbaresNcontsize37 XbaresNlanguage38 XbaresNnewdirpassword39 XbaresNnewadmpassword40 XbaresNdevindex41 XbaresNdevclass42 XbaresNdevname43 XbaresNgcontainer44 XbaresNmaxcontainer45 XbaresNcompress46 XbaresNcomprate47 XbaresNdevnumber48 XbaresNencryptkey249 XbaresNencryptkey3

Seite 78 Backes/Bürkle 21.11.1996

Page 79: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Interne Nummer Name im CPP-Präpozessor

70 XbaresNcmode71 XbaresNmediumname75 XbaresNdumpvol176 XbaresNabs77 XbaresNenforce78 XbaresNverify85 XbaresNmaxerr87 XbaresNroboter92 XbaresNblocksize93 XbaresNpoolpassword94 XbaresNclientpath95 XbaresNarchivpath100 XbaresNnewdirectory101 XbaresNnewpool

n/a XbaresNenforcen/a XbaresNerrordumpsizen/a XbaresNerrorstopn/a XbaresNcopyloggingn/a XbaresNrstdinn/a XbaresNexcluden/a XbaresNiexcluden/a XbaresNrexcluden/a XbaresNautopwdn/a XbaresNsecuren/a XbaresNlost

Seite 79 Backes/Bürkle 21.11.1996

Page 80: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

9 Auflistung der intern verwendeten Schlüsselwörter XbaresNI...

Hierbei handelt es sich um die Schlüsselwörter, die nur in der internen Kommunikation xbaresS/xbaresP ⇔ Nbs_mux/Nbs_serv verwendet werden Der C-String-Name ergibt sich durch weglassen von "XbaresNI" und Einschluss in "..." sowie Darstellung in Großbuchstaben.

Die internen Nummern sind jeweils vorangestellt.

Interne Nummer Name im CPP-Präpozessor

50 XbaresNItimeofday51 XbaresNIsystem52 XbaresNIlid53 XbaresNIacc54 XbaresNIlinf55 XbaresNItouchdate56 XbaresNItouchfile57 XbaresNIcontainer58 XbaresNIfile59 XbaresNIdire60 XbaresNItouchend61 XbaresNIllink62 XbaresNIack63 XbaresNItxt64 XbaresNItouchsynch65 XbaresNIchid66 XbaresNIxbport67 XbaresNIinaddr68 XbaresNIextern69 XbaresNItouchdire79 XbaresNIdiskpos80 XbaresNIvsn81 XbaresNItouchdatefile

Seite 80 Backes/Bürkle 21.11.1996

Page 81: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Interne Nummer Name im CPP-Präpozessor

82 XbaresNItouchdatedire83 XbaresNIsynch84 XbaresNIexit86 XbaresNIcv97 XbaresNIerror

n/a XbaresNIcontroldaten/a XbaresNItimen/a XbaresNIcurrentdirectoryn/a XbaresNIdoencryptn/a XbaresNIencryptkeyn/a XbaresNIhomedirectoryn/a XbaresNInopn/a XbaresNIonlycheckn/a XbaresNIsavemoden/a XbaresNIselectn/a XbaresNIupperdirectoryn/a XbaresNIsubtaskn/a XbaresNIretcoden/a XbaresNIbufferfilen/a XbaresNIdevicefilen/a XbaresNIcontainern/a XbaresNImuxportn/a XbaresNIconsolen/a XbaresNIeofdiffn/a XbaresNIbasn/a XbaresNItk1n/a XbaresNItk2n/a XbaresNItk3n/a XbaresNIdflin/a XbaresNIfifon/a XbaresNIusern/a XbaresNIgroup

Seite 81 Backes/Bürkle 21.11.1996

Page 82: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

10 Realisierungs-Einschränkungen im Protokoll xbares/xbaresP ⇔ NBS

DCR voltype wird verstanden, aber nicht ausgewertet

DRE Wird verstanden, aber leere Leistung. Es ist geplant, bei der Directoryreorganisation die Einträge mit TOUCHDATE=0000000000 (Orphans) zu entfernen

FDU Wird verstanden aber leere Leistung. Parameter werden nicht ausgewertet.

FSA infomode wird verstanden, aber noch nicht ausgewertet.

PMG create fertigextend fertigreduce fertigcompress wird verstanden, aber werden nur die Modi *OFFLINE und *SHOW ausgewertet.

MCP Noch nicht realisiert

MCM Noch nicht realisiert

Allgemein Der Parameter continue=... wird noch nicht ausgewertet. Geräte mit Datenkompression werden noch nicht bedient.

Seite 82 Backes/Bürkle 21.11.1996

Page 83: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

11 NBS-Konfiguration im Zusammenhang mit einem BandroboterDas Schaubild auf der folgenden Seite soll einen Überblick über den Datenfluss innerhalbeinet NBS-Client/Server-Konfiguration geben, die auch einen Bandroboter in das Konzept miteinbezieht. Die augeführten Betriebssysteme bzw. Server und/oder Clientplattformen sind als exemplarisch und nicht als restriktiv zu verstehen.

Seite 83 Backes/Bürkle 21.11.1996

Page 84: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Seite 84 Backes/Bürkle 21.11.1996

Client

Backup-Ser ver

Nbs_serv Nbs_mux

Nbs_fork

Nbs_save Nbs_mount

Roboter-Steuerung Backup-Ser ver

Nbs_servNbs_mux

Nbs_fork

Nbs_restoreNbs_mount

Roboter mit Bandarchiv

Cartridge D

rive

Cartridge D

rive

NBS-Buffer-

File

NBS-Buffer-

File

Page 85: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

12 Aufbau der Containerinhalte

Im folgenden sollen die Inhalte der Container beschrieben werden, d.h. aus Sicht von Nbs_serv die Daten innerhalb der INF-Blöcke bei den Kommandos FSA und FRE. Sie werden von xbaresS/xbaresP erzeugt bzw. ausgewertet. Falls bei FSA Datenverschlüsselung gefordert wird, sind die Daten komplett verschlüsselt einschließlich der unten beschriebenen Kopfinformation. Der Containerheader selbst wird nicht ver-schlüsselt.

12.1 Dateitypunabhängiger Teil der Containerinformation

Der 20 Bytes lange dateitypunabhängige Teil der Containerinformation wird stets vor der eigentlichen Datei-, Directory- oder Linkinformation abgelegt und wird nur von xbaresS erzeugt bzw. ausgewertet. Sie ist folgendermaßen aufgebaut:

Byte Inhalt

0 – 3 Bit 31 Gesetzt bei Save mit KomprimierungBit 30..Bit 18 FreiBit 17..Bit 0 Die rechten 18 Bits von st_mode aus dem status(1), d.h. Inode-Typ und Schutzattribute

4 – 7 Feld st_uid aus status(1), d.h. Owner-ID der Datei, nach links mit 0 verfüllt

8 – 11 Feld st_gid aus status(1), d.h. Group-ID der Datei, nach links mit 0 verfüllt

12 – 15 Feld st_mtime aus status(1), d.h. modification time der Datei, nach links mit 0 verfüllt

16 - 19 Feld st_atime aus status(1), d.h. access time der Datei, links mit 0 verfüllt

Diese Daten werden bei der Restauration beim Anlagen von Datei/Link/Directory ausgewertet.

Seite 85 Backes/Bürkle 21.11.1996

Page 86: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

12.2 Containerinformation für Dateien

Bei Dateien folgt unmittelbar auf den 20 Bytes langen Kopf der für xbaresP/xbaresS transparente Dateiinhalt.

12.3 Containerinformation für Links

Bei Links folgt unmittelbar auf den 20 Bytes langen Kopf der Dateiname, auf den der Link verweist.

12.4 Containerinformation für Directories

Bei Dateien folgt unmittelbar auf den 20 Bytes langen Kopf ein String, der die Namen der im Filesystem enthaltenen Dateien, Links und Filesystemdirectories enthält. Die einzelnen Namen, die keine Blanks enthaten dürfen, sind jeweils durch genau ein Blank getrennt. Es gibt keine Einträge für "." und "..", da sie beim Restaurieren eines Directories automatisch angelegt werden.

Seite 86 Backes/Bürkle 21.11.1996

Page 87: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13 Datenstrukturen des Servers Nbs_serv13.1 Die MAINLIST

Die MAINLIST enthält alle globalen Daten, die zu einem NBS-System gehören. Es handelt sich um eine sequentielle Datei mit dem Namen MAINLIST unter der Kennung des NBS-Verwalters. Sie wird beim Start von Nbs_serv in den Adressraum des Prozesses geladen.und ist i.A. recht kurz (< 1 MB), so dass sie einfach und ohne großen Overhead öfters zurückgeschrieben werden kann. Sie ist wegen ihrer Bedeutung als gespiegelte Datei doppelt zu halten. Das Doppel liegt unter dem Dateinamen MAINLIST.RES.

Ein Zurückschreiben (der gesamten Datei) erfolgt bei

• Beendigung von Nbs_serv• nach dem Einrichten ein neuen VOLIST• nach dem Einrichten eines neuen Directorys• nach Fehlern in Nbs_serv• ....

In der MAINLIST-Datei stehen direkt hintereinander mehrere Listen des NBS-Servers, die nachfolgend einzeln beschrieben sind. Es handelt sich um die

• MAINLIST im engeren Sinne• PARAMLIST• POOLLIST• DIRLIST• DEVLIST• SYSLIST• BUFFLIST• SAVLIST

Seite 87 Backes/Bürkle 21.11.1996

Page 88: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.1 Die eigentliche MAINLIST

Name 8 "MAINLIST"

Version 2 Festlegung der Version des MAINLIST-Formates

PARAM-LIST-ADR 2 Verweis auf die Liste der NBS-Parameter rel. MAINLIST-Anfang

DIR-LIST-ADR 2 Verweis auf die Anfangsadresse rel. zum MAINLIST-Anfang

POOL-LIST-ADR 4 Verweis auf die Liste aller Pools

TYP-LIST-ADR 4 Platz für Eintrag im Adressraum (Init durch Adminsitrator)

DEV-LIST-ADR 4 Platz für Eintrag im Adressraum (für schnelles Laden)

SYS-LIST-ADR 4 Platz für Eintrag im Adressraum (für schnelles Sichern)

Seite 88 Backes/Bürkle 21.11.1996

Page 89: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.2 PARAM-LIST

CONT-LNG 2 Länge eines Archivcontainers 32/64 in KB (nicht änderbar)

ANZ-MAX-BACKUP 2 Maximalzahl gleichzeitig aktiver Backup-Clients

CONN-TIME 2 Maximale Wartezeit auf nächste User-Aktion in Sekunden

ANZ-USERS 1 Aktuelle Zahl von aktiven NBS-Nutzern

MAX-USERS 1 Maximale Zahl von aktiven NBS-Nutzern. Evtl. getrennte Angaben für Info-Dienste (später)

TOT-BUFF-CONTS 4 Gesamtzahl Container für Buffer auf Platte

USED-BUFF-CONTS 4 Zahl benutzter Container für Buffer auf Platte

MAX-BUFF-CONTS 4 Maximalzahl Container für einen Buffer auf Platte

MAX-ANZ-BUFFERS 2 Maximalzahl Buffer-Dateien

Seite 89 Backes/Bürkle 21.11.1996

Page 90: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.3 DIR-LIST

Alphabetisch sortierte Liste der Directorys, je 120 Bytes

ANZ-DIR 1 Anzahl der Einträge

FILLER 3 leer

<directory-entry>1 20 Beschreibungsblock 1. Entry

... 20

<directory-entry>n 20 DIR-NAME 8 Names des Directorys

PASSW-KRYPT 8 Verschlüssletes Directory-Passwort

POOL-INDEX 2 Index des zugehörigen Pools in der POOL-LIST

DIR-SIZE 1 Anzahl Archivdirectorys mit Verweisinformation, entspricht Records in Directory-File Entry

DIR-STATE 1 0: inaktiv

Wenn die Liste von/auf Platte geladen wird, sollte nur der Zustand 000 in der Liste vorhanden sein.

Seite 90 Backes/Bürkle 21.11.1996

Page 91: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.4 BUFFER-LIST: Liste der vorhandenen Buffer-Dateien

ANZ-BUFFERS 4 Anzahl Buffer-Dateien

<buffer-element>1 8 Beschreibung einer Buffer-Datei

... 8

<buffer-element>n 8 BUFFER-ID 4 Identifikation eines Buffers, Namens-Postfix

DIR-ANZ 2 Anzahl zugreifender Directorys (Backup)

USAGE 1 B=Backup, R=Restore

BUFF-STATE 1 Bufferstatus0: Unbenutzt1: In Bearbeitung2: Auf Datenträger kopieren3: Kopie läuft

Seite 91 Backes/Bürkle 21.11.1996

Page 92: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.5 Pool-LIST

POOL-List: Alphabetisch geordnete Liste aller POOL-Namen, je 20 Bytes. Beim Eintragen neuer Pools sind die Indizes (siehe vorige Seite) inkrementieren!

ANZ-ELEM 1 Anzahl Listenelemente

FILLER 3 leer

<element>1 20 Beschreibungsblock 1. Element

... 20

<element>n 20 POOL-NAME 8 Name des entsprechenden Pools

DIR-ANZ 2 Anzahl Directorys zu diesem Pool

VOL-ANZ 2 Anzahl Datenträger in der VOLIST

ANZ-COPIES 2 Anzahl der Sicherheitskopien zu jedem Datenträger

FILL-PERCENT 2 Genutzte Container in % (geschätzt)

MAX-CONT-NR 4 Maximal vergebene Container-Nummer

CONT-STATE 1 1: Aktiv2: Zurückschreiben erforderlich3: Hat Container-BUFFER4: Hat Nebenprozess5: Gesperrt wegen laufender Datenträgerkompression

Seite 92 Backes/Bürkle 21.11.1996

Page 93: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.6 DEVLIST

Die DEVLIST wird in der MAINLIST gehalten und enthält genau 32 Einträge, von denen jeder je einen Typ von Archivlaufwerk beschreibt. Derzeit ist einem Element der TYPLIST genau ein Element der DEVLIST zugeordnet. DEVLIST darf nicht umdortiert werden, neue Einträge sind anzuhängen.

ANZ-ELEMENTS 1 Anzahl Listenelement

FILLER 3 leer

<element>1 10 Beschreibungsblock 1. Element

... 10

<element>n 10 NAME 8 Name des DEV-Typs, z.B. MBK3480

KOMPR 1 Kompression, Y/N

ANZ-DEV 1 Anzahl maximal verfügbarer Geräte

Seite 93 Backes/Bürkle 21.11.1996

Page 94: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.1.7 SYSLIST

Die SYSLIST wird in der MAINLIST gehalten und enthält genau 32 Einträge, von denen jeder jein Clientbetriebssystem beschreibt. SYSLIST darf nicht umsortiert werden, neue Einträge sind anzuhängen. In einer späteren Ausbaustufe ist noch der Type des Filesystem mitzuführen: AFS, UNITREE, DCE, BSD,... und Länger der ACLs.

ANZ-ELEMENTS 1 Anzahl Listenelement

FILLER 3 leer

<element>1 10 Beschreibungsblock 1. Element

... 14

<element>n 14 BS-KENN 9 Klartextkennung Betriebssystem

LOCAL 1 Client- und Servermaschine identisch, Y/N

FILLER 4 Noch frei

Seite 94 Backes/Bürkle 21.11.1996

Page 95: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.2 VOLIST

Eine VOLIST beschreibt die Datenträger, die zu einem Pool gehören, und ihren Zustand. Sie steht in einer Datei mit Namen POOL.<poolname> und wird im Bedarfsfalls komplett in den Speicher geladen. Für einen Pool wird immer nur an einer Stelle des Contai-neradressraumes geschrieben. Dies limitiert die Archivierungsgeschwindigkeit für einen bestimmten Pool, vereinfacht aber auf der anderen Seite die Verweisstrukturen erheblich. Durch die Zuordnung der Benutzer zu den Pools kann die Leistungslimitierung praktisch eliminiert werden.

Alle Directorys eines Pools schreiben gleichviele Sicherungskopien zu jedem Originaldatenträger. Daher wird bei Einrichtung/Änderung der Datenträgerliste stets darauf geachtet, dass die Zahl der Datenträger pro Typ durch die Zahl der Sicherungskopien+1 ohne Rest teilbar ist. Die VOLIST-Datei ethält einen Kopfteil und eine Liste von Elementen für die einzelnen Originalvolumes und als Drittes eine Liste der Directoryvolumes.

Die VOLIST muss auf der Platte upgedatet werden nach

• Eintrag neuer Volumes• vor Beendigung von Nbs_serv• nach dem Überspielen eines BUFFERs• nach Anlegen/Umwidmung einer Kopiedatenträgernach Freigabe einer Archivdate.

Seite 95 Backes/Bürkle 21.11.1996

Page 96: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

VOLIST-KOPF

POOL-NAME 8 Postfix des Dateinames

VERSION 2 Version des VOLIST-Formats

ANZ-FREI-VOL 2 Anzahl freier Volunes

ACTUAL-INDEX 2 Index des Datenträgers, auf dem weitergeschrieben wird

SUCH-INDEX 2 Index, ab dem nach freien Volumes gesucht werden soll.

KOMP-INDEX 2 Index, ab dem nach Volumes zum Komprinieren gesucht werden soll

AKT-BUFFER 4 Indentifier des aktuellen Buffers

NEXT-CONT 4 absolute Nummer des ersten freien Containers im Buffer

LAST-CONT 4 absolute Nummer des letzten freien Containers im Buffer

VOL-ENTRY-LNG 2 Länge eines Entrys im Bytes (z.Z. 71)

DIR-LIST-ADR 4 Verweis auf den Anfang der Liste aller zu dieser dieser VOLIST gehörenden Directorys relativ zum VOLIST-Anfang

VOLUMES-ADR 4 Verweis auf den Anfang der Volumebeschreibungen

VSN-Elemente

<element>1 32+10*n

...

<element>n 32+10*n VSN 9 Ausgewertete Bytes vom Typ abhängig

DEFEKT 1 1: OK1: defekt

VOL-TYP 2 Aus Index TYPLIST

VOL-STAT 2 0: Volume ist leer

Seite 96 Backes/Bürkle 21.11.1996

Page 97: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

2: Volume ist in Bearbeitung5: Volume ist abgeschlossen6: Aktuelle VSN zum Schreiben

Bei Directoryvolumes ist der Status jeweils um 10 erhöht.

COPIES 2 Eintrag relativ zur Duplikatliste

FIRST-CONT 4 Absolute Nummer des ersten relenavten Containers auf dem Datenträger

CONT-ANZ 4 VOL-STAT = 2: Anzahl geschriebener ContainerVOL-STAT = 3: Anzahl gültiger Container

CONT-EQUIV

4 Bei HW-Kompr. Äquivalent (später!)

PRAE 2 Index Vorgängerelement

POST 2 Index Nachfolgerelement

KOPIE-LIST n*10 <element>1 10

... 10

<element>n VSN 9 VSN des Duplikats, mit Blanks aufgefüllt

DEFEKT 1 0: OK1: Defekt

Die Anzahl gültiger Container wird nur bei VOL-STAT = 3 heruntergezählt, nicht bei VOL-STAT = 4.

Seite 97 Backes/Bürkle 21.11.1996

Page 98: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3 Archivdirectorys

Ein Archivdirectory nimmt alle Verwaltungsinformation auf, die zu einem NBS-Nutzer gehört. Hierzu zählen insbesondere die Namen der gesicherten Dateien und ihr Lagerort. Aber auch die Hashcodes der Kryptschlüssel und andere Informationen sind hier abgelegt. Da ein Archiv- Directory die gesamte Verweisinformation für einen Benutzer enthält, ist diese Information besonders wichtig. Sie wird deshalb als gespiegelte Datei geführt. Die zweite Datei hat den Postfix ".MIRROR" und muss zwingend auf einem anderen Plattenstrang gespeichert werden, besser auf einer anderen Plattenstrecke. Am besten wäre es, wenn die Spiegelung vom System unterstützt würde.

Das Archivdirectory eines Benutzers wird als File realisiert. Die Verarbeitung erfolgt mit sog. RECORDS (von 4 KByte Länge). Zur Bear- beitung werden die Records in den Arbeitsspeicher geladen. Die Information in einem Flecord ist immer dicht abgelegt, d.h. dass freier Speicher zusammenhängend am Recordende steht. Am Anfang der Directorydatei steht eine feste Zahl von Verweisrecords, dahinter die Archivrecords mit den Dateibeschreibungen.

13.3.1 Verweis-RecordsDer erste Record der Directorydatei ist der Verweisrecord. Er ist doppelt so groß wie ein normaler Record und hat abweichend von den normalen Directory-Records folgenden Aufbau:

DIR-NAME 8 Name des Directorys

VERSION 2 Version des Formats

POOL-NAME 8 Postfix des Dateinamens für VOLIST/Pool

PREF-VOL-TYPE 1 Bevorzugter Typ von Archivvolumes (Index in TYPLIST)

ANZ-KEYS 1 Anzahl benutzter Krypt-Keys (max. 3)

KEY1-HASH 4 Hash-Key für Krypt-Key zur Kontrolle

KEY2-HASH 4 Hash-Key für Krypt-Key zur Kontrolle

KEY3-HASH 4 Hash-Key für Krypt-Key zur Kontrolle

LAST-BACKUP 4 Datum, Uhrzeit des Beginns des letzten Backups einer Datei im internen Systemformat

Seite 98 Backes/Bürkle 21.11.1996

Page 99: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

USED-CONTS 4 Anzahl belegter Container

ALLOWED-CONTS 4 Anzahl erlaubter Container

TREE-INFO-ADR 4 Verweis auf den Beginn fer Dateibeschreibungen (Nummer des ersten Records)

ZUSTAND-BYTES bis 4096 Liste mit Zustandsbytes für jeden Record eines Diretorys: das bedeutet, dass ein Directory maximal 32 MB groß sein kann mit ca. 500.000 Dateikopien. Die Steuerung erfolgt über die Variable DIR-SIZE aus dem DIR-Eintrag in MAINLIST. Wenn die Liste von/auf Platte geladen wird, sollten nur die Zustände 000 und -1 in der Liste vorhanden sein. Die Zustandsbytes haben folgende Bedeutung:

000 Record ist frei

001 Record ist im Memory

002 Record wurde verändert und muss später zurückgeschrieben werden

003 Record ist zum Zurückschreiben angemeldet

004 Record wird gerade zurückgeschrieben

005 Record ist belegt, aber nicht geladen

006 Record ist zum Laden angemeldet

-1 Record ist belegt

Seite 99 Backes/Bürkle 21.11.1996

Page 100: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.2 Archivrecords

13.3.2.1 Recordkopf

REC-NR 2 Recordnummer

USED-SPACE 2 Anzahl genutzer Bytes im Record

LIST-VERWEIS1 4 1. Verweis auf Namensliste im Record

... 4 ...

LIST-VERWEIS8 4 8. Verweis auf Namensliste im Record, oder 0

PRE-RECORD 2 Verweis auf vorhergehenden Record, falls die direkt nach dem Recordkopf liegende Namensliste nicht im Record angefangen hat

POST-RECORD 2 Verweis auf den nachfolgenden Record, falls die vorhergehende Namensliste nicht im Record endet

13.3.2.2 Informationsteil der Archivrecords

Direkt im Anschluss an den Recordkopf stehen die Einträge für den Archivdirectorybaum. Mit dem Begriff Namensliste wird die Gesamtheit aller Einträge im Archivbaum bezeichnet, die an einem Punkt des Dateibaums angehängt sind (siehe Beispiel-Tree). Der gesamte Dateibaum wird rekursiv durch die Verweise auf diejenigen Namenslisten beschrieben, die zu einem Eintrag (Namen) in einer übergeordneten Namensliste gehören. Eine Namensliste hat folgenden Aufbau:

Seite 100 Backes/Bürkle 21.11.1996

Page 101: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Beschreibung eines Entries

ANZ-NAME-ENTR 2 Zahl der Einträger in dieser Liste = n

FILLER 2 leer

<entry>1 var. 1. Eintrag

...

<entry>n var. n. Eintrag ENTRY-LNG 1 Länge des variabel langen Eintrags, ohne den file-info-block

ENTRY-TYP 1 Typ des Eintrags

1: Directory2: File3: Softlink

ENTRY-POINTER 2 Verweisadresse rel. zum Anfang des Directoryrecords

TYP = 1: Verweis auf nächste Ebene (NAME-ENTRIES)Der Wert -1 bedeutet: Entry in späterem Record

TYP = 2: Verweis auf FILE-<INFOBLOCK> relativ zumEntryanfang

TYP = 3: Verweis auf LINK-<INFOBLOCK> relativ zumEntryanfang

ENTRY-NAME ≤ 32 Nme des Eintrags

<INFOBLOCK> variabel Beginnt auf nächstmöglicher Wortadresse, siehe folgende Tabelle!

Seite 101 Backes/Bürkle 21.11.1996

Page 102: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

INFOBLOCK

FILE-INFO-LNG 1 Länge des Beschreibungsblocks

BACKUP-ANZ 1 Anzahl der Sicherungsversionen dieser Datei (= n)

<backup-adr>1 2 Adresse der 1. Backupbeschreibung rel. zum Recordanfang, siehe nächste Tabelle

... 2 ...

<backup-adr>n 2 Adresse der n. Backupbeschreibung rel. zum Recordanfang, siehe nächste Tabelle

Backupbeschreibung

BACKUP-KENN 5 Directoryweit eindeutige Kennung des Dateibackups. Enthält den systeminternen Zeitstempel des Backupanfangs (4 Bytes) und einen Zähler, um Eindeutigkeit innerhalb der Sekundenauflösung sicherzustellen.

KEY-INDEX 1 Indec des Kryptschlüssels (0 = kein Schlüssel)

SYSTEM-KENN 1 Kennung für Clientbetriebssystem (Index in SYSLIST)

VOLUME-ANZAHL 1 Anzahl (=n) der Datenträger, auf den das Originalbackup gespeichert ist. Ein Eintrag belegt 4 Bytes.

<eintrag>1 4 Eintrag für den 1. Datenträger, auf dem Dateiteile liegen

... 4

<eintrag>n 4 Eintrag für den n. Datenträger, auf dem Dateiteile liegen. Die VSNs der Datenträger werden hier nicht gespeichert, da die Zuordnung der absoluten Containernummern eindeutig ist. Die Abbildung ist aus der VOLIST möglich.

Wenn Nbs_serv sich die für einen Punkt des Archivbaums relevanten Records hält und die Level-/Listennummern merkt, kann er von dort aus im Arcivbaum navigieren.

Ein LINK-INFOBLOCK ist entsprechend wie der FILE-INFO-BLOCK aufgebaut und wird auch entsprechend behandelt. Seine Information im Container ist auf 1KB begrenzt.

DELTA-FIRST-CONT 2 Relative Nummer des 1. Containers auf dem i.-ten Datenträger

FULL-CONTS 2 Anzahl voller Conatiner für die Datei auf dem j.-ten Volume

Seite 102 Backes/Bürkle 21.11.1996

Page 103: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.3 Beispiel-Tree

Record-Structure-List: TREE-INFO:

Level2 Byes

Adresse2 Bytes

Adr NAME Typ/Anz Verweis Level Liste-#

0100 A 1/3 0157 1 1

0157 B 1/3 0293 2 2

1 0100 0213 C 2 0030 2 2

2 0157 0271 D 1/4 -1 2 2

3 0293 0293 E 2 0038 3 3

0322 F 2 0030 3 3

0347 G 1/2 -1 3 3

...

3 0100 0100 H 2 0034 3 4

4 0416 0167 I 2 0030 3 4

4 0458 0181 J 1/2 0458 3 4

5 0529 0299 K 2 0034 3 4

0416 L 2 0038 4 5

...

Seite 103 Backes/Bürkle 21.11.1996

Page 104: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Seite 104 Backes/Bürkle 21.11.1996

A

B C D

E F G

L M

H I J K

N O

P

Level-Nummer

1

2

3

4

5

L1

L2

L3

L5

L4

L6

L77 Listen L1 bis L75 Levels 1 bis 5Weißer Buchstabe DateiEllipse ListeSchwarzer Buchstabe Directory

Page 105: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Erläuterungen zum Beispiel-Tree:

Die verwendeten Adressen sind nicht genau berechnet, sie sollen nur direkte Bezüge darstellen (Spalte Ref.) oder die Reihenfolge der Information im Record zeigen und auf dazwischenliegende Lücken (mit andere Informationen) hinweisen.

Der erste Eintrag in der Record-Structure-List verweist immer auf den Anfang der TREE-INFO. Die weiteren Einträge verweisen jeweils auf den Beginn der nächsten Liste. Diese Information wird insbesondere gebraucht, wenn innerhalb einer Liste rückwärts gesucht werden muss. Die Listennummern, Adressen und Levelangaben selbst werden nicht gespeichert, sie sind nur zur Verdeutlichung der Bezüge in der Abbildung sichtbar.

Die Angaben unter Type beziehen sich auf ENTRY-TYP, d.h. 1= Directory, 2= File, 3=Softlink. Sie legen fest, wie die Angabe unter Ref. zu interpretieren ist.

Die Record-Structure-List hat genau 8 Einträge. Nicht benutzte Einträge (die immer am Listenende liegen) haben als Werte von LEVEL und ADRESSE binär Null.

Alle Listen, die in der gleichen Ebene des Archivbaumes liegen, sind in dem Archivdirectory direkt hintereinander angeordnet.

Seite 105 Backes/Bürkle 21.11.1996

Page 106: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.4 Operationen auf dem Archivdirectory

Folgende Operationen können auf einem Archiv-Directory ausgeführt werden:

• Einrichten• Löschen• Backup von Benutzerdateien• Restore von Benutzerdateien• Informieren über Benutzerdateien• Löschen von Benutzerbackups• Umbenennen von Benutzerdateien• Kompression von n Datenträgern (einschl. ihrer Duplikate)• Sichern eines Archivdirectorys• Konsistenzprüfung für ein Directory (??)• Directory entladen• Ändern Directorypasswort• Löschen Benutzerpasswort• Einfügen eines neuen Entry's

Alle Operationen setzten voraus, dass zumindest ein Teil des Directoryfiles in den Arbeitsspeicher geladen wird. Es sollten auf einem Directory nicht gleichzeitig mehrere Operationen ablaufen.

Seite 106 Backes/Bürkle 21.11.1996

Page 107: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.4.1 Einrichten Archiv-Directory

Diese Funktion ist für den NBS-Administrator und den betreffenden PooI-Administrator reserviert.

13.3.4.2 Löschen Archiv-Directory

Diese Funktion ist für den NBS-Administrator und den betreffenden Pool-Administrator reserviert. Es ist darauf zu achten, dalss ein Directory mit gültigen Dateien nicht versehentlich gelöscht werden kann.

13.3.4.3 Backup von Benutzerdateien

Wird nur durch den berechtigten Benutzer angestoßen. Wenn der Benutzer danach kurzfristig noch andere NBS-Operationen ausführen möchte, sollte er den Parameter CONTINUE angeben. Vor der Annahme einer Backup-Aktivität wird geprüft, ob aktuelles Datum/ Uhrzeit des Client größer sind als der Zeitstempel der letzten Backup-Aktivität, da sonst Inkonsistenzen bei Differenzsicherungen auftreten können. Der Zeitstempel wird nach erfolgreichem Backup im Directory vermerkt.

13.3.4.4 Restore von Benutzerdateien

Wird nur durch den berechtigten Benutzer angestoßen. Restore-Operationen erfolgen grundsätzlich synchron!

13.3.4.5 Informieren über Benutzerdateien

Der Benutzer fordert vom Client aus einen bestimmten Teil des Dateibaums an. Für jede weitere Anfrage wird eine eigene Transaktion gestartet. Der Infodienst läuft grundsätzlich im CONTINUE-Mode, d.h. das Directoryarchiv wird nicht kurzfristig entladen.

Seite 107 Backes/Bürkle 21.11.1996

Page 108: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.4.6 Löschen von Benutzerbackups

Ein Benutzer kann einzelne Dateien oder ganze Subtrees aus seinem Archiv löschen. Dabei werden nur die Verweise gelöscht, eine Bearbeitung der externen Datenträgererfolgt nicht. Gelöscht werden entweder eine oder mehrere Backupversionen der angegebenen Dateistruktur. Gelöscht werden

• die Einträge in der Backup-Beschreibung• evtl. auch der File-Info-Block.

In der VOLIST sind die Anzahl gültiger Container auf dem betr. Volume herunterzuzählen, aber nur um den Wert komplett frei geworde- ner Container. Ebenso ist im Archivdirectory die Zahl belegter Container herunterzuzählen.

13.3.4.7 Umbenennen von Benutzerdateien

Der Benutzer (Inhaber eines Directorys) kann einzelne Namen seines Archivbaums ändern. Die Änderung gilt immerfür alleVersionen, die unter dem Namen gesichert sind. Es ist nur möglich (vorläufig), einen Namen durch einen anderen Namen zu ersetzen, wobei die Längen unterschiedlich sein dürfen. Es ist aber nicht möglich, eine Namensstufe einzufügen oder zu löschen (evtl. später).

13.3.4.8 Kompression von n Datenträgern (inkl. Ihrer Duplikate)

Diese Funktion ist für den NBS- oder Pool-Administrator reserviert! Während der Kompression von Datenträgern bleibt der Pool für alle Benutzer, die dazugehören, gesperrt. Das bedeutet aber auch, dass ein Kompress nicht laufen kann, solange ein User aus diesem Pool aktiv mit NBS arbeitet. Komprimiert wird ab dem in der VOLIST angegebenen Volume (KOMP-INDEX) inklusive.

Es ist sinnvoll, aus Perfomancegründen immer eine größere Anzahl von Datenträgern auf einmal zu komprimieren. Die Kompression geschieht dadurch, dass die noch gültigen Container auf den zu komprimierenden Datenträgern auf das gerade in Bearbeitung befindliche Medium am Ende angefügt werden. Anschließend sind die ursprünglichen Datenträger frei. Bei diesem Umsetzen der Container sind auch die Verweise in den einzelnen Directorys zu aktualisieren. Nach Beendigung der Kompression der Originaldatenträger sind noch alle Duplikate in der entsprechenden Weise zu kopieren. Schließlich ist noch der Kopf der VOLIST entsprechend upzudaten.

Seite 108 Backes/Bürkle 21.11.1996

Page 109: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Zur Datenträgerkompression wird ein Pool mit allen Directorys gesperrt und eine invertierte Liste mit Beschreibungen aller noch gülti- gen Backups erzeugt, die Extents auf den betreffenden Datenträgern haben. Dazu auch die Verweise auf die FILE-INFO-BIöcke. Diese Liste wird nach absoluten Containernummern sortiert. Nach dem Komprimieren weden die neuen Containernummern und Volumes und ContainerzahIen/VoIume in den FILE-INFO-BIöcken eingetragen.

13.3.4.9 Sichern eines Archivdirectoys

Diese Funktion wird über die alternierende Bearbeitung von OriginaI- und Spiegeldatei mit jeweiligem Gültigkeitsvermerk und Kopier- funktion realisiert. Es ist zu jedem Zeitpunkt mindestens eine der Versionen in sich konsitent.

13.3.4.10 Konsistenzprüfung für ein Directory (??)

Es muss möglich sein (evtl. in einer späteren Stufe), die Verweisstrukturen eines Directorys zu überprüfen und ggf. zu berichtigen. Diese Überprüfung und Rekonstruktion ist ggf. auch auf die Backupdatenträger auszudehnen. Eine genauere Beschreibung der Funktionen wird nachgereicht.

Diese Funktion ist für den NBS-Administrator reserviert.

13.3.4.11 Directory entladen

Diese Funktion ist eine interne Funktion von NBS. Sie wird in der Regel über einen Timer angestoßen oder beim Ende einer Client- Anforderung. Alle veränderten Seiten des Directorys weden in die Datei zurückgeschrieben.

13.3.4.12 Ändern Directory-Passwort

Diese Funktion kann nur der Benutzer ausführen. Der Vorgang als solcher, aber nicht das Passwort wird im Journal vermerkt. Vorher muss das alte Passwort nochmals angegeben werden, falls der Client im Dialogmodus läuft. Das neue Passwort wird verdeckt zweimal (zur Sicherheit und Kontrolle) eingegeben. Der Administrator darf ein Passwort nur beim Kreieren eines Directorys vergeben, nicht jedoch ändern, wenn kein Paßwort mehr eingetragen ist.

Seite 109 Backes/Bürkle 21.11.1996

Page 110: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

13.3.4.13 Löschen Benutzerpasswort

Diese Funktion ist für den NBS-Administrator reserviert.

Der Vorgang wird im NBS-Journal vermerkt. Es wird ein Textstring "Grund der Löschung" verlangt und im Journal mit vermerkt.

13.3.4.14 Teilen eines Directoryrecord

Ein Directoryecord wird geteilt, wenn beim Einfügen von zusätzlicher Information kein Platz mehr im Record ist. Grundsätzlich ist ein Entry in der Namensliste immer komplett mit FILE-INFO-BLOCK und Backupbeschreibung in einem Record. Beim Teilen wird zuerst anhand der Record-Structure-List entschieden. Wenn es dort einen Eintrag im Adressbereich von 800 bis 3200 (dezimal) gibt, dann wird vor dieserAdresse geteilt (neue Teilliste). Wenn es mehr als einen Eintrag gibt, aber nicht im mittleren Adressbereich, dann wird vor dem letzten Eintrag geteilt. Gibt es nur einen Eintrag in der Record-Structure- List, dann wird vor dem ersten Entry nach Adresse 2000 geteilt. Zum Teilen wird der erste leere Record aus der Liste der Zustandsbytes genommen. Er nimmt den zweiten Teil der Information auf. Neu generiert wird der Recordkopf. Geändert werden die übernommen Teile der Record-Structure-List und die Referenzen in dem neuen Record. Beide Records müssen zum Zurückschreiben markiert werden.

13.3.4.15 Löschen eines Directoryrecords

Wenn in einem Record keine Information mehr enthalten ist, kann er aufgegeben werden. Das Zustandsbyte ist dann auf Null zu setzen. Falls es einen Vorgänger- oder Nachfolger-Record gab, dann müssen die Verweise dort gelöscht bzw. umgesetzt werden.

Diese Funktion wird intern beim Verschmelzen zweier Records und beim Löschen von Backup-Versionen aufgerufen. Evtl. kann es sinn-voll sein, den entsprechenden Record in der DA-Datei ebenfalls ungültig zu setzen (Binäre Nullen ??)

13.3.4.16 Verschmelzung zweier Directorys

Zwei Records werden verschmolzen, wenn bei einem von ihnen die Belegungsschwelle unter 10 Prozent (später Parameter einführen?) gefallen ist und die Gesamtbelegung für einen gemeinsamen Record zusammen mit der Information von Vorgänger- oder Nachfol-

Seite 110 Backes/Bürkle 21.11.1996

Page 111: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

gerrecord (logisch, nicht numerisch!) nicht mehr als 30 Prozent (später Parameter einführen?) eines Records ergibt.

Die Verschmelzung erfolgt durch Übernahme der Entries mit zugehöriger Information aus dem 2, Record in den ersten Record unter gleichzeitiger Aktualisierung der Verweisinformationen. Nach Abschluss der Verschmelzung wird der 2. Record gelöscht und der erste zum Zurückschreiben vorgemerkt.

13.3.4.17 Einfügen eines neuen Entrys

Ein neuer Entry wird auf der passenden Hierarchiestufe aufgrund seines Namens in die entsprechende Namensliste eingetragen.

Wenn der Entry an das Ende des Directory-Records kommt und genügend Platz ist, wird einfach die Information geschrieben und die Verweise/Zähler entsprechend gesetzt.

In der Regel wird noch genügend Platz im Directory-Record sein. Dann ist die Stelle zu bestimmen, an der der Entry eingefügt werden muss. Dann wird der Rest des Records entsprechend nach hinten verschoben und die Information eingefügt. Alle Referenzen in der TREE-INFO, die TYP=1 haben und verschoben wurden, müssen um die Länge des neuen Entries erhöht werden. Ebenso sind die gleichen Refe-renzen in der Record-Structure-List um denselben Wert zu erhöhen.

Wenn nicht mehr genügend Platz im Record ist, wird dieserzuerst geteilt (siehe: TeiIen eines Directory-Records) und dann der neue Entry an der passenden Stelle eingefügt.

Eventuell ist auch nur die Backup-Anzahl zu erhöhen und eine neue Backup-Beschreibung entsprechend einzufügen. Oderdie älteste Backup-Beschreibung ist vorher zu löschen und die neue hinten anzufügen.

Seite 111 Backes/Bürkle 21.11.1996

Page 112: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

14 Datenträgeraufbau

Die eigentliche Archivinformation wird auf externen Datenträgern gehalten, die sinnvollerweise mit einem automatischen Datenträger- archiv gekoppelt sind. Jeder Datenträger enthält eine sequentielle Datei mit dem Namen "<pool-name>.FILE1".

Alle physikalischen Records dieser Datei heißen Container und haben die Maximalgröße CONT-LNG aus der PARAM-LIST. Wenn es das Medium nicht erfordert, müssen die Container nicht ganz voll sein. Ein nicht ganz gefüllter Container wird nie mehr vollgeschrieben (auch nicht in einem späteren Backup oder bei einer Archivkompression).

14.1 Allgemeines zum Datenträgeraufbau

Die Containernummern sind innerhalb eines Pools (VOLIST) eindeutigSie sind fest an externe Datenträger (Volumes) gebunden. Die erste Containernummer(FlRST-CONT) und die Anzahl der (garantiert auf das Volume passenden) Container (ANZ-CONT) sind in der VOLIST/TYPLIST für jeden Volume vermerkt.

Wenn das Medium hardwaremäßig eine Datenkompression unterstützt, wird eine zusätzliche Zahl von Containernummern für jeden Volume reserviert, aber nicht zwingend ausgenützt (bis MAX-ANZ-CONT aus TYPLIST) . Auf einem Archiwolume sind die Container- nummern lückenlos aufsteigend numeriert.

Die Containernummern eines Pools sind nicht lückenlos aufsteigend mit den alphabetisch sortierten Datenträgerkennungen (VSNs), da die VOLIST evtl. während des Betriebs erweitert werden kann und die Kennungen der neuen Datenträger nicht zwingend im Alphabet später liegen.

14.2 Struktur der Container

Alle Container eines Archivs haben die gleiche Maximallänge von 32 oder 64 KB. Die Containerstruktur wird sowohl von dem Client xbaresS/xbaresP als auch von verschiedenen Nbs-Komponenten (restore, copy, dump,..) ausgewertet. Aufbau eines Containers:

Seite 112 Backes/Bürkle 21.11.1996

Page 113: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

ABS-CONT-NR 4 Absolut eindeutige Containernummer innerhalb des Pools

DIRECTORY 8 Name des besitzenden Directorys

USED-LNG 2 Anzahl genutzter Bytes ab Containerbeginn

RES 2 Reserviert für zukünftige Zwecke

CONT-VERP 4 Verprobung eines Containers (Ohne den hier beschriebenen 20 Byte langen Header)

<file-segment> bis Containerende

...

<file-segment> BACKUP-KENN 5 Directoryweit eindeutige Kennung des Dateibackups

SEGM-TYP 2 Beschreibung des Dateisegments

1: Datei komplett in diesem Container2: Nur Dateianfang in diesem Container3: Zwischensegment5: Dateirest in diesem Segment

Nur bei SEGM-TYP=1 und 4 kann demanch noch Platz für andere Info im Container sein

SEGM-LNG 2 Länge des Filesegments inkl. Header (8 Bytes)

<nutzinfo> ... bis maximal zum Containerende

Seite 113 Backes/Bürkle 21.11.1996

Page 114: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

14.3 Merkposten

Es kann nicht sein, daß ein Buffer nicht auf ein Archiwolume passt, da bei der Zuweisung des Buffers schon bekannt ist, wieviele Contai- ner noch darauf Platz haben (später: Ausnahme, wenn Volumes mit Hardware-Kompression bedient werden).

14.4 Container-Buffer

Zur besseren Ausnutzung der Archivlaufwerke und Erhöhung des Multiplexfaktors am Netzzugang des Servers werden die vom Netz kommenden Daten auf Magnetplatte zwischengespeichert. Dies geschieht in sequentiellen Dateien, die als Buffer oder Disk-Buffer bezeichnet werden.

Ein Buffer wird dynamisch für einen bestimmten Pool reserviert. Es können mehrere User eines Pools mit ihren Directorys Backups in einen solchen Buffer schreiben. Beim Anlegen eines Buffers ist schon klar, welche Containernummern darin enthalten sind und wieviele Container noch auf den gerade zu beschreibenden Archiwolume passen. Der Buffer wird nicht größer als bis zur Kapazitätsgrenze des Datenträgers angelegt. Bei Bedarf kann für einen Pool ein zweiter und folgende Buffer angelegt werden.

Ein Benutzer kann beim Backup angeben, ob er auf die Beendigung des Kopierens der Buffer auf die Archivdatenträger warten will oder nicht. Im Normalfall wird er nicht warten wollen.

Beim Kopieren auf den Archivdatenträger und dessen Duplikate braucht die Information im Buffer nicht mehr verändert zu werden. Auch im Archivdirectory ist die Information schon für die endgültigen Datenträger vermerkt. Über die Sicherung der SAVLIST in der MAINLIST-Datei ist eine zusätzliche Sicherheit für Katastrophenfälle eingebaut worden.

BUFFER-ID 4 Indentifikation des Buffers

POOL-ID 8 Name des Pools

VOLIST-IND 4 Indes des VOLIST-Eintrags, auf den geschrieben wird

Seite 114 Backes/Bürkle 21.11.1996

Page 115: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

14.5 Buffernutzung bei Backups

Zu Beginn eines jeden Backups muss für den betreffenden Pool ein noch nicht voller Buffer verfügbar sein. Notfalls ist er einzurichten. Ein Verweis aufden gerade aktiven Buffer findet man in der VOLIST des Pools (AKT-BUFFER). Dort stehen auch die Nummer des nächsten zu beschreibenden Containers (NEXT-CONT) und die höchste auf dem Buffer unterzubringende Containernummer (LAST- CONT). Die absolute Nummer für einen Container wird erst direkt vor der Übertragung des vollen (oder ein Backup abschließenden) Containers in den Buffer vergeben.

Wenn ein Buffer auf den Archivdatenträger und alle Duplikate geschrieben ist, wird die Bufferkennung neu geschrieben mit VOLIST- IND= - 1.

14.6 Buffernutzung bei Restore

Zu Beginn eines jeden Restorevorgangs muß ein leerer Buffer verfügbar gemacht werden. Die Größe des Buffers (in Anzahl Containern) kann aus der Summe der vollständig belegten Container auf allen Datenträgern der zu restaurierenden Datei+2 berechnet werden. Falls dies über die maximal zugelassene Zahl von Containern für die Buffer hinausgeht, ist der Restorevorgang zu segmentieren. Während eines Restorevorgangs wird ein Directory gegen andere Vorgänge gesperrt.

Beim Übertragen der Container vom Archivvolume in den Buffer werden nur diejenigen Container berücksichtigt (d.h. auf die Platte geschrieben), die dem betreffenden Directory gehören.

Seite 115 Backes/Bürkle 21.11.1996

Page 116: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

15 Einschränkungen Im Folgenden werden einige Einschränkungen der aktuellen Ausbaustufe von NBS genannt. Die Liste erhebt keinen Anspruch auf Vollständigkeit.

Es kann Konstellationen geben, dass einzelne Limits durch übergeordnete Beschränkungen nicht ausgeschöpft werden können.

Datenträger pro VOLIST 65535Directorys pro VOLIST 1024Anzahl VOLISTs 1024Gesamtkapazität pro Pool 128 TBGesamtkapazität pro Archiv 128 PBDateizahl pro Archivdirectory 106

Namenslänge im Client 32 BVoller Pfadname im Client 1 KBMaximale Länge einer Datei 2 GBAnzahl Archivdatenträgertypen 32Anzahl Archivlaufwerkstypen 32

Seite 116 Backes/Bürkle 21.11.1996

Page 117: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

16 Sonstiges16.1 Merkpositionen

Dateiattribute (Zugriffsrechte) in Backup/Restore mitnehmen.

In der Archivbeschreibung Platz lassen für ACLs (128 Bits).

Wenn der User CONTINUE in seinem Menü angegeben hat, wird maximal CONN -TIME Sekunden lang gewartet, ob er weitere Kom- mandos an NBS absetzt. Wenn nicht. wird die Directory-Datei entladen. Wenn kein CONTINUE angegeben ist, wird nach Beendigung des Client-Prozesses das Archiv-Directory direkt entladen.

Ein Benutzer sollte Backup-Versionen als "nicht automatisch Iöschbar" kennzeichnen können. Evtl. sollte ein Benutzer zu einzelnen Backup-Versionen ein Verfallsdatum angeben können.

Zeitstempel werden jeweils vom Client vergeben, da Veränderungszeiten für einzelne Dateien ebenfalls mit dieser Zeit versehen werden.

Vor derAnnahme eines Backupauftrags wird geprüft, ob CIient-Zeit und Server-Zeit (inkl. Datum) nicht mehr als 70 Minuten differieren (Sommerzeit als Kulanz). Später evtl. als Parameter in der MAINLIST führen.

Später: Datenträgerkopien auf kleineren Medien als das Original ermöglichen.

Später: Wenn die Zahl der maximal aktiven Clients (mit Backup-Funktionen oder alle ?) erreicht ist und ein neuer NBS-Benutzer meldet sich an, erhält er eine Information, wieviele andere Benutzer noch warten mit einer Abschätzung der Wartezeit.

Zu untersuchen ist noch die Sicherheit bei

• Serverabsturz• Clientabsturz• Verbindungsabsturz.

Seite 117 Backes/Bürkle 21.11.1996

Page 118: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Es sollte eine Verwaltungsdatei existieren, die zusätzliche Information zu jedem Benutzer enthält. Beispielsweise:

• Name• Vorname, Titel• Adresse• Telefonnummer• Directory• Kostenstelle• Mailadresse• usw.

Es wäre schön, wenn der Systemverwalter eine CIient-Funktion "Status NBS" hätte. Er könnte dort erfahren, wieviele User mit den einzelnen Aktivitäten beschäftigt sind, wie voll die Datenträger sind, welche Übertragungsraten erreicht werden .... .. Später!

Machen wir eine "Papierkorbfunktion", wo Einträge gespeichert werden, die der Benutzer für ungültig erklärt hat? Problem: was tun, wenn der Datenträger inzwischen komprimiert wurde?

Es muss einen Service geben, der von bestimmten Typen von Archivmedien in bestimmten Zeitabständen eine Überprüfung auf Lesbar- keit, ein Umkopieren oder ein Umspulen macht.... Später!

Es ist im Setup-Menü des Administrators der Default-Socket- Port anzugeben. Ebenfalls in einem Installationsmenü für jede Workstation.

Beim Restore von ganzen Directories muss daraufgeachtet werden, dass nicht Dateien zurückgespielt werden, die inzwischen umbenannt oder gelöscht wurden.

Bei größeren Restores muß ggf. eine Zugriffsoptimierung über die Archivvolumes stattfinden, da bei strenger Abarbeitung des Trees sehr unterschiedliche Backups angesprochen werden können. Abhilfe: Sortieren der Restoreanforderungen nach Backup-Zeitstempel oder Archivvolume des Dateianfangs.

Seite 118 Backes/Bürkle 21.11.1996

Page 119: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Ein Satz für das Marketing: "Wozu neue Hardware kaufen, wenn die heutige leistungsfähiger ist?"

Helical Scan- Bänder können nicht sicher beliebig oft bearbeitet werden. Es muss ein volumespeziflscher Nutzungszähler geführt werden, da der Verschleiß groß ist.

16.2 Offene Fragen

Was machen wir, wenn ein Directory gesichert wird, bei dem eine Datei nicht mehr enthalten ist, die vorher enthalten war und noch im Archiv steht? Sollte im Backup des Directories wegbleiben, damit sie nicht restauriert wird, aber müssen die Archivverweise erhalten bleiben?

Welches Veränderungsdatum hat eine UNIX-Datei nach dem Umbenennen (mv-Kommando)? Ist sichergestellt, daß sie mit dem neuen Namen in das Archiv kommt?

Was machen wir mit Archivolumes, die nicht im Roboter Iiegen?

Wollen wir später den "Export" von Files oder Subtrees unterstützen?

Wir müssen dringend Performanceaussagen zur K3000-Box machen hinsichtlich Durchsatz und CPU-Belastung.

Wir brauchen für das "Marketing" eine Tabelle mit Kosten pro MB für unterschiedliche Archivmedien.

Können wir im Client die Übertragungsstrukturen so aufbauen, daß man quasi einen Bitmover-Service benutzt? Ziel wäre die Verlagerung von Last in die Benutzerrechner und damit bessere Abrechnung (oder CPU-Zuordnung). Evtl. muss dann auch die Information für das Archivdirectory im Client vorbereitet und verarbeitet werden.

Seite 119 Backes/Bürkle 21.11.1996

Page 120: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

17 Anhänge17.1 Motivation der Restauration von Objekten durch den User (xbaresR)

17.1.1 Wie verfahren wir momentan?

NBS-Directorys werden vom Pool-Administrator eingerichtet. einschließlich der dazugehörigen Passwörter. Die Backup-Vorgänge werden nur vom Pool-Adminstrator angestoßen - sei es nun explizit oder über Cronjobs.

Wünscht ein User eine Datei zu restaurieren, muss er den Pool-Adminstrator damit beauftragen: der User kennt im allgemeinen weder Directorynamen noch Directorypasswort.

Es ist unüblich, pro User ein eigenes NBS-Directory anzulegen.

17.1.2 Problematik

Ein User kann eine Datei ohne Kontakte zum Pooladministrator nicht selbständig restaurieren.

Das Problem verschärft sich. wenn die Dateien des Users auf User-Seite gemountete Dateien eines abgesetzten Servers sind und von dort mit NBS gesichert wurden. Dies hat dann zur Konsequenz, dass einmal die Mount-Pfade und Original-Pfade unterschiedlich sein können, und eine Loginberechtigung des Users auf dem Server-Rechner ist normalerweise nicht erforderlich.

17.1.3 Aufgabenstellung

Dem User ist ein Kommando zur Verfügung zu stellen. mit dem er - gegebenenfalls indirekt auf einem Server - Dateien restaurieren kann. Die Möglichkeit der Information über das dazugehörige Directory kann später imeplementiert werden.

Ein GUI kann ebenfalls später implementiert werden.

Seite 120 Backes/Bürkle 21.11.1996

Page 121: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Aus Gründen des Datenschutzes und der Datensicherheit sind gewisse Randbedingungen einzuhalten:

• Der User soll sich durch die Restauration keine Privilegien erschleichen können, wie z.B. unberechtigter Lesezugriff auf fremde, gesicherte Dateien, wenn deren Schutz-Attribut dies verbietet, oder unberechtigte Veränderungen von Dateien, die ihm nicht gehören.

• Dies lässt sich am besten dadurch regeln, dass zu restaurierende Dateien nicht vorhanden sein dürfen; sie müssen eventuell durch den User, der vorgibt, dass er Eigentümer ist, vorher gelöscht werden. Weiterhin muss sichergestellt sein. dass Objekte nur am Originalplatz restauriert werden und nicht an anderer Stelle (so wie das bei xbares mit Archiv- und Clientpath möglich ist).

• Es wird nur die neueste Version eines Objektes restaiuiert.

• Es werden keine Trees restauriert und damit sinnvollerweise auch keine Directories (Directories immer über den NBS-Administrator).

• Es kann nur immer ein Objekt restauriert werden (um Ausspäh-Versuche zu erschweren).

• Der User braucht nicht zu wissen, in welchem NBS-Directory die Dateien abgelegt sind; folglich braucht er auch nicht das Directorypasswort zu kennen.

Seite 121 Backes/Bürkle 21.11.1996

Page 122: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

17.1.4 Vorschlag zur Realisierung

17.1.4.1 User-Interface (aus xbares abgeleitet)

xbaresR -file <objekt> \[-port <Port des daemons nbs_ud auf dem Rechner, auf dem nbs_ud läuft>] \[-server <IP-Adresse des Rechners. auf dem der nbs_ud-Daemon läuft>]

Bei dem Objekt-Namen ist die Angabe absoluter oder relativer Pfadnamen möglich. Falls dieses Objekt in einem Filesystem liegt, welches den in "-server" aufgeführten Rechner gemountet hat. werden die führenden Pfadbestandteile gemäß Mounteintrag ersetzt. Die Voreinstellung für den Port ist 19999, für den Server die eigene IP-Adresse.

Intern übemittelt xbaresS auch seinen aktuellen User- und Group-Namen (für Logging).

17.1.4.2 Der Daemon Nbs_ud (User-Daemon)

Auf dem Rechner, der unter der Option "-server" angegeben ist, läuft unter UID 0 (d.h. root) der Daemon Nbs_ud. Beim Start liest nbs-ud folgende Daten ein:

• Die eigene Portnummer• Die Directory-Liste. Jede Zeile besteht aus Directorynamen und -passwort• IP-Adresse der Server-Software (nbs_mux) und die dortige Portnummer• eine Liste von durch einen "*" getrennten Filesystem-Directorynamen, welche vom NBS-Administrator in das hier angegebene

Archivdirectory gesichert wurden

Seite 122 Backes/Bürkle 21.11.1996

Page 123: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

xbaresR baut über das TCP/[P-Protokoll zu nbs_ud eine Verbindung auf und teilt die Restore-Parameter mit. Aufgrund dieser Angaben erstellt Nbs_ud ein xbares-Kommando für den Bntch-Modus und startet den entsprechenden Prozess zur Restauration.

Für das komplett aufzubauenden xbares-Kommandos muß Nbs_ud die entsprechenden NBS-Directorypasswörter und Directorynamen aus der Directoryliste entnehmen. Dies birgt keine neues Sicherheitsrisiko in sich, da in den (CRON-)Scripts zum Sichern der Dateien diese Passwörter auch jetzt schon genau so hinterlegt sind.

Da dieser xhares-Restore-Prozess mit root-Berechtigung läuft, sind wegen möglichen Mißbrauchs etliche Vorkehrungen zu treffen. die sich in Erweiterungen für xbares und xbaresS widerspiegeln.

17.1.4.3 Änderungen und xbares und xbaresS

Das von Nbs_ud generierte xbares-Kommando erhält die zusätzliche Option "-secure", die von xbares genau dann an xbaresS weiter-gereicht wird, wenn die effektive UID = 0 ist. Für normale Anwender wird die Option "-secure" nicht ausgewertet.

Diese Option veranlasst xbaresS,

• Dateien dann nicht zu restaurieren, wenn sie vorhanden sind, und• Dateien immer nur unter der Original-UID zu restaurieren.

Man darf allerdings nicht übersehen. dass die Kreation "user-fremder" Dateien durch den Root-User an der Quota-Verwaltung vorbei operiert.

17.1.4.4 Protokollierung

nbs_ud lenkt STDIN, STDOUT und STDERR für den generierten xbareS-Prozess in den Socket um, der die Verbindung von xbaresR zu nbs_ud verwaltet, und schließt diesen Socket dann, sodass der Output von xbares direkt über die TCP/IP-Verbindung zu xbaresR übertragen wird.

Seite 123 Backes/Bürkle 21.11.1996

Page 124: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

17.2 Vorschlag zur Nbs-mux-Integration in Nbs_serv

Die Client-Schnittstelle soll im wesentlichen über die in Nbs_mux bereits vorhandenen Schnittstellen zur Kommunikation mit dem xbares- Client realisiert werden, und zwar so, dass von den TCP/IP-Aktivitäten möglichst wenig nach oben in Erscheinung tritt. Insbesondere heißt dies auch, dass die ganze TCP/IP-Initialisiering sowie die Entgegennahme von clientseitigen Verbindungsaufbauten "im Keller", d.h. für Nbs_serv als Blackbox, geschieht. Weiter heißt dies auch, dass die Schnittstellenroutinen intern das 15 Byte lange Satzlängenfeld beim Senden generieren und beim Empfangen abstreifen. Die folgenden Unterprogrammschnittstellen wären dann für Nbs_serv erforderlich:

17.2.1 Initialisieren der Schnittstelle

Achtung: Diese Routine ist genau einmal aufzurufen.

int init_tcp_ip(int *error_code,char *testfile_serv,char *testfile_xbares,char *testfile_text,int port,int testvar)

Eingabewerte

error_code Adresse der Variablen, unter der der Errorcode abgespeichert wird

testfile_serv Dateiname für Testoutput-File serv

testfile_xbares Dateiname für Testoutput-File xbares

testfile_text Dateiname für Testoutput-File serv xbares

port TCP/IP-Haupt-Portnummer für die Schnittstelle

testvar Testvariable Bit 0: 0 Keine Testoutput-Files erzeugen1 Erzeuge die 3 Testoutput-Files

Bit 1: 0 Keine Meldungen nach STDERR1 Meldungen nach STDERR

Bit 2: 0 Testfiles im Output-Mode eröffnen1 Testfiles im Extend-Mode eröffnen

Seite 124 Backes/Bürkle 21.11.1996

Page 125: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

Rückgabewerte

1 Kein Fehler

-1 testfile_text kann nicht geöffnet werden

-2 testfile_xbares kann nicht geöffnet werden

-3 testfile_serv kann nicht geöffnet werden

-4 Hauptsocket kann nicht kreiert werden ( *error_code)

-5 bind für Hauptsocket nicht möglich ( *error_code)

-6 listen-Aufruf auf Hauptsocket nicht möglich ( *error_code)

-7 setsocketopt für Hauptsocket nicht möglich ( *error_code)

Seite 125 Backes/Bürkle 21.11.1996

Page 126: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

17.2.2 Einfaches Senden zum Client

int write_to_client(int descriptor,int len,unsigned char *buf,char *head,int *error_code)

Eingabeparameter

descriptor Von der Schnittstelle vorgegebenes Clientkennzeichen, ab 1000 aufwärts. Bei Angabe von 0,1,2 wird dies direkt als File-Descriptor gewertet.

len Länge des zu sendenden Infopuffers

buf Adresse des zu sendenden Infopuffers

head Kommandoheader (NULL = kein Header)

error_code Variablen-Adresse zum Abspeichern des Errorcodes

Rückgabewerte

-001 Fehler bei write-Systemcall (Fehlercode in *error_code)

-997 Files für Testoutput können nicht geöffnet werden

-998 Unzulässiger Descriptor

-999 init-Aufruf fehlt

>000 Anzahl gesendeter Bytes

Seite 126 Backes/Bürkle 21.11.1996

Page 127: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

17.2.3 Senden zum Client mit Zwischenpufferung zum Aufsammeln

int buffer_to_client (int command,int descriptor,int len,unsigned char *buf,char *head,int *error_code)

Eingabeparameter

command 1: Info in Buffer kopieren2: Buffer absenden

descriptor Von der Schnittstelle vorgegebenes Clientkennzeichen, ab 1000 aufwärts. Bei Angabe von 0,1,2 wird dies direkt als File-Descriptor gewertet.

len Länge des zu sendenden Infopuffers

buf Adresse des zu sendenden Infopuffers (bei command = 1)

head Falls von NULL verschieden, Kommandoheader einfügen (xxxxx=...), nur bei command = 1

error_code Variablen-Adresse zum Abspeichern des Errorcodes

Rückgabewerte

-001 Fehler bei write-Systemcall (command = 2, Fehlercode in *error_code)

-002 Fehler bei malloc bzw. realloc (command = 1)

-003 command enthält unzulässigen Wert

-997 Files für Testoutput können nicht geöffnet werden

-998 Unzulässiger Descriptor

-999 init-Aufruf fehlt (für alle command-Werte)

>000 Anzahl gesendeter Bytes (command = 2)

000 Kein Fehler bei command = 1

Seite 127 Backes/Bürkle 21.11.1996

Page 128: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

17.2.4 Empfangen vom Client

int read_from_client (int *descriptor,int *len,unsigned char **buf,int wait_time,int *error_code)

Eingabeparameter

descriptor Verweis auf das von der Schnittstelle vorgegebene Clientkennzeichen, ab 1000 aufwärts. Bei *descriptor = 0,1,2 wird dies direkt als File-Descriptor gewertet. Die Angabe von *descriptor = -1 bedeutet, dass von beliebigen Clients empfangen werden darf. In diesem Fall wird *descriptor von der Schnittstelle zurückgemeldet.

len Verweis auf die Länge des empfangenen Infopuffers (Ein- und Ausgabewert)

buf Verweis auf die Adresse des empfangenen Infopuffers (Ein- und Ausgabewert). Hat *buf den Wert NULL, so beschafft die Schnittstelle den Puffer, aund seine Länge wird in *len zurückgegeben. Im anderen Fall wird *buf als Pufferadresse verwendet, mit der in *len angegebenen Länge (Fehler, wenn zu kurz).

wait_time Maximale Wartezeit in Millisekunden; 0 heißt: beliebig lange warten

error_code Variablen-Adresse zum Abspeichern des Errorcodes

Rückgabewerte

-001 Fehler bei recv, Fehlercode in *error_code

-002 Fehler bei malloc/realloc

-003 Timeout

-004 Fehler bei select, Fehlercode in *error_code

-005 Fehler bei accept, Fehlercode in *error_code

-006 Fehler bei listen, Fehlercode in *error_code

-007 EOF beim Lesen, connection closed, Meldung in *descriptor

-888 Es wurden Connections intern geschlossen, ansonsten wie bei Timeout

-996 Puffer zu kurz bei *buf NULL

Seite 128 Backes/Bürkle 21.11.1996

Page 129: NBS Protokolle und Datenstrukturenbackes/PDF/NBS-Protokolle.pdf · 3 -d xbares_directory Directory für den xbares-Lauf, gleiche Bedeitung wie -xbaresdir beim Start von xbares; Voreinstellung

-997 Files für Testoutput können nicht geöffnet werden

-998 Unzulässiger Descriptor

-999 init-Aufruf fehlt (für alle cmd)

000 Es wurde eine neue Connection aufgenommen, Meldung in *descriptor

>000 Anzahl gelesener Bytes

Seite 129 Backes/Bürkle 21.11.1996