Weekly Snap: ZFS on Linux, Updates on Debian, Speeches from OSDC 2011

20 – 24 June offered help on using ZFS on Linux and updating with Updian, as well as a few videos of presentations from the recent OSDC 2011.
Gunnar began by giving a thorough introduction to running a native ZFS on Linux. The file system cum logical volume manager boasts pool based memory usage, verifiable data integrity, snapshots and more features beyond other data systems on Linux. As ZFS source code’s license is not compatible with the Linux kernel, it must be separately installed with one of the two available ports. The 1st (http://zfs-fuse.net) is based on the FUSE kernel interface and cannot support all ZFS features, but offers an Ubuntu package. The 2nd (http://zfsonlinux.org) implements ZFS as a native kernel module, but not yet stable. Here, Gunnar provided an example of the 2nd port method, installing on Ubuntu.
Marcus followed with his tip for managing Debian web updates with Updian. The PHP tool replaces the tedium of manual updates, by checking the server via SSH for apt-get updates. It then updates the package list, presenting it on the web front end. From there, servers can be selected to join an update queue to be processed accordingly. Of course, Marcus didn’t forget to demonstrate an Updian installation too.
Last but not least, Rebecca posted a few speeches from OSDC 2011 online. Those who couldn’t join the Open Source Data Center Conference, can now view the videos of a handful of presentations. These include Bernd Erk’s on “Automation in the Data Center” and “Monitoring with Icinga”, Ken Barber’s on “Advanced Puppet” and Thomas Halinka’s on “GlusterFS”. All are available from the OSDC website. Don’t miss the next event – register now for the upcoming Open Source Monitoring Conference on 29 – 30 November at special early bird rates till 15 August.

Natives ZFS unter Linux

Was ist ZFS?

Das ZFS-Dateisystem wurde ursprünglich von Sun Microsystems zur Verwendung mit dem Solaris-Betriebssystem entwickelt. Seitdem wurde es auch auf weitere Betriebssysteme wie z.B. FreeBSD und Linux portiert.
ZFS unterstützt einige Features, die bisher bei anderen Dateisystemen unter Linux nicht verfügbar sind:

  • poolbasierte Speicherplatznutzung: ZFS erlaubt es, mehrere unabhängige Dateisysteme (“ZFS datasets”) zu erstellen, die gemeinsam den Speicherplatz eines einzelnen ZFS-Pools verwenden. Ein ZFS-Pool kann dabei unter Verwendung von Striping (RAID-0), Spiegelung (RAID-1) oder einer der RAID-Z-Level (mit einfacher, doppelter oder dreifacher Parität – ähnlich zu RAID-5 und RAID-6) aus mehreren Festplatten bestehen.
  • verifizierbare Datenintegrität: Mit Hilfe von Prüfsummen können fehlerhafte Datenblöcke frühzeitig erkannt werden, die durch defekte Festplatten, Kabel und andere Komponenten verursacht wurden. Derartige Fehler würden bei anderen Dateisystemen im Regelfall nicht erkannt werden. Die Integrität eines ZFS-Pools kann überprüft werden, während ZFS-Dateisysteme gemountet sind.
  • Kompression und Deduplikation: Dateien können transparent komprimiert werden, um Speicherplatz zu sparen. Zusätzlich können identische Datenblöcke durch Deduplikation eliminiert werden, um den Speicherverbrauch noch weiter zu verringern.
  • Snapshots: Haben Sie jemals versehentlich eine Datei gelöscht oder überschrieben? Mit Snapshots können Sie einfach ältere Versionen einer Datei wiederherstellen.

Eine umfangreichere Beschreibung von ZFS gibt es bei Wikipedia.

ZFS unter Ubuntu installieren

Da die Lizenz des ZFS-Sourcecodes nicht mit der des Linux-Kernels kompatibel ist, muss ZFS anhand einer der beiden verfügbaren Ports separat installiert werden:

  • Der erste Port basiert auf der FUSE-Kernelschnittstelle und läuft im Userspace. Dadurch unterstützt er nicht alle von ZFS angebotenen Features (z.B. ZFS-basierte Blockdevices, sogenannte “zvols”) und ist performancemäßig nicht auf dem gleichen Niveau wie andere native Dateisysteme. Die Website dieses Ports ist unter http://zfs-fuse.net/ zu finden. Außerdem gibt es hierfür Ubuntu-Pakete.
  • Der zweite Port implementiert ZFS als natives Kernel-Modul. Die aktuelle Entwicklungsarbeit ist darauf konzentriert, Stabilitätsprobleme zu beseitigen. Momentan ist dieser Port daher eher für Tests geeignet. Mehr Details gibt es unter http://zfsonlinux.org/.

In diesem Artikel werden wir den zweiten Port behandeln. Aufgrund der eventuell auftretenden Stabilitätsprobleme ist es empfehlenswert, ein Backup der Daten zu haben, die Sie auf dem ZFS-Pool speichern wollen.
Um ZFS zu installieren, müssen Sie zunächst auf Ihrer Ubuntu-Installation mit dem “apt-add-repository”-Befehl ein neues Paket-Repository eintragen.
Bei Ubuntu Server müssen Sie diesen Befehl erst installieren. Er ist im Paket “python-software-properties” enthalten:
$ sudo apt-get install python-software-properties
Danach können Sie Darik Horns ZFS PPA in Ihre APT-Konfiguration eintragen. Es beinhaltet aktuelle Ubuntu-Pakete für das ZFS-Kernelmodul und die Userspace-Utilities:
$ sudo apt-add-repository ppa:dajhorn/zfs
$ sudo apt-get update

Anschließend installieren Sie das Paket “ubuntu-zfs”. Über Paket-Abhängigkeiten werden alle weiteren benötigten Pakete installiert:
$ sudo apt-get install ubuntu-zfs
Dies kann einen Moment dauern, während das ZFS-Kernelmodul kompiliert wird.

Ihr erster ZFS-Pool

Nach der Installation können Sie Ihren ersten ZFS-Pool mit dem “zpool”-Befehl anlegen. Dieses Beispiel nimmt an, dass Sie zwei Festplatten (/dev/sdb und /dev/sdc) für den Pool verwenden wollen und ein Mirror (RAID-1) angelegt werden soll:
$ sudo zpool create tank mirror /dev/sdb /dev/sdc
$ sudo zpool status
pool: tank
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/dev/sdb ONLINE 0 0 0
/dev/sdc ONLINE 0 0 0
errors: No known data errors

Der neue zpool wird automatisch unter /tank gemountet. Damit er auch nach einem Reboot wieder gemountet wird, müssen Sie noch die Konfigurationsdatei /etc/default/zfs anpassen:
$ sudo nano /etc/default/zfs
Die ZFS_MOUNT-Option müssen Sie wie folgt anpassen:
ZFS_MOUNT='yes'
Weitere Informationen zur Erstellung und Verwendung von ZFS-Pools und zu den anderen Features von ZFS finden Sie in den Manual-Pages der “zpool”- und “zfs”-Befehle:
$ man zfs
$ man zpool