ubuntuusers.de

ubuntuusers.deWikiBaustelleZFS on Linux

ZFS on Linux

Artikel in Arbeit

Dieser Artikel wird momentan von aasche erstellt. Als Fertigstellungsdatum wurde der 11.11.2013 angegeben.


Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./zfs_logo.png War es in der Vergangenheit nur mit FUSE möglich, dass Dateisystem ZFS unter GNU/Linux zu nutzen, so wird seit Anfang 2011 aktiv daran gearbeitet, die native Integration in den Kernel voranzutreiben. Federführend ist dabei das Lawrence Livermore National Laboratory (LLNL) im Auftrag des amerikanischen Verteidigungsministeriums. Die offizielle Projektseite ist über ZFS on Linux {en} zu erreichen.

Grundlage der Portierung ist die ZFS-Version 28. Damit ist die Kompatibilität mit Solaris 10, OpenSolaris, OpenIndiana und FreeBSD gegeben. Solaris 11 als Nachfolger von OpenSolaris verwendet dagegen Version 31 (Stand: April 2012).

Die Vorteile von ZFS kommen auf einem normalen Desktop-System nicht zur Geltung. Es werden beispielsweise 4 GiB oder mehr freier (!) Arbeitsspeicher empfohlen. Fortgeschrittene Funktionen wie Kompression und Deduplikation erfordern noch mehr (ab 16 GiB). Erst der Einsatz im Server-Bereich und in Rechenzentren liefert sinnvolle Nutzungsmöglichkeiten zur effizienten Verwaltung sehr großer Datenmengen. Eine andere, praxisnähere Möglichkeit bieten die Distributionen FreeNAS (ab Version 8.x) und NAS4Free {en}, mit denen man sich einen dezidierten Dateiserver inkl. ZFS bauen kann.

Von den unter Linux verfügbaren Dateisystemen kann nur das btrfs ZFS in Teilbereichen Paroli bieten. Allerdings spricht gegen das jüngere btrfs der immer noch experimentelle Status und damit deutlich geringere Praxiserfahrungen (siehe auch die Artikel-Serie zum Btrfs-Dateisystem).

Anfang April 2013 hat ZFS on Linux offiziell das Entwicklungsstadium verlassen und wird nun auch für den Einsatz auf Produktivsystemen empfohlen.

Installation

ZFS ist kein offizieller Bestandteil von Ubuntu und daher auch nicht in den offiziellen Paketquellen enthalten. Stattdessen kann man die "Personal Package Archive" (PPAs) des Launchpad-Projekts zfs {en} nutzen oder den Quelltext selbst kompilieren (zu letzterem siehe Links).

PPA

Es gibt zwei "Personal Package Archive" (PPA) [1] für ZFS. Das "stable" PPA ist für die reine Nutzung von ZFS ausreichend.

stable

Adresszeile zum Hinzufügen des PPAs:

  • ppa:zfs-native/stable

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der Wiki/Vorlagen/PPA/ppa.png PPA-Beschreibung des Eigentümers/Teams zfs-native zu entnehmen.

Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.

Nach dem Aktualisieren der Paketquellen kann das folgende Paket installiert [2] werden:

  • ubuntu-zfs (ppa)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install ubuntu-zfs 

sudo aptitude install ubuntu-zfs 

Nun wird automatisch

  • der aktuelle Quellcode heruntergeladen und

  • mit Hilfe von DKMS kompiliert

daily

Für Entwickler geeignet ist das folgende PPA:

Adresszeile zum Hinzufügen des PPAs:

  • ppa:zfs-native/daily

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der Wiki/Vorlagen/PPA/ppa.png PPA-Beschreibung des Eigentümers/Teams zfs-native zu entnehmen.

Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.

Die Installation erfolgt wie oben angegeben.

ZFS und init.d

ToDo: ist dieser Abschnitt noch aktuell?

Nach der Installation wird zfs bei jedem Rechnerstart als Dienst über /etc/init.d/zfs geladen. Das Problem dabei ist allerdings, dass

  1. zfs Teil des Dateisystem ist

  2. Init- und Upstart-Jobs mit großer Wahrscheinlichkeit früher oder später von den durch zfs verwalteten Dateisystemen abhängig sind. Trotzdem werden diese in der Standardeinstellung teilweise vor zfs ausgeführt. Es ist daher wichtig, zfs beim Booten wie ein lokales Dateisystem zu behandeln.

