stuvusIT.zfs-storage
zfs-storage
Este rol instala ZFS en Linux y configura sistemas de archivos y ZVOLs.
Se instalará nfs-kernel-server
si un sistema de archivos configurado utiliza el atributo sharenfs
.
Las exportaciones de NFS se configurarán permanentemente en /etc/exports.d/zfs-storage-ansible.exports
si zfs_save_nfs_exports
está configurado adecuadamente.
Se utilizan los PPAs de ZFS de JonathanF para instalar la última versión de ZFS.
Requisitos
Una de las siguientes versiones de distribución:
- Debian stretch o buster
- Ubuntu xenial, bionic, cosmic o devel
Se requiere systemd
para limpiar los grupos utilizando temporizadores en lugar de trabajos cron específicos de la distribución.
python-jmespath
es necesario en la máquina que ejecuta este rol para determinar correctamente la necesidad de NFS.
Variables del Rol
Nombre | Predeterminado / Obligatorio | Descripción |
---|---|---|
zfs_parent_fs |
Sistema de archivos ZFS padre existente para todos los sistemas de archivos y zvols que se puede agregar opcionalmente a todas las configuraciones | |
zfs_storage_defaults |
{} |
Diccionario que contiene atributos de ZFS que se aplicarán a todos los sistemas de archivos/zvols ZFS configurados |
zfs_filesystems |
[] |
Lista de sistemas de archivos ZFS definidos por un nombre y un diccionario de atributos (obligatorios para cada entrada) |
zfs_zpools |
[] |
Lista de diccionarios con una clave nombre (obligatoria) y scrub (opcional). scrub es un booleano que puede desactivar la limpieza para este grupo. |
zvols |
[] |
Lista de zvols definidos por un nombre y un diccionario de atributos (obligatorios para cada entrada) |
zfs_default_enable_scrub |
True |
Si se debe habilitar la limpieza del grupo ZFS por defecto |
zfs_scrub_frequency |
weekly |
Frecuencia de limpieza de ZFS - las limpiezas ya en ejecución serán abortadas. Consulte systemd.time para los valores permitidos. |
zfs_kernel_module_parameters |
{} |
Diccionario que contiene opciones del módulo del kernel de ZFS que se establecerán en /etc/modprobe.d/zfs.conf . |
zfs_storage_drive_wwids |
[] |
Lista de cadenas WWID de dispositivos de bloque en el grupo. Se escribirán reglas UDEV para establecer el planificador de IO en noop para esos dispositivos. Esto es necesario para dispositivos particionados o encriptados, ya que ZFS solo establece el planificador en noop si tiene acceso a todo el disco. |
zfs_save_nfs_exports |
True |
Si se debe guardar y eliminar (si no se necesita) un archivo de exportación de NFS para exportaciones consistentes a través de reinicios. |
Nota: Hay algunos atributos de ZFS que solo se pueden establecer en la creación (ver man zfs). Estos son utf8only
, normalization
y casesensitivity
para sistemas de archivos y volsize
y volblocksize
para ZVOLs. La tarea respectiva fallará si intentas cambiar esos. Además, volsize
es un atributo obligatorio para los ZVOLs.
Si un atributo no está definido, se configurará el valor predeterminado de ZFS (incluso si el atributo ya está establecido en algo diferente), excepto para estos cuatro atributos:
acltype
=posixacl
compression
=on
relatime
=on
xattr
=sa
Todos los valores predeterminados para los atributos de ZFS se pueden ver en los valores predeterminados.
Además de los atributos ZFS reales descritos en la página del manual, este rol establece atributos para controlar la creación automática de instantáneas utilizando herramientas como zfs-auto-snapshot. Esto se logra utilizando las siguientes variables, que están configuradas en False
por defecto:
Atributo ZFS | Nombre de variable en este rol | Descripción |
---|---|---|
com.sun:auto-snapshot |
com_sun_auto_snapshot |
Habilitar la creación de instantáneas automáticas y la limpieza (eliminación) de instantáneas utilizando todos los intervalos disponibles para el conjunto de datos actual (básicamente actúa como si todos los siguientes atributos estuvieran configurados en True ). |
com.sun:auto-snapshot:frequent |
com_sun_auto_snapshot_frequent |
Habilitar la creación de instantáneas y la limpieza en intervalos de 15 minutos. |
com.sun:auto-snapshot:hourly |
com_sun_auto_snapshot_hourly |
Habilitar la creación de instantáneas y la limpieza en intervalos horarios. |
com.sun:auto-snapshot:daily |
com_sun_auto_snapshot_daily |
Habilitar la creación de instantáneas y la limpieza en intervalos diarios. |
com.sun:auto-snapshot:weekly |
com_sun_auto_snapshot_weekly |
Habilitar la creación de instantáneas y la limpieza en intervalos semanales. |
com.sun:auto-snapshot:monthly |
com_sun_auto_snapshot_monthly |
Habilitar la creación de instantáneas y la limpieza en intervalos mensuales. |
Ejemplo 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 # Permitir que ARC crezca hasta 30GB
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:
Resultado
Nombre | Tipo | Atributos |
---|---|---|
tank/testing |
filesystem | acltype =posixacl , quota =200G |
tank/testing/wiki |
filesystem | acltype =posixacl , sharenfs =[email protected] , compression =off , quota =50G |
tank/testing/dns01 |
zvol | volsize =100G |
tank/testing/ldap01 |
zvol | volsize =50G |
rpool
no será limpiado, tank
será limpiado mensualmente.
Licencia
Este trabajo está bajo una Licencia de Atribución y Compartición 4.0 Internacional de Creative Commons.
Información del Autor
Configures ZFS filesystems and ZVOLs that can be shared via NFS
ansible-galaxy install stuvusIT.zfs-storage