Ich habe schon länger mit ZFS (an der Oberfläche) zu tun, da ich Privat ein FreeNAS einsetze. Jetzt wollte ich ZFS mal auf Linux einsetzen und testen und was soll ich sagen: Ich bin begeistert!
Dieser Blogeintrag soll einen ersten Einstieg bieten und für mich als Dokumentation dienen ;).
Warum ZFS? Ich habe mir in der Hetzner-Serverbörse einen kleinen Storage-Server für eine Nextcloud geklickt:
- 2x SSD 512GB (Für Betriebssystem, Webserver und die Nextcloud-Daten)
- 2x HDD 3TB (Für die abgelegten Daten der Nextcloud)
Installation Grundsystem
Das Grundsystem ist ein Standard Ubuntu 20.04 LTS, welches auf den SSDs (in einer RAID0 Konfiguration) installiert wurde.
Installation und Konfiguration ZFS
Erst mal ZFS installieren:
apt install zfsutils-linux
Nun möchte ich die zwei HDDs (/dev/sda und /dev/sdb) als zfs-mirror installieren:
zpool create storage mirror /dev/sda /dev/sdb
Fertig :). Ab jetzt kann man den Mirror unter /storage/ verwenden.
Da ich den Server zusammen mit ein paar Freunden verwende, möchte ich jedem sein eigenes Dataset. Dataset ist der generische Begriff für ein ZFS-Dateisystem, Volume, Snapshots oder Klone. Jedes Dataset besitzt einen eindeutigen Namen in der Form poolname/path@snapshot
. Die Wurzel des Pools ist technisch gesehen auch ein Dataset (Weitere Infos: https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/zfs-term.html)
zfs create storage/[name]
Anstelle von [name] einfach den jeweiligen Namen des Datasets angeben. Jetzt kann optional noch die Kompression aktiviert werden:
zfs set compression=lz4 storage/[name]
lz4 Compression kann ohne größere Geschwindigkeitsverluste für Lesen/Schreiben (bei modernen CPUs) eingesetzt werden. Die Anzeige der Compression-Ratio kann über folgenden Befehl erreicht werden:
zfs get compression,compressratio storage/[name]
Jedes Dataset soll eine quota bekommen:
zfs set quota=1G storage/[name]
Fertig ist die Config. Weitere Informationen könnt ihr hier finden: https://www.42u.ca/2016/11/23/zfs-cheat-sheet/#:~:text=Dataset%20%E2%80%93%20This%20is%20the%20file,on%20top%20of%20the%20zpool.&text=If%20you%20were%20to%20think,you%20would%20use%20a%20zvol.
Automatischen Scrub aktivieren
Bei einem ZFS scrub werden die Festplatten auf Fehler geprüft und eventuelle defekte Dateien repariert. Man sollte den Scrub regelmäßig (etwa einmal im Monat durchführen). Dazu einfach einen einen Eintrag in die Crontab (crontab -e) schreiben:
0 2 1 * * /sbin/zpool scrub files
Der Status des letzten Scrub ist über den Befehl
zpool status
zu erhalten.
Hi Timo,
wenn ich mich richtig erinnere bringt Ubuntu schon einen scrub-cronjob mit, du möchtest evtl. mal einen Blick in `/etc/cron.d/zfsutils-linux` werfen – der crontab-Eintrag wäre demnach redundant 🙂
Typo: „Jeders Dataset“ -r
Danke! Ist gefixt 🙂