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:
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.
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.
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.
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.