OpenZFS

Aus C3D2
Zur Navigation springen Zur Suche springen

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.

schneller 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)
cd /root
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_4_all.deb
dpkg -i zfsonlinux_4_all.deb
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 -

SPL/ZFS installieren:

apt-get update
apt-get install debian-zfs

vi /etc/modules

### ZFS //
spl
zfs
### // ZFS

update-initramfs -u -k all

FIX: zfs-mount.service

cat /lib/systemd/system/zfs-mount.service

which zfs
which zpool

falls zfs/zpool unter /usr/local liegen, dann nach /sbin kopieren

ZFS:

lsmod | egrep "spl|zfs"

zpool status

Debian 8 (Jessie) System mit (systemd-sysv/sysvinit-core)

modprobe spl
modprobe zfs

modprobe: ERROR: could not insert 'spl': Exec format error
modprobe: ERROR: could not insert 'zfs': Exec format error
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
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
apt-get install debian-zfs
unterschiedliche version magic

Fehler:

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 '

Laden erzwingen bei "Versionsbezeichungsdifferenz"

modprobe --force-vermagic spl
modprobe --force-vermagic zfs

zpool status
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"

touch /etc/modprobe.d/spl.conf
touch /etc/modprobe.d/zfs.conf
vi /etc/modules

### ZFS //
spl # force=1
zfs # force=1
### // ZFS
zpool mirror erstellen
zpool create -o ashift=12 zbackup mirror /dev/mapper/vg-zstorage1 /dev/mapper/vg-zstorage2

lxc-ls | xargs -L1 -I {} zfs create zbackup/lxc/{}

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

podcasting

Siehe auch