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

Acerca del proyecto

Configures ZFS filesystems and ZVOLs that can be shared via NFS

Instalar
ansible-galaxy install stuvusIT.zfs-storage
Licencia
cc-by-sa-4.0
Descargas
78
Propietario
stuvus IT Team - Studierendenvertretung Universität Stuttgart