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
Configures ZFS filesystems and ZVOLs that can be shared via NFS
ansible-galaxy install stuvusIT.zfs-storage