stuvusIT.zfs-storage

stockage-zfs

Ce rôle installe ZFS sur Linux et configure les systèmes de fichiers et les ZVOLs. Le nfs-kernel-server sera installé si un système de fichiers configuré utilise l'attribut sharenfs. Les exports NFS seront configurés de manière permanente dans /etc/exports.d/zfs-storage-ansible.exports si zfs_save_nfs_exports est défini en conséquence. Les PPAs ZFS de JonathanF sont utilisés pour installer la dernière version de ZFS.

Exigences

Une des versions de distribution suivantes :

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

systemd est requis pour gérer le nettoyage des pools à l'aide de minuteries au lieu de tâches cron spécifiques à la distribution. python-jmespath est nécessaire sur la machine exécutant ce rôle pour déterminer correctement le besoin de NFS.

Variables du Rôle

Nom Par Défaut / Obligatoire Description
zfs_parent_fs Système de fichiers ZFS parent existant pour tous les systèmes de fichiers et ZVOLs qui est éventuellement préfixé à toutes les configurations
zfs_storage_defaults {} Dictionnaire contenant des attributs ZFS qui seront appliqués à tous les systèmes de fichiers/zvols ZFS configurés
zfs_filesystems [] Liste de systèmes de fichiers ZFS définis par un nom et un dictionnaire d'attributs (obligatoire pour chaque entrée)
zfs_zpools [] Liste de dictionnaires ayant une clé name (obligatoire) et scrub (optionnelle). scrub est un booléen et peut désactiver le nettoyage pour ce pool.
zvols [] Liste de ZVOLs définis par un nom et un dictionnaire d'attributs (obligatoire pour chaque entrée)
zfs_default_enable_scrub True Indique si le nettoyage des zpool doit être activé par défaut
zfs_scrub_frequency weekly Fréquence de nettoyage ZFS - les nettoyages en cours seront interrompus. Voir systemd.time pour les valeurs autorisées.
zfs_kernel_module_parameters {} Dictionnaire contenant les options du module noyau ZFS à définir dans /etc/modprobe.d/zfs.conf.
zfs_storage_drive_wwids [] Liste de chaînes WWID de dispositifs de bloc dans le pool. Des règles UDEV seront écrites pour définir le planificateur d'E/S sur noop pour ces dispositifs. Ceci est nécessaire pour les dispositifs partitionnés ou chiffrés car ZFS ne définit le planificateur sur noop que s'il a accès à l'ensemble du disque.
zfs_save_nfs_exports True Indique s'il faut enregistrer et supprimer (si non nécessaire) un fichier d'exportation NFS pour des exports cohérents entre les redémarrages.

Remarque : Il existe certains attributs ZFS qui ne peuvent être définis qu'à la création (voir man zfs). Ce sont utf8only, normalization et casesensitivity pour les systèmes de fichiers et volsize et volblocksize pour les ZVOLs. La tâche respective échouera si vous essayez de modifier ceux-ci. De plus, volsize est un attribut obligatoire pour les ZVOLs.

Si un attribut n'est pas défini, la valeur par défaut de ZFS sera configurée (même si l'attribut est déjà défini à autre chose), sauf pour ces quatre attributs :

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

Toutes les valeurs par défaut pour les attributs ZFS peuvent être consultées dans les valeurs par défaut.

En plus des attributs ZFS réels décrits dans la page de manuel, ce rôle définit des attributs pour contrôler la prise de snapshots automatiques à l'aide d'outils tels que zfs-auto-snapshot. Cela est réalisé à l'aide des variables suivantes, qui sont toutes définies sur False par défaut :

Attribut ZFS Nom de la variable dans ce rôle Description
com.sun:auto-snapshot com_sun_auto_snapshot Active la prise de snapshots automatiques et le nettoyage (destruction) des snapshots en utilisant tous les intervalles disponibles pour le jeu de données actuel (fonctionne comme si tous les attributs suivants étaient définis sur True).
com.sun:auto-snapshot:frequent com_sun_auto_snapshot_frequent Active la prise de snapshots et le nettoyage toutes les 15 minutes.
com.sun:auto-snapshot:hourly com_sun_auto_snapshot_hourly Active la prise de snapshots et le nettoyage toutes les heures.
com.sun:auto-snapshot:daily com_sun_auto_snapshot_daily Active la prise de snapshots et le nettoyage tous les jours.
com.sun:auto-snapshot:weekly com_sun_auto_snapshot_weekly Active la prise de snapshots et le nettoyage chaque semaine.
com.sun:auto-snapshot:monthly com_sun_auto_snapshot_monthly Active la prise de snapshots et le nettoyage chaque mois.

Exemple de 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 # Permet à l'ARC de croître jusqu'à 30 Go
      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:

Résultat

Nom Type Attributs
tank/testing système de fichiers acltype=posixacl, quota=200G
tank/testing/wiki système de fichiers acltype=posixacl, sharenfs=[email protected], compression=off, quota=50G
tank/testing/dns01 zvol volsize=100G
tank/testing/ldap01 zvol volsize=50G

rpool ne sera pas nettoyé, tank sera nettoyé chaque mois.

Licence

Ce travail est sous une Licence Creative Commons Attribution-ShareAlike 4.0 International.

Informations sur l'Auteur

À propos du projet

Configures ZFS filesystems and ZVOLs that can be shared via NFS

Installer
ansible-galaxy install stuvusIT.zfs-storage
Licence
cc-by-sa-4.0
Téléchargements
78
Propriétaire
stuvus IT Team - Studierendenvertretung Universität Stuttgart