Dazu muss man es zur Gruppe "$local_fs" hinzufügen. Dazu erstellt man die Datei /etc/insserv.conf.d/zfsload mit folgendem Inhalt:

$local_fs zfsload

Danach einfach sudo insserv ausführen und zfs wird von allen Init- und Upstart-Jobs wie ein lokales Dateisystem gestartet.

ToDo:

Q: How do I automatically mount ZFS file systems during startup?

A: If you are using the Ubuntu PPA, auto mounting and auto unmounting features are configured in the /etc/default/zfs configuration file. Just edit the values of ZFS_MOUNT and ZFS_UNMOUNT in the file to other than the default value (a blank string).

Beispiel:

cat /etc/default/zfs 
# Automatically run `zfs mount -a` at system startup if set non-empty.
ZFS_MOUNT='yes'

# Automatically run `zfs unmount -a` at system shutdown if set non-empty.
ZFS_UNMOUNT='yes'

GRUB 2

Das Booten von einer mit ZFS formatierten Festplatte funktioniert nur mit einer modifizierten Version von GRUB 2 (diese ist ebenfalls über ein PPA erhältlich). Außerdem ist es erforderlich, eine eigene Partition /boot anzulegen. Die ausführliche Anleitung HOWTO install Ubuntu to a Native ZFS Root Filesystem {en} liefert weitere Details.

Verwendung

Über die Nutzung von ZFS mit seinen zahlreichen Möglichkeiten lassen sich ganze Bücher schreiben. Wer sich für die Materie interessiert, sei auf die sehr gute ZFS-Dokumentation verwiesen (siehe unten). Diese liegt allerdings durchgehend auf Englisch vor, Quellen auf Deutsch sind extrem selten. Grafische Konfigurationswerkzeuge sind ebenfalls nicht vorhanden.

An dieser Stelle daher nur ein kleines Beispiel. Um einen "zpool" anzulegen, der aus 3 Festplatten besteht, genügt folgender Befehl:

sudo zpool create -f daten /dev/sdb /dev/sdc /dev/sdd 

Hinweis:

Wenn man eine Festplatte verwendet, die intern 4096B-Sektoren verwendet, nach außen aber 512B-Sektoren vorgibt (beispielsweise bestimmte WD Green-Platten), so muss zusätzlich die Option -o ashift=12 angegeben werden. Dann verwendet auch ZFS 4096B-Sektoren. Passen die Sektorgrößen von Platte und ZFS nicht zusammen, sind deutliche Performanceeinbußen die Folge. Es genügt nicht, die Partitionen korrekt auszurichten. Eine nachträgliche Änderung ist praktisch nur durch Neuanlage des Pools möglich.

Alle Pools können mit den Befehlen "zpool" und "zfs" verwaltet werden:

sudo zpool status 
  pool: daten
 state: ONLINE
 scan: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	daten       ONLINE       0     0     0
	  raidz1-0  ONLINE       0     0     0
	    sdb1    ONLINE       0     0     0
	    sdc1    ONLINE       0     0     0
	    sdd1    ONLINE       0     0     0

errors: No known data errors
sudo zfs list 
NAME    USED  AVAIL  REFER  MOUNTPOINT
daten  85.5K   147G    21K  /daten

Wie man sieht, wird der "Pool" direkt nach /daten gemountet.

Informationen zur Version etc. kann man mit folgendem Befehl anzeigen lassen:

sudo zpool upgrade -v 
This system is currently running ZFS pool version 28.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
 11  Improved scrub performance
 12  Snapshot properties
 13  snapused property
 14  passthrough-x aclinherit
 15  user/group space accounting
 16  stmf property support
 17  Triple-parity RAID-Z
 18  Snapshot user holds
 19  Log device removal
 20  Compression using zle (zero-length encoding)
 21  Deduplication
 22  Received properties
 23  Slim ZIL
 24  System attributes
 25  Improved scrub stats
 26  Improved snapshot deletion performance
 27  Improved snapshot creation performance
 28  Multiple vdev replacements

For more information on a particular version, including supported releases,
see the ZFS Administration Guide.

Diese Revision wurde am 12. April 2013 00:15 von aasche erstellt.