In der letzten Woche wurde ich von einem jungen Kollegen auf den Volume-Shadow-Copy-Service von Windows-Betriebssystemen angesprochen und die Funktion, die diese “Schattenkopien” im Backupvorgang übernehmen können. Er meinte VSS würde für ein konsistentes Backup sorgen. Dieser Aussage musste ich widersprechen. Diese Meinung ist jedoch verbreitet und daher soll dieser Artikel etwas zur Aufklärung beitragen.

Was machen “Volumen-Schattenkopien”?

Eine Volumen-Schattenkopie friert den Zustand eines Volumes, also einer Festplattenpartition oder, einfacher ausgedrückt, eines Windows-Laufwerks quasi ein. Ein Programm kann damit auf diesen eingefrorenen Zustand zugreifen während andere Programme weiter das Laufwerk bearbeiten und die Daten auf dem Laufwerk verändern: Der eingefrorene Zustand bleibt erhalten.

Beim Einfrieren werden alle Programme, die es interessiert und die sich vorher beim VSS, dem Volume-Shadow-Copy-Service, registriert haben, informiert und bekommen die Möglichkeit, noch Daten fertig zu schreiben. Auf diese Weise sind die Daten in einer Schattenkopie in einem definierten Zustand, also in einer Form, die die schreibenden Programme veranlasst haben.

Welche prinzipiellen Probleme haben Backups?

Backups haben ein prinzipielles Problem: sie dauern Zeit. Je nachdem wie groß die Datenmengen sind, vergehen vom Start bis zum Ende des Backups Sekunden, Minuten oder viele Stunden. Wird in dieser Zeit von Programmen weiter gearbeitet, so werden auch Daten verändert. Es kann also sein, dass das Backup bei den Daten vorne schon fertig ist, dann jedoch Daten verändert werden und dann erst das Ende gesichert wird. Bei einem Text ist vielleicht störend aber harmlos, bei Datenbanken jedoch ein großes Problem: Stellen Sie sich eine Überweisung vor: Geld wird in einem Schritt von einem Konto weggenommen und in einem zweiten Schritt auf ein anderes Konto aufgebucht. Beide Schritte dürfen nur gemeinsam oder gar nicht ausgeführt werden, sonst wird Geld erfunden oder vernichtet. Steht nun das zweite Konto vorne in unserer Datenbank, dann ist diese Konto vielleicht schon auf Band gesichert, wenn es bebucht wird, das erste Konto, das hinten steht wird aber noch beschrieben und landet dann verändert in unserem Backup. Wird nun das Backup zurückgespielt, passen die Konten nicht zusammen. Und dieses Problem besteht prinzipiell bei allen Daten, die auf Systemen gespeichert und gesichert werden.

Wie schützt VSS vor diesen Problemen?

Dadurch, dass der VSS den Programmen vor dem Backup eine Nachricht zukommen lässt, können die Programme sicherstellen, dass Daten auf den Plattenspeichern konsistent sind. Unser Bankprogramm kann also beide Kontenbewegungen schreiben und dann dem VSS mitteilen, dass die Daten nun konsistent sind.

Wo sind die Grenzen von Volumen-Schattenkopien?

Die Grenzen bei Volumen-Schattenkopien liegen dort, wo die Programme mitspielen müssen: Es reicht eben nicht aus, dass das Betriebssystem die Festplatte zu einem Zeitpunkt einfriert: Es könnte ja sein, dass bisher nur eine der beiden Kontenbewegungen geschrieben wurden. Das Betriebssystem darf eben erst dann die Daten einfrieren, wenn die Programme einen konsistenten Zustand hergestellt haben.

Und wie ein konsistenter Zustand definiert ist, ist letztendlich Entscheidung des Programms. Gerade komplexe Datenbanksysteme arbeiten mit mehrstufigen Verfahren: Daten werden, wenn Sie geändert werden, nicht direkt auf der Festplatte geändert sondern erst im sehr viel schnelleren Hauptspeicher (RAM). Und werden komplexe Daten wie in unserem Beispiel geändert, so werden die auch die Zwischenschritte in sogenannten Transaktionsprotokollen z.B. als Vorher-Nachher-Zustand gespeichert. Für den Administrator bedeutet das, dass bei einem Backup einer Datenbankdatei ggf. die Datenbankdatei selbst trotz des Einsatzes von VSS in einem inkonsistenten Zustand sein kann. Nur in Verbindung mit der Berücksichtigung der Transaktionsprotokolle kann die Datei dann in einen konsistenten Zustand gebracht werden. Bei einem Rückspielen eines Backups ist es also häufig nicht mit dem reinen Rückspielen der Daten getan, vielmehr müssen vielfach weitere Schritte seitens des Administrators unternommen werden, um ein funktionsfähiges und konsistentes System zu gewährleisten.

Ausblick in die Komplexität

Extrem komplex wird eine Backupsituation dann, wenn ganze Serversysteme gesichert werden müssen, bei denen Daten ggf. über mehrere Server verteilt liegen. Denn hier ist das Problem der Inkonsistenz nicht auf einen Server beschränkt, sondern verteilt sich auf viele Systeme an vielen Standorten. Unter Umständen müssen ja sämtliche Systeme gleichzeitig “eingefroren” werden. Sie merken: Ein Backup ist nicht “mal eben” gemacht, sondern muss durchdacht und geplant werden.