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.
Информация об авторе
ansible-galaxy install stuvusIT/zfs-storage