zfs-storage

zfs-storage

Эта роль устанавливает ZFS на Linux и настраивает файловые системы и ZVOLs. nfs-kernel-server будет установлен, если настроенная файловая система использует атрибут sharenfs. Экспорты NFS будут постоянно настраиваться в /etc/exports.d/zfs-storage-ansible.exports, если zfs_save_nfs_exports настроен соответствующим образом. Для установки последней версии ZFS используются ZFS PPAs от JonathanF.

Требования

Одна из следующих версий дистрибутивов:

  • Debian stretch или buster
  • Ubuntu xenial, bionic, cosmic или devel

Требуется systemd, чтобы очищать пулы с использованием таймеров, а не крон-работ. На машине, выполняющей эту роль, необходим python-jmespath, чтобы правильно определить необходимость в NFS.

Переменные Роли

Имя Значение по умолчанию / Обязательное Описание
zfs_parent_fs Существующая родительская файловая система ZFS для всех файловых систем и zvols, которая опционально добавляется ко всем конфигурациям
zfs_storage_defaults {} Словарь, содержащий атрибуты ZFS, которые будут применены ко всем настроенным файловым системам/zvols
zfs_filesystems [] Список файловых систем zfs, определенных по имени и словарю атрибутов (обязателен для каждой записи)
zfs_zpools [] Список словарей, содержащих имя (обязательно) и scrub (опционально). scrub является логическим значением и может отключить очистку для этого пула.
zvols [] Список zvols, определенных по имени и словарю атрибутов (обязателен для каждой записи)
zfs_default_enable_scrub True Нужно ли включить очистку zpool по умолчанию
zfs_scrub_frequency weekly Частота очистки zfs - уже запущенные очистки будут прерваны. См. systemd.time для допустимых значений.
zfs_kernel_module_parameters {} Словарь, содержащий параметры ядра ZFS, которые будут установлены в /etc/modprobe.d/zfs.conf.
zfs_storage_drive_wwids [] Список WWID-строк блочных устройств в пуле. Для этих устройств будут написаны правила UDEV, чтобы установить планировщик ввода-вывода на noop. Это необходимо для разделенных или зашифрованных устройств, так как ZFS устанавливает планировщик на noop, только если получает доступ ко всему диску.
zfs_save_nfs_exports True Нужно ли сохранять и удалять (если не нужно) файл экспорта NFS для последовательных экспортов при перезагрузках.

Примечание: Есть некоторые атрибуты ZFS, которые можно установить только при создании (см. man zfs). Это utf8only, normalization и casesensitivity для файловых систем и volsize и volblocksize для ZVOLs. Соответствующая задача не выполнится, если вы попытаетесь изменить эти атрибуты. Также, volsize является обязательным атрибутом для ZVOLs.

Если атрибут не определен, будет настроен стандартный параметр ZFS (даже если атрибут уже установлен на что-то другое), за исключением этих четырех атрибутов:

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

Все значения по умолчанию для атрибутов ZFS можно увидеть в умолчаниях.

В дополнение к фактическим атрибутам ZFS, описанным на странице man, эта роль устанавливает атрибуты для управления автоматическим снимком с использованием таких инструментов, как zfs-auto-snapshot. Это достигается с помощью следующих переменных, которые по умолчанию установлены на False:

Атрибут ZFS Имя переменной в этой роли Описание
com.sun:auto-snapshot com_sun_auto_snapshot Включить автоматическое создание снимков и очистку (удаление) снимков с использованием всех доступных интервалов для текущего набора данных (по сути, действует так, как если бы все следующие атрибуты были установлены на True).
com.sun:auto-snapshot:frequent com_sun_auto_snapshot_frequent Включить создание снимков и очистку с интервалом в 15 минут.
com.sun:auto-snapshot:hourly com_sun_auto_snapshot_hourly Включить создание снимков и очистку с часовым интервалом.
com.sun:auto-snapshot:daily com_sun_auto_snapshot_daily Включить создание снимков и очистку с ежедневным интервалом.
com.sun:auto-snapshot:weekly com_sun_auto_snapshot_weekly Включить создание снимков и очистку с недельным интервалом.
com.sun:auto-snapshot:monthly com_sun_auto_snapshot_monthly Включить создание снимков и очистку с ежемесячным интервалом.

Пример плейбука

- 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 # Позволяет ARC расширяться до 30 ГБ
      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:

Результат

Имя Тип Атрибуты
tank/testing файловая система acltype=posixacl, quota=200G
tank/testing/wiki файловая система acltype=posixacl, sharenfs=[email protected], compression=off, quota=50G
tank/testing/dns01 zvol volsize=100G
tank/testing/ldap01 zvol volsize=50G

rpool не будет очищаться, tank будет очищаться раз в месяц.

Лицензия

Эта работа лицензирована по Лицензии Creative Commons Attribution-ShareAlike 4.0 International.

Информация об авторе

О проекте

Configures ZFS filesystems and ZVOLs that can be shared via NFS

Установить
ansible-galaxy install stuvusIT/zfs-storage
Лицензия
cc-by-sa-4.0
Загрузки
64
Владелец
stuvus IT Team - Studierendenvertretung Universität Stuttgart