Backups auf meinem Server

Ohje ohje, nun sind schon wieder Monate seit meinem letztem Eintrag vergangen und es wird daher mal wieder Zeit für einen neuen Eintrag.  Also dann mal los:

Diesmal möchte ich über das Thema sprechen, wie ich Backups auf meinem Server mache. Dazu benutze ich zwei verschiedene Methoden. Einmal verwende ich den guten alten dump Befehl um Sicherungen von den wichtigsten Laufwerken zu erstellen. Dazu habe ich mir ein Shell Script geschrieben, mit dem ich einmal pro Woche ein Level-0 Dump erstelle. Das Level-0 Dump ist eine komplette Sicherung des Dateisystems. Den Rest der Woche erstelle ich täglich ein Level-1 Dump, bei dem immer nur die Änderungen seit dem letzten Level-0 Dump gesichert werden. Die erstellten Dumps werden per rsync auf einen anderen Rechner kopiert.

Die benutzen Cronjobs:
# Level 0 Dumps erstellen
0       2       *       *       0       /root/Scripts/makeDumps.sh 0 > /dev/null
# Level 1 Dumps erstellen
0      1       *       *       1-6     /root/Scripts/makeDumps.sh 1 > /dev/null

Die andere Methode ist in Wirklichkeit kein Backup, den dort benutze ich die Snapshots von UFS2, dem Dateisystem von FreeBSD. Snapshots speichern den aktuellen Zustand des Dateisystem. Wenn nun z.B. Dateien gelöscht werden, bleiben diese immer noch im Dateisystem erhalten, solange noch ein Snapshots auf diese zeigt. Das Problem mit den Snapshots ist eben, dass sie ebenfalls im Dateisystem gespeichert werden, sollte nun ein Fehler im Dateisystem auftreten oder die Festplatte ausfallen, sind die Daten verloren. Aus diesem Grund sind Snapshots auch keine richtigen Backups und ich benutze sie auch nur bei meiner /home Partition. Die Daten die dort liegen, sind auch noch auf anderen Datenträgern vorhanden (externe HDD) und dumps von diesem Laufwerk würden einfach lange dauern und zu groß werden. Ich benutze Snapshots nur um versehentliches löschen von Daten zu vermeiden. Dazu habe ich ebenfalls ein kleines Ruby Script geschrieben. Damit das Script funktioniert muss die Konfigurationsdatei “snapshot.config“ existieren. Die Einträge sehen z.B. wie folgt aus: 

  /home,3;
  /data,2; 

Das bedeutet das z.B. von dem Dateisystem /home maximal 3 Snapshots erstellt werden.

Weitere gute Informationen und detailliertere Anleitungen über das Thema Datensicherung/Backups in BSD findet ihr im FreeBSD Handbuch und hier auch noch.

Über ZFS

Bei ZFS handelt es sich um ein relativ neues Dateisystem von Sun Microsystems. Ich hatte bereits vor einigen Jahren in einem Heise Online Artikel über ZFS gelesen und war damals sofort sehr angetan von diesem Dateisystem.

Das besondere an ZFS ist, dass es nicht nur ein Dateisystem ist, sondern auch noch gleich einen Volume-Manager integriert hat. Der Volume-Manager unsterstütz dabei RAID-0 (Daten werden gleichzeitig auf mehrere Platten aufgeteilt), RAID-1 (Mirroring) und RAID-Z. Bei RAID-Z handelt es sich um eine Art von RAID-5, bei dem auch eine Festplatte ausfallen darf. Ebenfalls kann durch den Volume-Manager die Dateisystemgröße, durch hinzufügen oder entfernen von Festplatten, während des Betriebes geändert werden.

