Syneticon Networks logo
Home | Kontakt | Sitemap 
 


Unternehmen | Lösungen | Projekte | News | Support 



Windows 2000 NTBACKUP & RSM Howto


Ein kleines HOWTO zum unbeaufsichtigten Backup mit Windows 2000 NTBACKUP und dem Removable Storage Manager.

For an English version of this article look over here.

Kleine Einführung

Das mit Windows 2000 mitgelieferte NTBACKUP und der "Removable Storage Manager" sind beides Entwicklungen von Seagate, die von Microsoft für die Verwendung in den Windows 2000, XP and 2003 Server Betriebssystemen lizensiert wurde. Es ist eine ziemlich "erleichterte" version von Veritas BackupExec. Obwohl es grundsätzlich eine "gute Idee"(tm) und, verglichen mit dem NTBACKUP von Windows NT 4, ein großer Schritt vorwärts ist, ist die Handhabung des RSM kompliziert und die Dokumentation nur mangelhaft, teilweise sogar falsch.

Was ist an RSM denn nun so besonders?

In den guten alten NT4-Zeiten hatte man nur das bekannte NTBACKUP.
Es sah keinen Betrieb von Tape Libraries vor. War mehr als ein Sicherungslaufwerk angeschlossen, könntet ihr mal auf die Idee gekommen sein, im Lauf des Backupvorganges einfach auf das Medium im zweiten Laufwerk zu schreiben, wenn das erste gefüllt war. Wahrscheinlich seid ihr bei der Idee auch stecken geblieben - es hat schlicht nicht funktioniert.
Es kannte nur zwei Betriebsmodi: entweder einen Sicherungssatz an das Band anzuhängen, oder aber das Band mit dem aktuellen Sicherungssatz zu überschreiben. Wenn die Medien dabei von unqualifiziertem Personal gewechselt wurden, lief man bei geplanten Backups stets Gefahr, dass ein inkrementielles Backup fälschlicherweise von einem Vollbackup (auch "Normalbackup") überschrieben wird, wenn das Band zum falschen Zeitpunkt im Laufwerk liegt.
RSM räumt diese Probleme der Vergangenheit aus dem Weg.

Was macht dieses "RSM" denn nun?

Eigentlich ist "RSM" eine API, die von Backup-Anwendungen benutzt werden soll. Es verwaltet Sicherungs(band)medien, indem es eine eindeutige Medienkennung (die Medien-GUID) neben anderer Information (Medienname, Beschreibung, Kommentare, verfügbare Seiten) in einer Datenbank speichert. Damit kann es jedes Medium identifizieren, welches schon einmal im System genutzt wurde.

Außerdem können mit Hilfe des RSM die Medien nun in einer baumartigen Struktur organisiert werden - ähnlich der Organisation von Dateien in Verzeichnissen auf einem Dateisystem. Das RSMische Gegenstück für Verzeichnisse heißt "Medienpool". Ein Medienpool kann entweder Medien eines vordefinierten Typs oder weitere untergeordnete Medienpools enthalten.
Ein anderes Feature ist die Zuordnung eines Mediums zu einer bestimmten Anwendung. Dieses medium wird dann als zur Anwendung "gehörend" gekennzeichnet und kann somit nicht von einer anderen Anwendung versehentlich überschrieben werden. Dies sogar dann, wenn die Anwendungen einander und das Datenformat der jeweils anderen nicht "kennen".

Was heißt das für NTBACKUP?

NTBACKUP benutzt RSMs Fähigkeiten zur Identifikation der Medien und das Pooling. Wenn entsprechend angewiesen, kann es ein spezielles Medium aus einer automatischen Bänderbibliothek ziehen - nur mit der Angabe der entsprechenden Medien-GUID oder des Mediumnamens. Oder aber ein beliebiges Band aus einem vordefinierten Backup Pool ziehen, die Sicherung starten und diese auf einem anderen Band aus demselben Pool fortsetzen, sobald das erste voll ist. Es spielt dabei auch keine Rolle, ob das zweite Band im selben Laufwerk eingesetzt ist - es muss lediglich als zum selben Backup Pool gehörig markiert sein.

Das ist alles toll, aber nichts neues. Warum belästigst du die Welt mit Altbekanntem?

Als ich versuchte, einige Backup-Scripts für ein eher einfaches Szenario (Beschreibung weiter unten) zu erstellen, ist mir aufgefallen, dass die Dokumentation zu NTBACKUP fehlerhaft und die Möglichkeiten, RSM in einem Script zu beeinflussen, sehr beschränkt sind. Ich habe versucht um diese Beschränkungen herumzuarbeiten und das ist genau das, wovon der restliche Teil dieses HOWTOs handelt.

