Backups

Motivation

If data does not exist in at least three places, one of them offsite, it doesn’t exist. (Alex Lindsay?)

Mein letzter Datenverlust liegt schon viele Jahre zurück und geschah noch zu einer Zeit, als ich Computer fast nicht für produktive Zwecken einsetzte. Inzwischen hat sich das geändert, und nach rund zehn Jahren ohne Zwischenfälle wollte ich mein Glück nicht weiter auf die Probe stellen und habe ein vernünftiges Backup-System aufgesetzt, welches jetzt seit über drei Jahren zuverlässig seinen Dienst verrichtet. Im folgenden stelle ich diese Backup-Lösung näher vor.

Anforderungen

  • Zentrales Backup über Netzwerk (für mehrere Rechner)
  • Automatisierbarkeit
  • Sicherung/Archivierung nach dem Generationenprinzip

Konzept

Nach dem Generationenprinzip (auch bekannt als Großvater-Vater-Sohn-Prinzip) werden Sicherungen mit unterschiedlicher Dauer vorgehalten, der Abstand zwischen zwei noch vorhandenen Sicherungen nimmt also zu je weiter der Sicherungszeitpunkt in der Vergangenheit liegt. Damit können auch vor längerer Zeit gelöschte oder geänderte Daten, bei vergleichsweise moderatem Speicherbedarf, wiederhergestellt werden. Für meine Zwecke habe ich ein wöchentliches Backup-Intervall gewählt, wobei einmal im Quartal ein Vollbackup (“Großvater”, Lebensdauer zwei Jahre) erstellt wird. Einmal im Monat erfolgt eine differentielle Sicherung (“Vater”, Lebensdauer ein Jahr), an den verbleibenden wöchentlichen Terminen ein inkrementelles Backup (“Sohn”, Lebensdauer sechs Monate).

Als Sicherungsmedium werden Festplatten eingesetzt, ein RAID 1 (zwei Festplatten, gespiegelt) dient als Primärspeicher. Die Archivierung erfolgt auf zwei externen Festplatten (manuell gespiegelt, kein RAID). Da diese normalerweise nicht angeschlossen sind, wird die Archivierung nur im Monatsrhythmus ausgeführt, wodurch der Bedarf manueller Interaktion möglichst gering gehalten wird.

Realisierung

Als Basis wird ein Linux-Server mit Software-RAID für den Primärspeicher eingesetzt. Als Backup-Software kommt Bacula zum Einsatz, ein sehr flexibles Netzwerk-Backup-System . Bacula ist tendenziell eher für die Nutzung in deutlich größerem Maßstab (Firmen, Rechenzentren) ausgelegt und dementsprechend mächtig, aber auch leicht über externe Anwendungen/Shellscripte erweiterbar. Das Bacula-Backend (“Director” und “Storage-Daemon”) unterstützt neben Linux noch einige andere *nixe sowie Windows, der Client (“File-Daemon”) ist für fast jedes relevante Betriebssystem verfügbar. Zu Verwaltungszwecken nutzt der “Director” eine SQL-Datenbank, in meinem Fall eine PostgreSQL-Instanz.

Bacula bietet die Möglichkeit, bestehende Sicherungen zu einem neuen “virtuellen Vollbackup” zu verschmelzen. Anstelle einer langwierigen Vollsicherung  ist so nur eine schnelle inkrementelle Sicherung erforderlich, die dann mit früheren Backups zu einem neuen Vollbackup zusammengeführt wird. Aus diesem Grund werden ältere Sicherungen für ein Sicherungsintervall (Voll: fünf Monate, Differentiell: vier Monate, Inkrementell: fünf Wochen) auf dem Primärspeicher vorgehalten, ehe sie nur noch über den Archivspeicher verfügbar sind. Von den vier Vollsicherungen im Jahr werden drei als virtuelle Backups ausgeführt.

Die Nutzung virtueller Vollbackups interferiert leider mit der Archivfunktion von Bacula, diese Beschränkung ist aber durch einige Shellscripte zu umgehen.

Was fehlt

  • Festplatten können ihre Magnetisierung nach einigen Jahren verlieren. Als Gegenmaßnahme werden die Backup-Medien einmal jährlich manuell neu geschrieben. Ergänzend sollen Prüfsummen/Parity-Daten für die Sicherungsarchive hinzukommen, um gekippte Bits (insbesondere bei der Langzeitarchivierung) erkennen und korrigieren zu können. Mittelfristig plane ich eine Lösung auf der Basis von inotify und PAR2, da es anscheinend keine “normalen” Dateisysteme mit einer entsprechenden Funktionalität gibt.
  • Offsite-Speicherung. Eine der beiden externen Festplatten wird nach den Backups immer vollständig vom Backup-Server und der Stromversorgung getrennt. Eine echte Offsite-Lösung ist für meine Zwecke eher übertrieben, die Aufbewahrung in einem anderen Raum scheint mir ein geeigneter Kompromiss zu sein.

Schreibe einen Kommentar

Sofern nicht anders angegeben, stehen die Inhalte dieses Blogs unter der Lizenz
Creative Commons BY-NC-ND 3.0 Deutschland
Creative Commons Lizenzvertrag