ZFS

ZFS benötigt RAM. Eine gute Regel zur Berechung ist 5 GB RAM pro TB Disk Space. Bei Verwendung von Features wie Deduplication wächst der Memory-Bedarf nochmal an. ZFS hat die Major-ID 230 zvol.

ZFS ist kein integraler Bestandteil von RHEL, und wird daher hier als separate Software kategorisiert.

Installation

Bemerkung

DKMS (Dynamic Kernel Module Support) oder kABI? Von der Homepage des ZFS-Projekts:

DKMS packages are recommended for users running a non-distribution kernel or for users who wish to apply local customizations to OpenZFS. For most users the kABI-tracking kmod packages are recommended in order to avoid needing to rebuild OpenZFS for every kernel update.

Am Beispiel von RHEL 8 kABI-Variante installieren:

dnf -y install https://zfsonlinux.org/epel/zfs-release-2-3$(rpm --eval "%{dist}").noarch.rpm

# kABI method
dnf config-manager --disable zfs
dnf config-manager --enable zfs-kmod

dnf -y install zfs

systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share zfs-zed zfs.target
echo zfs > /etc/modules-load.d/zfs.conf
reboot

Unit-Test ausführen. Dieser dauert 5 Minuten. Wichtig ist am Ende die Ausgabe von „no leaks“:

ztest --vdev-file-directory= /tmp -VVV

ZFS-Pool einrichten

Für die verschiedenen Festplatten-Konzepte wie Mirror, RAID etc. siehe man zpoolconcepts. Festplatten, die einem Pool zugeordnet sind, können nicht mehr einem anderen Pool zugeordnet werden.

Pool namens „data“ anlegen:

# raidz2 requires at least 3 devices
zpool create data raidz2 /dev/vd[b-d]

Das Verzeichnis /data wird automatisch angelegt und ist auch nach einem Reboot verfügbar.

zpool list -v

Ausgabe:

NAME         SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
data        2.75G   333K  2.75G        -         -     0%     0%  1.00x    ONLINE  -
  raidz2-0  2.75G   333K  2.75G        -         -     0%  0.01%      -    ONLINE
    vdb     1.99G      -      -        -         -      -      -      -    ONLINE
    vdc     2.99G      -      -        -         -      -      -      -    ONLINE
    vdd     1014M      -      -        -         -      -      -      -    ONLINE

ZFS Cheat Sheet

Disk für das Caching definieren:

zpool add data cache /dev/nvme0n1p1

Hot Swap und Ersatz mit grösseren Platten ermöglichen:

zpool set autoreplace=on data
zpool set autoexpand=on data

Einstellungen werden an alle Unterpools weitervererbt:

zfs set compression=lz4 data

# needs massive amount of RAM
zfs set dedup=sha256 data/pictures

Pool anlegen:

zfs create data/backup/user

Zustand abfragen:

zpool list -v
zpool get all data
zpool iostat -v data
zfs get all data/backup/user

Pool auf Fehler prüfen (sehr I/O-intensiv):

# put this in a scheduler like systemd-timer
zpool scrub data

ZFS und NFS

Auf Seite des ZFS-Servers:

dnf -y install nfs-utils
systemctl enable nfs-server
systemctl start nfs-server

zfs set sharenfs="rw=@192.0.2.26/32" backup/user/linuxfabrik

Auf Client-Seite, als root:

mkdir -p /mnt/backup
mount 192.0.2.52:/backup/user/linuxfabrik /mnt/backup

Built on 2024-04-18