Los geht's

Das Backup-Szenario

Jedes kleine Kind Jeder Sicherungsoperator weiß, dass eine gute Backup-Strategie notwendig ist, um Backups bezahlbar zu halten und nicht zu viele Medien, Zeit und anderer Ressourcen zu ver(sch)wenden, auf der anderen Seite aber möglichst viele Daten zu sichern und stets die Möglichkeit zu haben, jede Datei in den Zustand eines beliebig gewählten Zeitpunktes zurück zu versetzen.
Eine Strategie, die sich als effizient, gut handhabbar und flexibel erwies, ist die abwechselnde Sicherung in den Modi "Vollbackup" und "Inkrementielles Backup". Dabei wird das Vollbackup (auch "Normalbackup") regelmäßig, aber eher selten durchgeführt (z.B. ein Mal wöchentlich oder ein Mal monatlich). Inkrementielle Backups werden zwischen den Vollbackups und auch wesentlich häufiger durchgeführt (z.B. ein oder zwei Mal täglich).
Die Medien des Vollbackups werden über eine gewisse vorher definierte Zeit (z.B. ein Jahr) verwahrt, bevor sie im Schema rotieren und von einem neueren Vollbackup überschrieben werden.
Die Medien der inkrementiellen Sicherung rotieren nach jedem Vollbackup, werden aber nicht gelöscht/überschrieben, sondern mit zusätzlichen Sicherungssätzen versehen. Natürlich führt dies dazu, dass die Medien der inkrementiellen Sicherung sich mit der Zeit füllen, deshalb müssen diese Medien regelmäßig durch neue ersetzt werden (zur Häufigkeit des Wechsels kann man dabei keine generelle Empfehlung geben - es hängt von der Kapazität der Bänder und dem täglich zu sichernden Volumen ab). Da Bänder Teile eines mechanischen Systems sind und damit auch verschleißen, ist es eigentlich eine gute Idee, den Mediensatz durch fabrikneue Bänder zu ersetzen, anstatt einen bereits benutzten Mediensatz wiederzuverwenden.
Ich nehme hier an, dass der Wechsel der Bänder von weitesgehend unausgebildetem Personal durchgeführt wird - die Personen können lediglich die obigen Instruktionen zum Herausnehmen eines Mediums aus dem Laufwerk, dem Einlegen eines neuen Mediums und Rotation/Bänderaustausch befolgen.

Die Anforderungen

Wir brauchen ein mehr oder minder intelligentes Backup-Skript, dass Fehlbedienung erkennt - wenn z.B. ein inkrementielles Medium eingelegt wurde, aber ein Vollbackup ansteht oder umgekehrt. Des Weiteren soll das Skript auch komplett neue Medien erkennen und richtig behandeln - ob im Fall eines Voll- oder eines Inkrementialbackups. Und nicht zuletzt wollen wir irgendeine Art der Rückmeldung vom Sicherungsprozess - ein Log mit den Sicherungsprotokollen in einer E-Mail an den Sicherungsoperator z.B.

Wird nicht NTBACKUP all dies für uns tun?

Man erwartet von einer professionellen Sicherungssoftware, dass alles obige ohne besonderen Konfigurationsaufwand erledigt werden kann. Nur ist NTBACKUP in diesem Sinne alles andere als professionell, also muss man dort noch gehörig Hand anlegen. Das einzige, was NTBACKUP selbständig machen kann, ist entweder ein neues/unbekanntes Band zu nehmen, es zu formatieren und zu beschreiben, oder Sicherungssätze an ein bestehendes Band anzuhängen. Insbesondere kann es keine intelligente Unterscheidung zwischen einem zu überschreibenden Vollbackup-Band und einem keinesfalls zu überschreibenden Band mit inkrementiellen Sicherungssätzen machen und natürlich wird es auch keinerlei Logs per E-Mail verschicken. Schlimmer noch - es wird bestehende Log-Dateien schon nach kurzer Zeit (Zyklus von 10 Log-Dateien) überschreiben.

Also, was nun?

Wir brauchen einige Vorbereitungen:

Konfiguration neuer Backup-Pools

