This is an old revision of the document!
Table of Contents
ZFS
Gundlangen
IO Writes:
- Asynchronous - Eine Applikation schreibt etwas in das Storage und das Storage meldet sobald dieses den IO im Ram zwischenlagert ein OK zurück. Fällt die Storage aus gehen die IO's die noch im Ram liegen verloren
- Synchronous - Eine Applikation schreibt etwas in das Storage und das Storage meldet erst ein Ok zurück wenn diese die Daten auf den Disken runterschrieben hat. Dies kostet Performance ist jedoch Crash Consistent
Sync Einstellungen unter ZFS
- standard - nur synchrone Schreibvorgänge werden mithilfe des ZIL abgesichert
- always - jeder Schreibvorgang findet unter Verwendung des ZIL statt
- disabled - der ZIL wird deaktiviert
vdev (virtual device)
Ist ein virtuelles Gerät, auf dem die in ZFS gespeicherten Daten abgelegt werden. Es kann sich dabei um eine Festplatte, eine reguläre Datei, ein RAID-Z/Mirror handel.
Pool
Ist ein Zusammenschluss aus mehreren vdevs zu einem großen Speicherpool.
Dataset
Bezeichnet ZFS-Dateisysteme, Volumes und Snapshots. Datasets sind in einer Vererbungshierarchie organisiert und immer einem bestimmten zpool zugeordnet. Sie dienen der Strukturierung von Pools und ermöglichen eine Anpassung an verschiedene Anforderungen.
Copy-On-Write
Beschreibt die Funktion von Dateisystemen, Blöcke nicht direkt zu überschreiben, sondern eine Kopie der neuen Daten in einem anderen freien Block abzulegen. Nachdem ein neuer Block erfolgreich abgespeichert wurde, wird der entsprechende Zeiger angepasst. Sollte das System während eines Schreibvorgangs abstürzen, entsteht somit kein inkonsistenter Zustand des Dateisystems. Ausschließlich die in dem Moment geschriebenen Daten gehen verloren, währenddessen die vorherige Version des Blocks noch unverändert ist. Darüber hinaus ermöglicht dieses Konzept das schnelle und einfache An legen von Snapshots.
ARC (Adaptive Replacement Cache)
Dieser Cache liegt im Ram des Betriebssystems.
L2ARC (Level 2 ARC)
Dieser Cache wird in den meisten Fällen auf SSDs ausgelagert (muss konfiguriert werden).
Wenn der Ram für den Cache zu klein wird werden alle Objekte die aus dem ARC raus fliegen würden in den L2ARC geschrieben.
ZIL (ZFS Intent Log)
SLOG (ZFS Separate Intent Log)
Pools
Anzeigen des Status von einem oder allen Pools
zpool status -v pool
Anzeige welche Pools bzw. Datensets Compression aktiv haben
zfs get compression
ZFS Optionen
Anzeigen aller ZFS Optionen für einen bzw. allen Pools
zfs get all
Compression setzten
zfs set compression=lz4 <pool>
Anzeigen der Compression Rate
zfs get compressratio
IO Stats
IO Stats anzeigen
zpool iostat -v 1
Caching
ARC
Anzeig der aktuellen Auslastung des Caches in Bytes
cat /proc/spl/kstat/zfs/arcstats |grep c_ c_min 4 536870912 c_max 4 2147483648 arc_no_grow 4 0 arc_tempreserve 4 0 arc_loaned_bytes 4 0 arc_prune 4 0 arc_meta_used 4 0 arc_meta_limit 4 536870912 arc_meta_max 4 0
Arc Cache Size setzten
vim /etc/modprobe.d/zfs.conf # Min 512MB / Max 2048 MB Limit options zfs zfs_arc_min=536870912 options zfs zfs_arc_max=2147483648
Es wird ein Reboot für diese Einstellung benötigt.
Kontrolle der aktuellen Einstellungen:
cat /sys/module/zfs/parameters/zfs_arc_min 536870912 cat /sys/module/zfs/parameters/zfs_arc_max 2147483648
L2ARC Device hinzufügen
zpool add -f <pool> cache <device>
L2ARC Device entfernen
zpool remove <pool> <device>
ZIL bzw. SLOG Device hinzufügen
zpool add -f pool log /dev/sda2
ZIL bzw. SLOG Device entfernen
zpool remove <pool> <device>
Auslastung der Pools anzeigen inkl. der Disken
zpool list -v
ZFS Health
Scrub
zpool scrub pool
Snapshots
Erstellen eines Snapshots auf einem Dateset
zfs snapshot <pool>/<dataset>@<snap_name>
Erstellen eines Snapshots auf einem Pool sprich auf allen Datasets
zfs snapshot -r <pool>@<snap_name>
Anzeigen der aktuellen Snapshots
zfs list -t snapshot
Löschen eines Snapshots
zfs destroy <pool><dataset>@<snap_name>
Rückstieg auf einen Snapshot
zfs rollback <pool>/<dataset>@<snap_name>
zfs-stats -a ??? zilstat
