stuvusIT.zfs-storage
zfs-storage
Ta rola instaluje ZFS na Linuxie i konfiguruje systemy plików oraz ZVOL. nfs-kernel-server
będzie zainstalowany, jeśli skonfigurowany system plików korzysta z atrybutu sharenfs
. Eksporty NFS będą na stałe konfigurowane w /etc/exports.d/zfs-storage-ansible.exports
, jeśli zfs_save_nfs_exports
jest odpowiednio ustawiony. Do instalacji najnowszej wersji ZFS używane są PPAs ZFS od JonathanF.
Wymagania
Jedna z poniższych wersji dystrybucji:
- Debian stretch lub buster
- Ubuntu xenial, bionic, cosmic lub devel
Wymagany jest systemd
, aby móc kontrolować pule za pomocą timerów zamiast crona specyficznego dla dystrybucji. python-jmespath
jest potrzebny na maszynie wykonującej tę rolę, aby poprawnie określić potrzebę NFS.
Zmienne roli
Nazwa | Domyślna / Obowiązkowa | Opis |
---|---|---|
zfs_parent_fs |
Istniejący rodzicielski system plików ZFS dla wszystkich systemów plików i zvol, który jest opcjonalnie dodawany do wszystkich konfiguracji | |
zfs_storage_defaults |
{} |
Słownik zawierający atrybuty ZFS, które będą stosowane do wszystkich skonfigurowanych systemów plików/zvol ZFS |
zfs_filesystems |
[] |
Lista systemów plików zfs zdefiniowanych przez name oraz słownik attributes (obowiązkowy dla każdego wpisu) |
zfs_zpools |
[] |
Lista słowników zawierających klucz name (obowiązkowy) oraz scrub (opcjonalny). scrub jest wartością logiczną, która może wyłączyć czyszczenie tej puli. |
zvols |
[] |
Lista zvol określonych przez name oraz słownik attributes (obowiązkowy dla każdego wpisu) |
zfs_default_enable_scrub |
True |
Czy domyślnie włączyć czyszczenie puli |
zfs_scrub_frequency |
weekly |
Częstotliwość czyszczenia ZFS - już działające czyszczenia zostaną przerwane. Zobacz systemd.time dla dozwolonych wartości. |
zfs_kernel_module_parameters |
{} |
Słownik zawierający opcje modułu jądra ZFS do ustawienia w /etc/modprobe.d/zfs.conf . |
zfs_storage_drive_wwids |
[] |
Lista ciągów WWID urządzeń blokowych w puli. Reguły UDEV będą pisane, aby ustawić planistę IO na noop dla tych urządzeń. Jest to potrzebne dla podzielonych lub zaszyfrowanych urządzeń, ponieważ ZFS ustawia planistę na noop tylko wtedy, gdy ma cały dysk. |
zfs_save_nfs_exports |
True |
Czy zapisać i usunąć (jeśli niepotrzebne) plik eksportu NFS dla spójnych eksportów po restarcie. |
Uwaga: Istnieją atrybuty ZFS, które mogą być ustawione tylko podczas tworzenia (zobacz man zfs).
Należą do nich atrybuty utf8only
, normalization
i casesensitivity
dla systemów plików oraz volsize
i volblocksize
dla ZVOL. Przypisana zostanie odpowiednia operacja, jeśli spróbujesz je zmienić.
volsize
jest obowiązkowym atrybutem dla ZVOL.
Jeśli atrybut nie jest zdefiniowany, zostanie skonfigurowana domyślna wartość ZFS (nawet jeśli atrybut jest już ustawiony na coś innego), z wyjątkiem tych czterech atrybutów:
acltype
=posixacl
compression
=on
relatime
=on
xattr
=sa
Wszystkie domyślne wartości dla atrybutów ZFS można zobaczyć w domyślnych ustawieniach.
Oprócz rzeczywistych atrybutów ZFS opisanych w dokumentacji, ta rola ustawia atrybuty do kontrolowania automatycznego tworzenia migawek przy użyciu narzędzi takich jak zfs-auto-snapshot.
Osiąga się to przy użyciu następujących zmiennych, które są domyślnie ustawione na False
:
Atrybut ZFS | Nazwa zmiennej w tej roli | Opis |
---|---|---|
com.sun:auto-snapshot |
com_sun_auto_snapshot |
Włącz automatyczne tworzenie migawek i czyszczenie (niszczenie) migawek przy użyciu wszystkich dostępnych interwałów dla bieżącego zbioru danych (działa jakby wszystkie poniższe atrybuty były ustawione na True ). |
com.sun:auto-snapshot:frequent |
com_sun_auto_snapshot_frequent |
Włączanie tworzenia migawek i czyszczenie co 15 minut. |
com.sun:auto-snapshot:hourly |
com_sun_auto_snapshot_hourly |
Włączanie tworzenia migawek i czyszczenie co godzinę. |
com.sun:auto-snapshot:daily |
com_sun_auto_snapshot_daily |
Włączanie tworzenia migawek i czyszczenie codziennie. |
com.sun:auto-snapshot:weekly |
com_sun_auto_snapshot_weekly |
Włączanie tworzenia migawek i czyszczenie co tydzień. |
com.sun:auto-snapshot:monthly |
com_sun_auto_snapshot_monthly |
Włączanie tworzenia migawek i czyszczenie co miesiąc. |
Przykładowy 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 # Pozwól ARC rosnąć do 30 GB
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:
Rezultat
Nazwa | Typ | Atrybuty |
---|---|---|
tank/testing |
system plików | acltype =posixacl , quota =200G |
tank/testing/wiki |
system plików | acltype =posixacl , sharenfs =[email protected] , compression =off , quota =50G |
tank/testing/dns01 |
zvol | volsize =100G |
tank/testing/ldap01 |
zvol | volsize =50G |
rpool
nie będzie czyszczony, tank
będzie czyszczony co miesiąc.
Licencja
Praca ta jest licencjonowana na podstawie Licencji Creative Commons Uznanie Autorstwa-Na Warunkach tej Samej Licencji 4.0 Międzynarodowej.
Informacje o autorze
Configures ZFS filesystems and ZVOLs that can be shared via NFS
ansible-galaxy install stuvusIT.zfs-storage