Wir öffnen das MMC Snapin "Computerverwaltung" (compmgmt.msc) und gehen zum Abschnitt Datenspeicher / Wechselmedien. Schaut euch die "Medienpools" an - darin befinden sich die Pools "Freie Medien", "Importmedien", "Nicht erkannte Medien" und "Backup". Wichtig dabei zu sehen ist, dass keiner dieser Pools selbst Medien enthält, sie alle haben je einen Unterpool (z.B. "4mm DDS"), in welchem die eigentlichen Medien eingeordnet werden.
Removable Storage Manager MMC console
Wir müssen einige Pools unterhalb des "Backup"-Pools hinzufügen. Wir nennen sie "Incremental" und "Full" und können sie mit einer Beschreibung versehen. Sie sollten Medien des zum verwendeten Bandlaufwerks passenden Typs fassen und "Medien aus dem Pool freier Medien nehmen" sowie "Medien in den Pool freier Medien zurückgeben" können. Die beiden erstellten Pools werden später Medien für die Inkrementielle und Volle Sicherung enthalten.
Create a new media pool

Einige GUIDs sammeln

Wir brauchen noch die GUIDs, um die Bandlaufwerke oder Pools später im Skript anzusprechen. Die zugehörigen Namen können uneindeutig oder zu lang sein, so dass sie für die Benutzung in Skripts ungeeignet sind. Außerdem erlaubt die Syntax von RSM.EXE in einigen Fällen keine Objektnamen.
Der Befehl "rsm view /TLIBRARY /GUIDDISPLAY" in der Kommandozeile listet uns alle vorhandenen Tape Libraries inklusive der zugehörigen GUID auf. Vergesst nicht, die GUID zu notieren.
rsm call
In einem weiteren Schritt führen wir rsm view /TMEDIA_POOL /GUIDDISPLAY aus, um alle "top level"  Medienpools des RSM auszulesen. Kopiert das Ergebnis mittels Copy&Paste irgendwohin, wo ihr es wiederfindet. Führt rsm view /TMEDIA_POOL /GUIDDISPLAY /CG<GUID_OF_BACKUP> mit der GUID des "Backup" Medienpools anstatt von <GUID_OF_BACKUP> aus. Kopiert auch dieses Ergebnis mittels Copy&Paste irgendwohin.
rsm call
Tut das gleiche mit <GUID_OF_FREE_MEDIA> und <GUID_OF_UNRECOGNIZED_MEDIA> um die GUIDs für die Unterpools der Pools der Freien Medien und der Unerkannten Medien zu erhalten.

Schaut euch RSM.EXE an

RSM.EXE ist die Kommandozeilenschnittstelle zur Steuerung des Removable Storage Managers. Es scheint auch die einzige Schnittstelle zu sein, die zum Skripten des RSM benutzbar ist - es gibt keine VBScript/JScript API zum RSM. RSM.EXE erlaubt es, Informationen aus der RSM-Datenbank auszulesen (wie ihr vielleicht schon gesehen habt, als wir den GUIDs im vorigen Abschnitt nachgejagt sind) und einen recht beschränkten Satz an Befehlen auszuführen - zum Beispiel das Auswerfen des Bandes oder das Allozieren/Deallozieren von Medien.

Dies ist für uns aber ausreichend, um festzustellen, welches Medium in welchem Laufwerk geladen ist und ob es zu einem bestimmten Medienpool gehört.

Schaut euch die NTBACKUP-Dokumentation an

In der interaktive Hilfe zu NTBACKUP und in Technet Online finden sich die Kommandozeilenparameter für NTBACKUP. Unglücklicherweise ist diese Dokumentation schrecklich formatiert, mit grausamen Erklärungen versehen und fehlerhaft. Trotzdem ist es ein Anfangspunkt. Die wichtigsten Parameter, die wir benutzen werden sind
  • /A um einen Sicherungssatz anzuhängen, anstatt das Band zu überschreiben
  • /P um einen Medienpool anzugeben, aus dem die Medien gezogen werden sollen (was sehr wohl zusammen mit /A benutzt werden kann, wenn /UM ebenfalls angegeben wurde)
  • /M um den Sicherungstyp auszuwählen (Volles oder inkrementielles Backup)
  • /UM um NTBACKUP im "Unmanaged"-Modus zu betreiben (nicht das erstbeste Band formatieren und benutzen, wie die Dokumentation es beschreibt)

Schaut euch BLAT an

Ihr müsst heute ziemlich viel umherschauen, hm? Blat ist ein Public Domain Kommandozeilen-SMTP-Client für Windows XP/2000/NT/9x. Er kann für die Kommandozeile und in Skripts und Batches benutzt werden. Wir brauchen ihn, um unseren Bericht am Ende des Backups per Mail zu verschicken. Ihr werdet es installieren und vorkonfigurieren (insbesondere das SMTP-Relay setzen) müssen, damit es für euch E-Mail weiterleitet.

