Die Aufgabe welche es zu lösen galt:
Nicht nur die Festplatten werden immer größer, auch die Anzahl der Dateien und Verzeichnisse wächst beständig. Zwar werden die Festplatten immer schneller, doch irgendwann kommt für ein System der Zeitpunkt, an dem es problematisch wird.
Bei einem meiner Kunden werden seit 2003 Daten erfasst. Die Lösung über die Jahre war immer, die zentrale Festplatte durch eine neue größere zu ersetzen. Diese Lösung erschien günstiger als die Individual Software zu überarbeiten, welche die Daten ablegt oder zur Verfügung stellt.
Die Alternative wäre, diese Individual Software Anwendung so zu erweitern, das sie mehrere Laufwerke für die Datenspeicherung verwendet.
Was ist passiert? Das Sicherungskonzept für die Festplatten versagte. Es wurde zu Anfang eine Anwendung wie File Sync verwendet. Diese Anwendung hatte den kleinen Nachteil, dass es jedes gefundene Verzeichnis und alle Dateien nach dem Abgleichvorgang in einer Liste anzeigte. Der Crash erfolgte aus einem sehr simplen Grund. Eine Anwendung erhält maximal 2 GB Arbeitsspeicher. Diese Anwendung benötigte bei belegten Festplatten mehr Arbeitsspeicher als die verfügbaren 2 GB.
Zudem gab es ein weiteres Problem. Diese Menge an Einträgen wurde im Speicher verwaltet. Die Anwendung verwendete keine spezielle Logik, um dann mit einer solchen Menge von Daten umgehen zu können. Daher dauerte der reine Abgleichvorgang recht lange, zuletzt etwa 8 Stunden.
Da man aber nicht auf ein Backup der Daten verzichten konnte, war hier eine Lösung gefragt.
Kopieren von Terabytes von Daten
In den Anfängen, da wir noch von 500 GB Daten sprechen, war die Hochrüstung einer Datenfestplatte von 500 GB auf 1TB noch einfach an einem Wochenende möglich. Das System ging Freitagabend vom Netz. Die Daten wurden übers Wochenende auf die neue Festplatte kopiert und Montagmorgen ging das System wieder ans Netz.
Aktuell sind wir bei einer 3TB großen Platte angekommen, welche zu 75% voll ist. Die Anzahl der Dateien und Verzeichnisse auf eine Sicherungsplatte zu übertragen, benötigt über 36 Stunden. Ein normaler Kopiervorgang scheidet hier also aus Zeitgründen für eine tägliche Sicherung völlig aus.
Aktuell sind wir bei einer 3TB großen Platte angekommen, welche zu 75% voll ist. Die Dateien und Verzeichnisse auf eine Sicherungsplatte zu übertragen benötigt über 36 Stunden. Ein normaler Kopiervorgang scheidet hier also für eine tägliche Sicherung aus Zeitgründen völlig aus.
Eine der wichtigsten Erkenntnisse war, wenn man eine Liste der Unterschiede benötigt, darf diese Liste nicht mehr als den vorhandenen Arbeitsspeicher benötigen.
Lösung mit CvO File Sync:
Daher wurde CvO File Sync mit einer entsprechenden Option ausgestattet, nur die Unterschiede zu erfassen. Positive Vergleiche wurden somit nicht aufgenommen und sparten Arbeitsspeicher.
Die Laufzeit des Abgleichs ist von zwei Faktoren abhängig. Zum einen die reine Verarbeitung - einlesen der Verzeichnisse Pfad 1 und einlesen der Verzeichnisse Pfad 2. Hier dauert der Vorgang eine Zeit X. Zu Beginn des Abgleichs kostet diese Verarbeitung den Hauptanteil der Zeit.
Wird nun eine umfangreiche Liste im Arbeitsspeicher vorgehalten, verlängert sich die Zeit um weitere Einträge an die Liste anzuhängen. Intern wurde hier ein einfacher .NET DataTable verwendet. Mit wachsender Anzahl von Datensätzen war irgendwann ein Punkt erreicht, der mehr Verarbeitungszeit für das Aufnehmen eines Datensatzes in die Liste, als das Lesen der Verzeichnisse kostete. Eine interessante Beobachtung, die Anzahl der Datensätze war so groß, das hier sehr lange Zeiten gemessen werden konnten.
Der Trick, mit der Aufnahme nur der Unterschiede brachte hier in doppelter Hinsicht Vorteile. Der Bedarf an Arbeitsspeicher war geringer und vor allem konnte ein Vergleich erheblich schneller durchgeführt werden. Eine Datenmenge die zu kopieren über 24 Stunden dauerte, konnte mit CvO File Sync dann in einer Stunde verglichen werden.
In diesem Falle waren die Unterschiede eher gering. In den allermeisten Fällen kommen nur neue Dateien auf dem aktiven System hinzu. Die Individual Software Anwendung hat einen Dokument-Verwaltungs-Charakter, der ein Löschen von Dokumenten nicht erlaubt. Nur in temporären Zwischenspeichern kann es zu Löschvorgängen kommen. Dokumente werden versioniert, aber niemals gelöscht. Somit kann immer nachvollzogen werden, was in einem Dokument verändert wurde.