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

O projekcie

Configures ZFS filesystems and ZVOLs that can be shared via NFS

Zainstaluj
ansible-galaxy install stuvusIT.zfs-storage
Licencja
cc-by-sa-4.0
Pobrania
78
Właściciel
stuvus IT Team - Studierendenvertretung Universität Stuttgart