Erstellt und speichert die Sicherungsauswahl (BKS-Datei)

Ihr müsst noch festlegen, was ihr eigentlich sichern wollt. Dafür werdet ihr wahrscheinlich NTBACKUP interaktiv starten, einige Verzeichnisse an/abwählen, vielleicht noch den Systemstatus und den Exchange Information Store hinzunehmen und die Auswahl irgendwo in einer BKS-Datei speichern. Die BKS-Datei ist eine ASCII-Datei, die die Namen der gewählten Verzeichnisse im Klartext enthält - öffnet die Datei mit Notepad und prüft, ob alles wie gewünscht aufgeführt ist.

Skripterstellung

Ich starte mit dem Skript für das Vollbackup, das ich "backup-f.bat" nenne und im Verzeichnis "c:\backup" platziere. Natürlich könnt ihr auch ein beliebiges anderes Verzeichnis wählen, wenn ihr nur den Wert für OurLogPath im Skript entsprechend anpasst. Was das Skript tut, ist recht offensichtlich: es benutzt RSM.EXE, um zu prüfen, ob das Medium im Laufwerk mit der GUID %TapeLibGUID% neu/leer, zum "Pool freier Medien" oder zum Pool "Full" gehört. Wenn ja, dann startet der Backup-Vorgang. Wenn nicht, dann wirft es einen Fehler und endet (ihr könntet an dieser Stelle auch das eingelegte Band auswerfen lassen, ich würde vorschlagen, es nicht zu tun). Es schreibt, was es tut, in die Logdatei %logfile%, schnappt sich nach Ende der Sicherung die Logdatei von NTBACKUP, indem es die letzte veränderte Logdatei sucht, und sendet anschließend beides per Mail an %BackupOperator%.

Ihr findet das vollständige Listing von backup-f.bat hier
Das Skript für das inkrementielle Backup heißt "backup-i.bat". Es ist dem Skript für das Vollbackup recht ähnlich, außer dass es nur Medien aus dem Pool "Incremental" akzeptiert und wenn es auf ein "Freies Medium" trifft, dieses erst initialisiert und in den Pool "Incremental" verschoben wird, bevor der Sicherungsvorgang fortgesetzt wird.
Ihr findet das vollständige Listing von backup-i.bat hier

Skripts anpassen

"Was muss ich denn da anpassen?" - die Antwort ist einfach - fast alles, was in den ersten Zeilen des Skripts auftaucht.
Ihr werdet alle GUID-Werte entsprechend eurer eigenen Installation setzen müssen (erinnert ihr euch an die GUIDs die ihr gesammelt habt?) Außerdem werdet ihr mit Sicherheit den Wert von %BackupOperator% auf eine andere E-Mail-Adresse setzen wollen :-) Außerdem solltet ihr den vollständigen Pfad samt Dateinamen der BKS-Datei, die ihr vorher erstellt habt, angeben und könntet den Pfad für %OurLogDir% ändern. Wenn ihr nicht die deutsche Version von Windows 2000 benutzt oder den Pfad für LocalAppData für den Benutzer geändert habt, der das Backup ausführt, dann werdet ihr auch %BackupLogDir% anpassen müssen, damit die Logdateien von NTBACKUP auch aufgefunden werden. Die Zusammensetzung des Wertes von %date% wird schief gehen, wenn euer "date"-Befehl das Datum im US-Format zurückliefert - passt die Delimeter und die Parameterreihenfolge entsprechend an, um dies abzufangen.
Wenn ihr mehr als ein Sicherungslaufwerk einsetzen wollt, werden die Skripts stellenweise einige weitere Änderungen brauchen.

Skripts testen

Natürlich werdet ihr die Skripts erst in eurer Umgebung testen müssen, bevor ihr sie produktiv laufen last. Überprüft insbesondere, ob alle Werte (GUIDs, Pfade etc) geändert worden sind und eurer Umgebung entsprechen und ob das Backup wie gewünscht funktioniert.

Backups planen

Vergesst nicht, backup-i zur Ausführung am Montag, Dienstag, Mittwoch und Donnerstag und backup-f entsprechend am Freitag einzuplanen.

Seid glücklich

Hoffentlich ist es alles, was ihr braucht, um eine flexible, aber weitesgehend selbstlaufende Backup-Lösung aufzusetzen.

Zusätzliche Fragen

Zusätzliche Fragen

Gibt es bei der Benutzung von RSM und NTBACKUP  irgendwelche Fallen?