Bei dem Dateisystem handelt es sich um ein 128-Bit Dateisystem und unterstützt daher riesige Partitionen bzw. Dateigrößen. Ebenfalls besitzt ZFS die Fähigkeit schnell und einfach Snapshots und Clones vom Dateisystem zu erstellen. ZFS ist zudem immer in einem konsistenten Zustand, benötigt daher kein Journal oder Filesystem-Checks. Eine weitere Fähigkeit von ZFS ist die Kompression.

Ich benutze ZFS nun seit einiger Zeit auf meinem File-Server (Betriebssystem: Solaris 10) zu Hause, auf dem ich zum größten Teil Backups meiner Rechner bzw. meines Servers lagere.

Besonders schön finde ich die Administration von ZFS, die wirklich sehr einfach und schnell zu lernen ist. Es geht wirklich sehr schnell einen Pool anzulegen und in diesen dann wiederum Dateisysteme zu erstellen. Für diese ganzen Aktionen sind nur zwei Programme notwendig: zpool und zfs. Um einen Eindruck über die Administration zu erhalten, empfehle ich einen Blick auf diesen Screencast zu werfen.

Besonders die Kompressionsfähigkeit von ZFS finde ich vorteilhaft für meinen File-Server. Zwar bremst die eingeschaltete Kompression etwas die Performance aber das Sparen von Speicherplatz ist mir auf meinem File-Server wichtiger. Genau aus diesem Grund habe ich mich dazu entschieden, zu testen wie gut in ZFS komprimiert wird. Ich habe habe das mit einer ca. 8MB großen Log-Datei und einem Ordner mit insgesamt etwa 33MB an verschiedenen Dateien getestet. Zum Vergleich habe ich die Dateien ebenfalls mit gzip und bzip2 komprimiert. Zusätzlich habe ich diese auch auf ein NTFS Laufwerk mit eingeschalteter Kompression kopiert, um auch Kompressionsraten von NTFS von denen mit ZFS zu vergleichen. Bei gzip und bzip2 wurden die Standardeinstellungen verwendet.

Die Ergebnisse:

Log-Datei
Mechanismus Größe Größe in %
ohne 8264kB 100%
ZFS 927kB 11,2%
NTFS 5184kB 62,7%
gzip 304kB 3,7%
bzip2 136kB 1,6%

 

Ordner mit Dateien
Mechanismus Größe Größe in %
ohne 33649kB 100%
ZFS 20153kB 59,9%
NTFS 22887kB 68,0%
gzip 8840kB 26,3%
bzip2 6336kB 18,8%

Wie zu erwarten war, hat ZFS gegen bzip2 und gzip keine Chance, was die Kompressionraten angeht, jedoch sind die Ergebnisse zufriedenstellend. Bei der Log-Datei hat ZFS besser komprimiert als bei dem Ordner mit mehreren Dateien. Eindeutiger Verlierer war NTFS, besonders bei der Log-Datei hat NTFS eine, im Vergleich zu den anderen Methoden, sehr schlechte Kompression erreicht. 

Fazit: Für meinen File-Server reicht die Kompression von ZFS aus, da sie einen guten Kompromiss aus Performance und Kompressionsrate liefert. Ich kopiere meine Backups meistens per rsync auf den File-Server, also nicht komprimiert und da ist die Kompression von ZFS sehr nützlich. Auch die Möglichkeit den Pool jederzeit durch den Einbau einer Platte zu vergrößern, ist ein großer Pluspunkt. Natürlich kann man das auch durch andere Systeme ermöglichen, wie z.B. unter Linux mit LVM, jedoch sind diese nicht so leicht und schnell zu konfigurieren wie ZFS. Daher ist ZFS für mich ein sehr gutes Dateisystem. Außer Solaris und OpenSolaris unterstützen mittlerweile auch andere Betriebssysteme ZFS.  So existiert in Mac OS X 10.5 bereits die Möglichkeit lesenden auf ZFS zuzugreifen und es wird in Zukunft bestimmt auch einen schreibenden Zugriff geben. FreeBSD besitzt seit Release 7.0 eine experimentelle Version von ZFS.

