OpenZFS
Probleme wegen Aberglauben (Lizenz foo)
https://www.fsf.org/licensing/zfs-and-linux
Einführung
Dieser Abschnitt ist (bisher höchst) unvollständig!
Es soll eine "TL;DR" blitzartige Einführung stattfinden.
Funktionalitäten
- …
- Ermittlung vom Datenitigität
- Verknüpfen von Geräten (RAID), (als Software) als ein Pool für ZFS
- Festhalten von augenblicklichen Ständen (Schnappschuss)
- Austausch (Ablegen) von Ständen zu anderen (auch in der Ferne erreichbaren) Pools für ZFS
- eigene Heilen der Daten beim Verlust der Datenitigität von einem Teil der Daten
- …
- kein Netzwerkdateisystem
- Das kann Ceph.
- kein Aufzeichnung jeder Änderung
- Das kann HAMMER.
schnellere Geräte nutzen
ZIL
- ZFS Intent Log
Braucht es nur, wenn es mindestens zwei wesentlich schnellere Geräte zum Schreiben von Daten gibt, als wenn der übliche Massenspeicher vergleichsweise (arg) langsam ist.
schneller Massenspeicher als Zwischenspeicher für zu schreibende Daten
- Sollte mindestens gespiegelt werden!
- Im Falle des Ausfalls des Gerätes wären alle aktuellen Transaktionen auf dem Zwischenspeicher (vor dem Schreiben auf den langsameren Massenspeicher) verloren, was problematisch ist.
L2ARC
- Level 2 Adjustable Replacement Cache
Braucht eigentlich kein Mensch mehr!
- Heutzutage kann das (bis auf ganz wenige Ausnahmefälle für außergewöhnliche Anwendungsfälle), insbesondere bei Servern, mit Arbeitsspeicher erschlagen werden.
schneller Massenspeicher als Zwischenspeicher für bereits gelesene Daten
- Im Übrigen wird ohnehin standardmäßig für ARC (Level 1) über die Hälfte (etwa 5/8 (fünf Achtel), aber standardmäßig mindestens 1 GB) vom Arbeitsspeicher verwendet.
- Kann nur einzeln stehen (kann nicht gespiegelt) werden!
- Es wäre auch verhältnismäßig sinnarm einen zusätzlichen Zwischenspeicher, der ohnehin noch auf dem "nomralen" Massenspeicher, noch einmal vorzuhalten.
ZFSonLinux
Debian
- unter Debian 8 (Jessie)
<source lang="bash"> cd /root wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_4_all.deb dpkg -i zfsonlinux_4_all.deb </source>
<source lang="bash"> vi /etc/apt/sources.list.d/zfsonlinux.list
- This file is installed by the zfsonlinux package.
- / deb [arch=amd64] http://archive.zfsonlinux.org/debian jessie main
- deb-src http://archive.zfsonlinux.org/debian jessie main
- !! Enable these ONLY if you want/need the dailies - latest ZoL code !!
deb [arch=amd64] http://archive.zfsonlinux.org/debian jessie-daily main
- deb-src http://archive.zfsonlinux.org/debian jessie-daily main
- EOF
wget http://zfsonlinux.org/4D5843EA.asc -O - | apt-key add - </source>
SPL/ZFS installieren:
<source lang="bash"> apt-get update apt-get install debian-zfs
vi /etc/modules
- ZFS //
spl zfs
- // ZFS
update-initramfs -u -k all </source>
FIX: zfs-mount.service
<source lang="bash"> cat /lib/systemd/system/zfs-mount.service
which zfs which zpool </source>
falls zfs/zpool unter /usr/local liegen, dann nach /sbin kopieren
ZFS:
<source lang="bash"> lsmod | egrep "spl|zfs"
zpool status </source>
Debian 8 (Jessie) System mit (systemd-sysv/sysvinit-core)
<source lang="bash"> modprobe spl modprobe zfs
modprobe: ERROR: could not insert 'spl': Exec format error modprobe: ERROR: could not insert 'zfs': Exec format error </source>
<source lang="bash"> ls -all /sbin | egrep "fsck.zfs|zdb|zed|zfs|zhack|zinject|zpios|zpool|zstreamdump|ztest"
cp /sbin/fsck.zfs /usr/local/sbin cp /sbin/zdb /usr/local/sbin cp /sbin/zed /usr/local/sbin cp /sbin/zfs /usr/local/sbin cp /sbin/zhack /usr/local/sbin cp /sbin/zinject /usr/local/sbin cp /sbin/zpios /usr/local/sbin cp /sbin/zpool /usr/local/sbin cp /sbin/zstreamdump /usr/local/sbin cp /sbin/ztest /usr/local/sbin </source>
<source lang="bash"> apt-get install zfsonlinux
apt-get update; apt-get upgrade; apt-get dist-upgrade apt-get remove --purge debian-zfs libnvpair1 libuutil1 libzfs2 libzpool2 spl spl-dkms zfs-dkms zfsutils dkms apt-get update; apt-get upgrade; apt-get dist-upgrade </source>
<source lang="bash"> apt-get install debian-zfs </source>
unterschiedliche version magic
Fehler:
<source lang="bash"> zavl: version magic '3.18.7-grsecwetu+ SMP mod_unload modversions KERNEXEC_BTS UDEREF REFCOUNT GRSEC ' should be '3.18.7-grsecwetu+ SMP mod_unload modversions KERNEXEC_BTS UDEREF REFCOUNT STACKLEAK_PLUGIN GRSEC ' grsec: more alerts, logging disabled for 10 seconds zavl: version magic '3.18.7-grsecwetu+ SMP mod_unload modversions KERNEXEC_BTS UDEREF REFCOUNT GRSEC ' should be '3.18.7-grsecwetu+ SMP mod_unload modversions KERNEXEC_BTS UDEREF REFCOUNT STACKLEAK_PLUGIN GRSEC ' </source>
Laden erzwingen bei "Versionsbezeichungsdifferenz"
<source lang="bash"> modprobe --force-vermagic spl modprobe --force-vermagic zfs
zpool status </source>
module laden erzwingen
- trotz unterschiedlicher Versionsangabe (ignores vermagic and modversion attributes)
damit sind nicht die module optionen (parameter) gemeint z.B. bei "modinfo MODULNAME -F parm"
<source lang="bash"> touch /etc/modprobe.d/spl.conf touch /etc/modprobe.d/zfs.conf </source>
<source lang="bash"> vi /etc/modules
- ZFS //
spl # force=1 zfs # force=1
- // ZFS
</source>
zpool mirror erstellen
<source lang="bash"> zpool create -o ashift=12 zbackup mirror /dev/mapper/vg-zstorage1 /dev/mapper/vg-zstorage2
lxc-ls | xargs -L1 -I {} zfs create zbackup/lxc/{} </source>
Red Hat
Ubuntu
Kompatibilität
Eine der nennenswerten Vorteile von ZFS ist die Verfügbarkeit bei vielen Betriebssystemen. Eigentlich ist daher auch Kompatibilität - über das einzelne Betriebssystem hinweg - eines der großen Ansprüche. Dies ergibt sich schon allein durch das allgemeine Organisation von ZFS als Gemeinschaft als OpenZFS.
Aber es kann - wegen fehlenden Funktionstonalität in der Implementierung bei den verschiedenen Betriebssystemen - zu Problemen bei der Kompatibilität kommen. ZFS erkennt das und benennt die Funktionstonalität, die Probleme bei der Kompatibilität verursacht.
Ein kleines Beispiel:
- Erstellen des Pools (
zfs create
) mit Fedora (26) - Importieren des Pools (
zfs import
) mit TrueOS stable (FreeBSD 12.0-CURRENT #66)
This pool uses the following feature(s) not supported by this system: org.zfsonlinux:userobj_accounting (User/Group object accounting.) All unsupported features are only required for writing to the pool. The pool can be imported using '-o readonly=on'.
Kompatibilität bei Bootloadern
Kompatibilität bei GRUB 2
Verbünde
- aka Cluster
Ergänzungen
ZFSBootMenu
podcasting
- BSD Now
- youtube: channel ZFS rocks!
- deutschsprachige Sendungen zur Einführung und Anwendung von ZFS