Grundsätzliches

Kurze Übersichten über die verfügbaren Befehle welche zur Verwaltung von ZFS Arrays benötigt werden

Pools

Pools auflisten

sudo zpool list
Neuen ZFS Pool auf einer einzelnen Festplatte erstellen:
sudo zpool create vol0 /dev/sd[x]

Der neu erstellte Pool wird automatisch unter  /[pool name] gemounted

Alle Datasets in einem Pool löschen

sudo zfs destroy -r [pool name] 

Pool löschen

sudo zpool destroy [pool name]
Festplattenstatus einsehen
sudo zpool status
Poolbalance einsehen
zpool list -v

Wird einem bestehendem Pool eine weitere Festplatte hinzugefügt, kann es passieren dass die Daten über alle Festplatten ungleichmäßig verteilt werden da ZFS kein automatisches Balancing betreibt.

Der einfachste Weg den Pool zu balancen wäre ein neues Dataset zu erstellen und alle Daten auf dieses zu verschieben und danach wieder zurück. 

Dies sollte jedoch nicht mit mv getan werden, da hierbei erst alle Daten kopiert und danach gelöscht werden - Der Speicherplatz könnte für dieses Verfahren nicht ausreichen! Besser ist es hierfür rsync zu verwenden da hierbei eine Datei nach der anderen verschoben wird und keine doppelte Belegung des Speicherplatzes entsteht

Scrubbing

Pool scrubben (Dateien auf Integrität prüfen)

sudo zpool scrub [pool name]

Den Fortschritt des Scrubbings kann man mit sudo zpool status einsehen

Datasets

Dataset erstellen

sudo zfs create [pool name]/[dataset name]

ZFS wird das neue Dataset automatisch unter /path/to/pool/[dataset name] mounten

Kaskadiertes Dataset erstellen
sudo zfs create [pool name]/[dataset name]/[descendent filesystem]

Alle Datasets und Pools auflisten

sudo zfs list

Dataset löschen

sudo zfs destroy [pool name]/[dataset name]

Ein Dataset kann nicht gelöscht werden solange noch Snapshots oder Klone dieses Datasets bestehen

Dataset Recordsize setzen

sudo zfs set recordsize=[size] pool/dataset/name

Die Recordsize muss mit der richtigen Einheit angegeben werden, bspw. 16k, 128k, 1M, 1G usw.

Dataset Recordsize abfragen

sudo zfs get recordsize pool/dataset/name

Snapshots

Snapshot eines Datasets anlegen

sudo zfs snapshot [pool]/[dataset name]@[snapshot name]

Snapshots auflisten

sudo zfs list -t snapshot

Snapshot umbenennen

sudo zfs rename [pool]/[dataset]@[old name] [new name]

Zu einem Snapshot zurückkehren / wiederherstellen

sudo zfs rollback -r [pool]/[dataset]@[snapshot name]

Dadurch werden alle späteren Snapshots gelöscht!

Das Dateisystem welches durch den Snapshot betroffen ist wird für den Rollback automatisch un- und wieder gemounted. Sollte dies Fehlschlagen kann durch -f das Unmounten forciert werden

Snapshot löschen

sudo zfs destroy [pool]/[dataset]@[snapshot name]