FogMirror - Online-Dokumentation


6 Verifizieren

Das Verifizieren ist ein wichtiger Bestandteil einer Datensicherung. Er stellt sicher, das die in die Sicherung enthaltenen Dateien auch fehlerfrei geschrieben wurden. Magnetband-Laufwerke zur Datensicherung haben dafür heute immer eine Hinterband-Kontrolle: Hinter dem Schreibkopf sitzt ein extra Lesekopf, mit dem die gerade auf das Band geschriebenen Daten sofort zurückgelesen und geprüpft werden.

Festplatten und USB-Sticks, egal welcher Bauart, besitzen keine soche Möglichkeit. Daher muss FogMirror die Prüfung expliziet vornehmen.

Nun ist das — wenig überraschend — nicht so einfach wie es klingt. Das grundlegende Problem sind Zwischenspeicher (Caches), welche die Daten beim Lesen zurückliefern, ohne das tatsächlich die Daten vom Ziel zurückgelesen werden. Dabei gilt es, zusätzlich die Technik der Sicherungs-Ziele zu unterscheiden:

  • Lokale Festplatten, USB-Sticks und dergleichen
  • Netzwerk-Ressource wie auf Servern liegende Pfade
  • FTP und WebDAV

6.1 Festplatten & USB-Sticks

Dieser Geräte-Typus unterliegt der (fast) vollständigen Kontrolle durch den Betriebssystem-Kern. Ein Betriebssystem-Kern ist der Teil der alle Hardware kontrolliert und reguliert. Er lässt sich nicht umgehen oder manipulieren (das versuchen nur Viren!). Dafür stellt er Funktionen bereit, mit der sich sein Verhalten in Grenzen anpassen lässt.

Der Betriebssystem-Kern verwaltet auch den Zwischenspeicher. Der Zwischenspeicher sorgt dafür, das die vielen einzelnen Dateizugriffe möglichst schnell abgewickelt werden und häufig gebrauchte Dateien erst gar nicht ein zweites Mal eingelesen werden müssen.

So ein Zwischenspeicher ist sehr komplex aufgebaut. Grundsätzlich muß dabei zwischen Schreib- und Lese-Vorgängen unterschieden werden. In beiden Fällen landen die Daten / Datei-Inhalte aber standardmäßig im Zwischenspeicher. In der Folge werden erst kürzlich geschriebene Dateien also aus dem Zwischenspeicher gelesen, was eine Verifikation dessen, was auf der Festplatte / dem USB-Stick angekommen ist, quasi unmöglich macht.

Es gibt aber zwei Strategien, die das Problem lösen.

Durch-Schreiben

Beim Schreiben der Dateien kann man den Betriebssystem-Kern anweisen, die Daten direkt auf den Datenträger zu schreiben, ohne diese (parallel) im Zwischenspeicher abzulegen.

Das funktioniert gut, ist aber elendig langsam. Insbesondere bei vielen kleinen Dateien müssen dann die Verwaltungsdaten (Verzeichnisseinträge der Dateinamen usw.) auch alle einzeln geschrieben werden. Einen Verzeichnisseintrag zu aktualisieren dauert in etwa so lange wie 10 Mega-Byte Daten zu schreiben.

Diese Methode ist also nicht wirklich geeignet.

Durch-Lesen

Beim Lesen von Dateien kann man ebenso die Verwendung des Zwischenspeichers ausschließen. Der Betriebssystem-Kern liefert dann die Daten so, wie sie von der Festplatte / von dem USB-Stick kommen.

Da beim Lesen keine Verwaltungsdaten geändert werden (und diese zusätzlich wieder zwischengespeichert werden), ist diese Variante zwar langsamer als das Lesen aus dem Zwischenspeicher, aber um einiges schneller als das Durch-Schreiben.

Strategie

FogMirror geht nun wie folgt vor.

  • Die Schreibvorgänge laufen wie gewohnt durch den Zwischenspeicher, womit die maximale Geschwindigkeit erreicht wird.
  • Nach dem letzten Schreiben wird ein Aus-Schreiben auf die Festplatte / den USB-Stick angefordert (File-Cache-Flush).
    Für Daten, die sich dann im Zwischenspeicher befinden aber noch nicht auf die Festlpatte / dem USB-Stick gschrieben wurden, wird dies nun gebündelt nachgeholt. Das kann einige Sekunden in Anspruch nehmen, ist aber immer noch um ein Vielfaches schneller, als bei einzelnen Schreibvorgängen.
  • Jetzt erst wird die eigentliche Verifikation (das Zurück-Lesen) gestartet, wobei der Zwischenspeicher nun außen vor gelassen wird, so das die Daten tatsächlich vom Gerät geholt werden müssen. Bei vielen kleinen Dateien läuft das natürlich wieder langsamer ab, da der Betriebssystem-Kern nicht vorausschauend Lesen darf.

Anmerkung: Ein Aus-Schreiben / File-Cache-Flush sorgt lediglich dafür, das alle ausstehenden Daten zügig geschrieben werden. Das bedeutet aber nicht, das die Daten aus dem Zwischenspeicher / File-Cache verschwinden! Deshalb reicht ein einfaches Zurück-Lesen nicht aus!

Grenzen

Nun hat nicht alleine der Betriebssystem-Kern Zwischenspeicher, die hierbei eine Rolle spielen. Auch die heutigen Festplatten und USB-Sticks haben Zwischenspeicher für Schreib- wie Lesevorgänge. Auf diese Zwischenspeicher hat in der Regel nicht einmal der Betriebssystem-Kern Einfluss.

Eine 100%-ige Sicherheit kann es daher nicht geben.

Allerdings haben alle leidlich modernen Geräte ein eigenes Management, das Fehler erkennen kann und auch korrigieren.

6.2 Datei-Server

Datei-Server sind autarke Geräte mit einem eigenen Betriebssystem-Kern.

Mir ist derzeit nicht bekannt, ob oder wie Windows-Server bzw. SAMBA-Server auf Aus-Schreiben-Anforderungen reagieren oder nicht. Gleiches gilt für das Lesen-ohne-Zwischenspeicher.

6.3 FTP & WebDAV

FTP- und WebDAV-Server agieren vollkommen autark. Daher gibt es keine Möglichkeit zu bestimmen, ob die gelieferten Daten aus einem Zwischenspeicher kommen oder doch von der Festplatte gelesen wurden.

Derzeit ist mir nicht einmal eine Möglichkeit bekannt, ein Aus-Schreiben anzufordern.

Allerdings ist die Wahrscheinlichkeit sehr hoch, das der Zwischenspeicher die ja eben erst gesendeten Dateien noch enthält und so zurück liefert.