Ja, es gibt welche. Wenn ihr NTBACKUP nicht "unmanaged" laufen lassen wollt, wie ich es in den Skripts gemacht habe, und stattdessen einen Mediennamen oder gar die GUID des Mediums mitgeben wollt, dass es ziehen soll, könntet ihr auf diverse Probleme stoßen.
Zunächst einmal ist der Medienname, den NTBACKUP mit dem /T-Parameter erwartet, nicht derselbe Name, wie von RSM.EXE zurückgeliefert. Vielmehr ist es der Name, der von RSM.EXE zurückgeliefert wird, bei dem die letzten Zeichen (die eine Art Zähler darstellen sollen) abgeschnitten wurden. NTBACKUP wird also den Namen "MeinBand - 1" nicht mögen und nur "MeinBand" als gültigen Mediennamen akzeptieren.
Zum Anderen, wenn ihr schlau seid und statt des Namens den Parameter /G zusammen mit der Medien-GUID angebt, stößt ihr auf das Problem, dass NTBACKUP die GUID nicht in dem Format akzeptiert, das von RSM.EXE zurückgegeben wird. Die GUID ist eine 16-Byte-Nummer in Hexadezimaldarstellung. Das RSM.EXE-Ausgabeformat sieht für die GUID keine Trenner vor, NTBACKUP hingegen erwartet die GUID im "verschönerten" Format "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", bei dem "X" ein hexadezimalzeichen repräsentiert.

Warum benutzt du NTBACKUP, um ein inkrementielles Band zu initialisieren und es in den Pool "Incremental" zu verschieben?

Ganz einfach - es gibt keine Möglichkeit, dies mit RSM.EXE zu tun. Es kann kein Medium aus einem Pool in ein anderes verschieben - zumindest nicht unter Windows 2000. Die Initialisierung des Mediums muss aber ohnehin mit NTBACKUP stattfinden, denn die Applikation muss das Medium als "zu ihr zugehörig" kennzeichnen. Ich mache dafür ein "Vollbackup" der Datei C:\BOOT.INI - es ist eine kleine Datei und sie wird wahrscheinlich in jedem Setup vorhanden sein.

Ist das ein gutes Tier?

In einem gewissen Rahmen ist es das. Aber die Möglichkeiten für Logging sind sehr beschränkt. Es wird sogar noch schlimmer, denn NTBACKUP wird unter bestimmten Bedingungen auch dann ein ERRORLEVEL von 0 zurückliefern, wenn es eigentlich nach einem kritischen Fehler abbrach und nichts gesichert hat.
Alles in allem, wenn ihr euch wirklich auf eure Backups verlassen müsst, solltet ihr in ein professionelles Sicherungssystem mit Möglichkeiten zur Desaster Recovery investieren, die Backups immer überwachen und die Medien und Sicherungslaufwerke von Leuten bedienen und überwachen lassen, die über ausreichenden Kenntnisstand verfügen, um Fehler und Ungereimtheiten zu erkennen.

Wie sichere ich offene Dateien?

Ihr könnt es genauso machen, wie in den guten alten Zeiten unter NT4 - setzt den Wert "Backup Files InUse" (REG_SZ) in HKEY_CURRENT_USER\Software\Microsoft\Ntbackup\Backup Engine auf "1" wie in 159218 beschrieben. Bedenkt dabei, dass auch wenn ihr die Datei auf Band habt, diese womöglich in sich inkonsistentent ist. Wenn es eine Datenbank war, die zum Zeitpunkt der Sicherung benutzt wurde, ist die Sicherungskopie höchstwahrscheinlich unbenutzbar und damit wertlos.

Wie sichere ich einen SQL-Server

Die Sicherung des SQL-Servers ist eine Wissenschaft für sich, insbesondere wenn ihr nicht mit Datenbankadministration vertraut seid. Der konkrete Ablauf wird auch von der Version des SQL-Servers abhängen, die ihr benutzt, aber im Groben ist das Prozedere immer ähnlich. Schaut euch "Backing up and restoring databases" aus der MS SQL Server Dokumentation für Details an.


Feedback

Ihr könnt mir an
dj at syneticon dot net
gerne Korrekturen und Feedback senden,
ob positiv oder negativ.

Credits

Dank an die 2003 Microsoft MVPs - ihr haltet mich bei Laune. Danke auch an Wolfgang Gode vom Microsoft PSS Team, der mir den wichtigen Hinweis auf die inkorrekte NTBACKUP-Dokumentation gab.
Denis Jedig, syneticon GbR, 2003-05-06


  Home | Kontakt | Sitemap

   © 2002-2007 Syneticon Networks. Alle Rechte vorbehalten. | Datenschutzerklärung