stuvusIT.zfs-storage

zfs-storage

Diese Rolle installiert ZFS auf Linux und konfiguriert Dateisysteme und ZVOLs. Das nfs-kernel-server wird installiert, wenn ein konfiguriertes Dateisystem das Attribut sharenfs verwendet. NFS-Exporte werden dauerhaft in /etc/exports.d/zfs-storage-ansible.exports konfiguriert, wenn zfs_save_nfs_exports entsprechend gesetzt ist. Die ZFS PPAs von JonathanF werden verwendet, um die neueste ZFS-Version zu installieren.

Anforderungen

Einer der folgenden Distributionsversionen:

  • Debian stretch oder buster
  • Ubuntu xenial, bionic, cosmic oder devel

systemd wird benötigt, um Pools mit Timern anstelle von distributionsspezifischen Cron-Jobs zu scruben. python-jmespath wird auf der Maschine benötigt, die diese Rolle ausführt, um korrekt den Bedarf für NFS zu bestimmen.

Rollenvariablen

Name Standard / Obligatorisch Beschreibung
zfs_parent_fs Vorhandenes übergeordnetes ZFS-Dateisystem für alle Dateisysteme und ZVOLs, das optional allen Konfigurationen vorangestellt wird
zfs_storage_defaults {} Wörterbuch, das ZFS-Attribute enthält, die auf alle konfigurierten ZFS-Dateisysteme/ZVOLs angewendet werden
zfs_filesystems [] Liste der zfs_filesystems, definiert durch einen name und ein Wörterbuch von attributes (obligatorisch für jeden Eintrag)
zfs_zpools [] Liste von Wörterbüchern mit einem name (obligatorisch) und einem scrub (optional). scrub ist ein boolescher Wert und kann das Scrubbing für diesen Pool deaktivieren.
zvols [] Liste von ZVOLs, definiert durch einen name und ein Wörterbuch von attributes (obligatorisch für jeden Eintrag)
zfs_default_enable_scrub True Ob das Zpool-Scrubbing standardmäßig aktiviert werden soll
zfs_scrub_frequency weekly Häufigkeit des ZFS-Scrubbings - bereits laufende Scrubs werden abgebrochen. Siehe systemd.time für erlaubte Werte.
zfs_kernel_module_parameters {} Wörterbuch mit ZFS-Kernelmodul-Optionen, die in /etc/modprobe.d/zfs.conf gesetzt werden sollen.
zfs_storage_drive_wwids [] Liste von WWID-Strings von Blockgeräten im Pool. UDEV-Regeln werden geschrieben, um den IO-Scheduler für diese Geräte auf noop zu setzen. Dies ist erforderlich für partitionierte oder verschlüsselte Geräte, da ZFS den Scheduler nur auf noop setzt, wenn es Zugang zum gesamten Laufwerk hat.
zfs_save_nfs_exports True Ob eine NFS-Exportdatei zum Speichern und Löschen (wenn nicht benötigt) für konsistente Exporte über Neustarts gespeichert werden soll.

Hinweis: Es gibt einige ZFS-Attribute, die nur bei der Erstellung festgelegt werden können (siehe man zfs). Diese sind utf8only, normalization und casesensitivity für Dateisysteme sowie volsize und volblocksize für ZVOLs. Die entsprechende Aufgabe schlägt fehl, wenn Sie versuchen, diese zu ändern. Außerdem ist volsize ein obligates Attribut für ZVOLs.

Wenn ein Attribut nicht definiert ist, wird der ZFS-Standard konfiguriert (auch wenn das Attribut bereits auf etwas anderes gesetzt ist), mit Ausnahme dieser vier Attribute:

  • acltype=posixacl
  • compression=on
  • relatime=on
  • xattr=sa

Alle Standardwerte für ZFS-Attribute sind in den Standards zu sehen.

Zusätzlich zu den tatsächlich beschriebenen ZFS-Attributen auf der Man-Seite setzt diese Rolle Attribute, um die automatische Snapshot-Erstellung mit Tools wie zfs-auto-snapshot zu steuern. Dies wird durch die folgenden Variablen erreicht, die alle standardmäßig auf False gesetzt sind:

ZFS-Attribut Variablenname in dieser Rolle Beschreibung
com.sun:auto-snapshot com_sun_auto_snapshot Aktivieren Sie die automatische Erstellung und Bereinigung (Zerstörung) von Snapshots unter Verwendung aller verfügbaren Intervalle für den aktuellen Datenspeicher (wirkt grundsätzlich so, als wären alle folgenden Attribute auf True gesetzt).
com.sun:auto-snapshot:frequent com_sun_auto_snapshot_frequent Aktivieren Sie die Erstellung und Bereinigung von Snapshots in 15-Minutenschritten.
com.sun:auto-snapshot:hourly com_sun_auto_snapshot_hourly Aktivieren Sie die Erstellung und Bereinigung von Snapshots in stündlichen Intervallen.
com.sun:auto-snapshot:daily com_sun_auto_snapshot_daily Aktivieren Sie die Erstellung und Bereinigung von Snapshots in täglichen Intervallen.
com.sun:auto-snapshot:weekly com_sun_auto_snapshot_weekly Aktivieren Sie die Erstellung und Bereinigung von Snapshots in wöchentlichen Intervallen.
com.sun:auto-snapshot:monthly com_sun_auto_snapshot_monthly Aktivieren Sie die Erstellung und Bereinigung von Snapshots in monatlichen Intervallen.

Beispiel-Playbook

- hosts: zfsstorage
  roles:
    - role: zfs-storage
      zfs_parent_fs: tank
      zfs_zpools:
        - name: rpool
          scrub: False
        - name: tank
          scrub: False
      zfs_scrub_frequency: monthly
      zfs_kernel_module_parameters:
        zfs_arc_max: 30064771072 # Erlauben Sie ARC, auf bis zu 30 GB zu wachsen
      zfs_storage_defaults:
        acltype: posixacl
        volsize: 50G
        quota: 50G
      zfs_filesystems:
        - name: testing
          attributes:
            quota: 200G
        - name: testing/wiki
          attributes:
            sharenfs: [email protected]
            compression: off
      zvols:
        - name: testing/dns01
          attributes:
            volsize: 100G
        - name: testing/ldap01
          attributes:

Ergebnis

Name Typ Attribute
tank/testing Dateisystem acltype=posixacl, quota=200G
tank/testing/wiki Dateisystem acltype=posixacl, sharenfs=[email protected], compression=off, quota=50G
tank/testing/dns01 ZVOL volsize=100G
tank/testing/ldap01 ZVOL volsize=50G

rpool wird nicht gescrubbt, tank wird monatlich gescrubbt.

Lizenz

Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Autoreninformation

Über das Projekt

Configures ZFS filesystems and ZVOLs that can be shared via NFS

Installieren
ansible-galaxy install stuvusIT.zfs-storage
GitHub Repository
Lizenz
cc-by-sa-4.0
Downloads
78
Besitzer
stuvus IT Team - Studierendenvertretung Universität Stuttgart