Mit den Tipps und Workshops im ADMIN-Magazin 03/2013 sichern Administratoren ihre Webserver und Netze gegen Angriffe ab: gegen Abhören sensibler Informationen, ... (mehr)

In der Praxis: ein Mirrored Pool

Nach soviel Theorie widmet sich der restliche Artikel dem praktischen Einsatz von ZFS unter FreeBSD. Zunächst soll ein so genannter Mirrored Pool (Hardware-RAID Typ 1) entstehen. Dabei sind die einzelnen Datenträger so kombiniert, dass die Daten gespiegelt werden. Im folgenden Beispiel sind dies die zweite ( »ada1« ) und dritte ( »ada2« ) Festplatte. Der Befehl hierzu lautet:

zpool create daten mirror ada1 ada2

Der nächste Schritt erstellt das Dateisystem für das Verzeichnis »home« und mountet es in »/home« :

zfs create daten/home
zfs set mountpoint=/home daten/home

Nun lassen sich für die einzelnen Benutzer die Datensätze für die Home-Verzeichnisse erstellen. Die Eigenschaften von »daten/home« werden dabei an die neuen Mountpoints weitergegeben.

zfs create daten/home/user_a
zfs create daten/home/user_b
zfs create daten/home/user_c

Die angelegten Home-Directories lassen sich sofort benutzen, da keine Formatierung notwendig ist. Wenn man nach einer gewissen Zeit feststellt, dass der Platz knapp wird, lassen sich Platten hinzufügen. Der folgende Befehl nimmt die vierte ( »ada3« ) und die fünfte ( »ada4« ) Festplatte in den Pool auf:

zpool add daten mirror ada3 ada4

Diese Aktion lässt sich während des Betriebs durchführen, während die User davon kaum etwas bemerken. Dazu muss die Hardware natürlich den Einbau im laufenden Betrieb unterstützen (Hot Swap).

Freigaben für NFS lassen sich ebenso einfach und unkompliziert erstellen. Zum Beispiel sollen alle Datasets mit den Home Directories im Netzwerk für NFS freigegeben werden:

zfs set sharenfs=rw daten/home

Wie bereits erwähnt, nutzt die FreeBSD-Version von ZFS den vorhandenen NFS-Daemon. Die Informationen über die einzelnen NFS-Shares finden sich in der Datei »/etc/exports« . Den NFS-Daemon veranlasst das Signal »SIG_HUP« dazu, sie neu einzulesen.

Komprimiert

Quotas und Kompression sind interessante Merkmale von ZFS. So läßt sich für den gesamten Pool die Kompression einschalten. Als Algorithmus dient in diesem Beispiel LZJB:

zfs set compression=lzjb daten

Die Kompression lässt sich optional aber auch für ein einzelnes Dataset konfigurieren:

zfs set compression=lzjb daten/user_a

Quotas kann der Administrator ebenso für den gesamten Pool setzen, wie für den einzelnen Datensatz. Der User »user_b« bekommt im Beispiel 10 GByte und der User »user_c« bekommt 20 GByte Speicherplatz, dessen Kapazität garantiert ist:

zfs set quota=10g daten/home/user_b
zfs set reservation=20g daten/home/user_c

Das wohl mit Abstand wichtigste Merkmal sind Snapshots. Die einzelnen Snapshots sind im Verzeichnis »${HOME}/.zfs« zu finden, wenn sie für den jeweiligen Benutzer angelegt wurden. Einen Snapshot für den Benutzer »user_a« für Donnerstag erzeugt

zfs snapshot daten/home/user_a@donnerstag

Hat der Benutzer »user_a« versehentlich wichtige Dateien vom Vortag (Dienstag) gelöscht, lassen sie sich mit einem Rollback schnell wieder herstellen:

zfs rollback daten/home/user_a@dienstag

Wenn in regelmäßigen Abständen Snapshots erzeugt wurden, hat der Anwender auch die Möglichkeit, alte Versionen seiner Dateien einzusehen:

cat ~user_a/.zfs/snapshot/ donnerstag/bild.odg

Alle jemals angelegten Snapshots lassen sich so anzeigen:

zfs list -t snapshot
NAME USED  AVAIL REFER  MOUNTPOINT
daten/home/user_a@donnerstag 0  - 780M   -
daten/home/user_a@dienstag   0  - 1.01G  -

Ein ZPool muss aus dem System ausgehängt werden, bevor er in Form seiner Festplatten in eine andere FreeBSD-Maschine eingebaut wird. Bei einem System-Shutdown wird dieses Kommando auch ausgeführt. Das Aushängen geschieht mit

zpool export daten

Daraufhin werden die Konfiguration, die Puffer und alle Datensätze ausgehängt. Außerdem wird der Pool geschlossen. Um den Pool beispielsweise beim Systemstart wieder für das System verfügbar zu machen, dient folgende Sequenz:

zpool import daten

Wenn man keinen ZPool angibt, listet der Befehl alle Pools auf.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023