Mein neuer Server

Seit zwei Wochen habe ich hier zu Hause meinen neuen Server in Betrieb und deshalb möchte ich ein wenig über diesen berichten.

Meinen letzten Server habe ich vor etwa zwei Jahren wegen Altersschwäche außer Betrieb genommen. Ich habe mir danach keinen neuen Server eingerichtet, weil Strom auch nicht gerade billiger wurde. In dieser Zeit gab es aber doch den einen oder anderen Moment, in dem ich die Vorteile eines Servers sehr vermisst habe. 

Ich habe zwar seit längerem einen File-Server am Laufen, auf den ich meistens meine Backups von meinem PC und meinem MacBook Pro kopiere und andere Daten lagere. Der File-Server läuft aber nicht im Dauerbetrieb und ich schalte ihn nur dann an, wenn ich entweder Daten brauche oder Backups mache.

Vor einiger Zeit fing ich dann wieder an, mir Gedanken um einen neuen 24/7 Server zu machen. Dabei waren mir folgende Punkte sehr wichtig.

Der Server sollte …

  • … möglichst wenig Energie verbrauchen
  • … Leistungsstark genug sein, um alle Dienste zu bewältigen, die ich auf ihm laufen lassen möchte. Zu den Diensten gehören unter anderem: VPN-Server, Webserver + PHP, PostgreSQL Datenbank
  • … möglichst leise sein

Nach längerem hin und her, habe ich mich dann für das Mini-ITX Mainboard D945GCLF von Intel entschieden. Auf dem Board befindet sich ein Intel Atom Prozessor mit 1.6 GHz. Dieser Prozessor zeichnet sich besonders durch seinen sehr niedrigen Energieverbrauch aus. Das Board ist schnell genug für meine Anforderungen und ist dazu auch noch recht günstig. Zusammen mit dem Mainboard habe ich mir auch noch ein 1GB DDR2 RAM Riegel, eine 160GB 2,5″ Festplatte und ein kleines Barebone Gehäuse bestellt. Die 2.5″ Festplatte habe ich ebenfalls wegen dem geringeren Energieverbrauchs und Lärmentwicklung gewählt und mich daher gegen ein 3.5″ Modell entschieden. 

Als Betriebssystem setze ich auf meinem Server FreeBSD ein, im Gegensatz zu meinem damaligen Server, auf dem ich Debian GNU/Linux benutzt habe. An FreeBSD habe ich in letzter Zeit sehr viel Gefallen gefunden. Linux war toll um die ersten Schritte mit einem Unix ähnlichen Betriebssystem zu machen und dieses zu erforschen. Doch mit den wachsenden Erfahrungen, wurde für mich FreeBSD immer interessanter, da ich es als professioneller empfinde. FreeBSD hat den Ruf, sehr zuverlässig und stabil zu sein, was für einen Server ja bekanntlich immer gut ist. Auch die Entwicklung finde ich besser als bei Linux, da sie viel zentraler und übersichtlicher ist. Weitere Unterschiede zwischen BSD und Linux kann man hier nachlesen. Ebenfalls sehr zu empfehlen ist die Sendung von Chaosradio Express, die sich in der Ausgabe 48 sehr detailliert mit dem Thema FreeBSD beschäftigen.

Nun läuft mein Server seit zwei Wochen und ich bin sehr zufrieden. Der Energieverbrauch des Servers liegt bei etwa 35 – 40 Watt, was meiner Meinung sehr gut ist. Auch die Performance ist sehr gut, alle genutzten Dienste laufen super. Der einzige Kritikpunkt war die Lautstärke des Kühlers, der auf dem Mainbaord den Chipsatz kühlt. Dieser ist für seine Größe (40mm) sehr laut. Aber das Problem lies sich durch austauschen gegen ein leiseres Modell schnell beheben.

Veröffentlicht in FreeBSD, Server. Kommentar schreiben »