mrlesmithjr.zfs

Inhaltsverzeichnis generiert mit DocToc

ansible-zfs

Installiert und konfiguriert ZFS unter Linux (http://zfsonlinux.org/)

Anforderungen

Mindestens eine ungenutzte physische Festplatte, um einen ZFS-Pool zu erstellen.

Vagrant

Erstellen Sie eine Testumgebung mit Vagrant

vagrant up

Dies wird einen Server mit einigen ZFS-Volumes, einschließlich iSCSI-Geräten, starten... Sie können iSCSI-Volumes vom Client-Knoten aus anzeigen/benutzen...

vagrant ssh client
sudo iscsiadm -m discovery -t st -p 192.168.202.201
sudo iscsiadm -m node --login

Sie sollten jetzt /dev/sdb und /dev/sdc auf Ihrem Client haben, um sie zu formatieren und einzuhängen

sudo fdisk -l
Festplatte /dev/sdb: 1073 MB, 1073741824 Bytes
34 Köpfe, 61 Sektoren/Spur, 1011 Zylinder, insgesamt 2097152 Sektoren
Einheiten = Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichner: 0x00000000

Festplatte /dev/sdb enthält keine gültige Partitionstabelle.

Festplatte /dev/sdc: 2147 MB, 2147483648 Bytes
67 Köpfe, 62 Sektoren/Spur, 1009 Zylinder, insgesamt 4194304 Sektoren
Einheiten = Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes
I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichner: 0x00000000

Festplatte /dev/sdc enthält keine gültige Partitionstabelle.
vagrant@client:~$ sudo fdisk /dev/sdb
Gerät enthält weder eine gültige DOS-Partitionstabelle noch eine Sun-, SGI- oder OSF-Disklabel.
Erstelle ein neues DOS-Disklabel mit der Festplattenkennung 0xa1af287f.
Änderungen bleiben nur im Speicher, bis Sie sich entscheiden, diese zu schreiben. 
Danach ist der vorherige Inhalt natürlich nicht mehr wiederherstellbar.

Rollenvariablen

---
# Standarddatei für ansible-zfs

# Definiert, ob ZFS-Dateisysteme erstellt werden
zfs_create_filesystems: false

# Definiert, ob ZFS-Pools erstellt werden
zfs_create_pools: false

# Definiert, ob ZFS-Volumes erstellt werden
zfs_create_volumes: false
zfs_debian_package_key: http://zfsonlinux.org/4D5843EA.asc
zfs_debian_package_url: http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux
zfs_debian_package_version: 6
zfs_debian_package: "zfsonlinux_{{ zfs_debian_package_version }}_all.deb"
zfs_enable_auto_snapshots: true

# Definiert, ob iscsitarget auf dem Server für iSCSI-Volumes installiert werden soll
zfs_enable_iscsi: false

# Definiert, ob ein NFS-Kernel-Server installiert werden soll, um NFS bereitzustellen
zfs_enable_nfs: false

# Definiert, ob Parameter, die in zfs_performance_tuning definiert sind, angewendet werden
zfs_enable_performance_tuning: false

# Definiert, ob Samba installiert und konfiguriert werden soll
zfs_enable_samba: false

# Definiert, ob Schlüssel für verschlüsselte Dateisysteme beim Start geladen werden
zfs_autoload_encryption_keys: false

# Definiert die zu verwaltenden Dateisysteme
zfs_filesystems: []
  # - name: nfs
  #   pool: tank
  #   atime: off
  #   # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
  #   compression: lz4
  #   # latenz (Standard) | durchsatz
  #   logbias: latency
  #   # Definieren Sie einen alternativen Einhängepunkt
  #   # mountpoint: /var/lib/docker
  #   # all (Standard) | none | metadata
  #   primarycache: all
  #   quota: 3G
  #   # Definiert die Datensatzgröße.. 16K | 32K | 64K | 128K (Standard) | und etc.
  #   recordsize: 16K
  #   sharenfs: on
  #   # standard (Standard) | always | disabled    sync: disabled
  #   # Steuert, ob die Snapshot-Geräte von ZVols verborgen oder sichtbar sind. hidden (Standard) | visible
  #   snapdev: visible
  #   # Steuert, ob das Verzeichnis .zfs im Wurzelverzeichnis des Dateisystems verborgen oder sichtbar ist. hidden (Standard) | visible
  #   snapdir: visible
  #   state: present
  # - name: Shares/Movies
  #   compression: lz4
  #   group: nogroup
  #   mountpoint: /TANK/Shares/Movies
  #   owner: nobody
  #   pool: TANK
  #   quota: none
  #   sharesmb: true
  #   smb_options:
  #     browseable: "yes"
  #     comment: ""
  #     create_directory_mask: "0755"
  #     create_mask: "0777"
  #     guest_ok: "yes"
  #     read_only: "no"
  #     share_name: Movies
  #     writable: "yes"
  #   xattr: sa
  #   acltype: posixacl
  #   state: present
  #   #standard (Standard) | always | disabled
  #   sync: disabled
  # - name: encrypted-fs
  #   pool: tank
  #   state: present
  #   # Der zu verwendende Verschlüsselungsalgorithmus oder einfach "on" zur Verwendung des standardmäßig von ZFS gewählten.
  #   encryption: aes-256-gcm
  #   # Wo der Schlüssel im Dateisystem gesucht werden soll.  Prompt wird von dieser Rolle nicht unterstützt.
  #   keylocation: "file:///use/local/etc/zfs/keys/tank/encyrpted-fs"
  #   # passphrase | hex | raw

# Definiert, ob diese Rolle die Installation von ZFS, einschließlich Updates verwalten soll.
zfs_install_update: true

# Definiert, ob der Dienst iscsitarget aktiviert ist
zfs_iscsistarget_enable: "{{ zfs_enable_iscsi }}"

# Definieren Sie Ihr FQDN in umgekehrter Reihenfolge...(local.vagrant)
zfs_iscsistarget_iqn: iqn.2001-04.org.example

zfs_iscsistarget_max_sleep: 3
zfs_iscsistarget_options: ""
zfs_iscsitarget_target_portals:
  # Definieren Sie die IP-Adresse, um auf iSCSI-Verbindungen zu hören | ALL (Standard) | cidr (x.x.x.x/xx) | deaktivieren Sie ALLE, wenn Sie cidr definieren
  - ALL
#  - 10.0.2.0/24
#  - 192.168.2.0/24

# Definiert, ob die Berechtigungen des ZFS-Dateisystemeinpunktes verwaltet werden
zfs_manage_filesystem_permissions: false

zfs_performance_tuning:
  - param: zfs_prefetch_disable
    value: 1
  - param: zfs_txg_timeout
    value: 5
  - param: zfs_arc_max
    # 1/2 des gesamten Systemgedächtnisses
    value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.5) | round | int }}"
  - param: zfs_arc_meta_limit
    # 1/4 zfs_arc_max
    value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.125) | round | int }}"
  - param: zfs_arc_min
    # 1/2 zfs_arc_meta_limit
    value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.0625) | round | int }}"

# Definiert die zpool(s), die verwaltet werden sollen
zfs_pools: []
  # - name: SSD-TANK
  #   action: create
  #   # permanente Optionen beim Erstellen setzen
  #   options:
  #     ashift: 13
  #   # atime: on
  #   # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
  #   compression: lz4
  #   # Definieren Sie Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
  #   devices:
  #     - ata-INTEL_SSDSC2BW240A4_CVDA352100YL2403GN
  #     - ata-INTEL_SSDSC2BW240A4_BTDA329505KM2403GN
  #   # Definieren Sie den Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
  #   type: mirror
  #   state: present
  #   #  globale Scrub-Cronjob-Parameter pro zpool überschreiben
  #   scrub_cron:
  #     # enable: False  # deaktivierte Scrub-Cronjob-Erstellung für diesen spezifischen zpool
  #     hour: 2
  #     weekday: sat
  # - name: SSD-TANK
  #   action: add
  #   # atime: on
  #   compression: lz4
  #   devices:
  #     - ata-INTEL_SSDSC2BW240A4_CVDA352100GP2403GN
  #     - ata-INTEL_SSDSC2BW240A4_CVDA401000Q02403GN
  #   type: mirror
  #   state: present
  # - name: SSD-TANK
  #   action: add
  #   # atime: on
  #   compression: lz4
  #   devices:
  #     - ata-INTEL_SSDSC2BW240A4_CVDA4010045B2403GN
  #     - ata-INTEL_SSDSC2BW240A4_BTDA329501102403GN
  #   type: mirror
  #   xattr: sa
  #   acltype: posixacl
  #   state: present

# definiert globale Scrub-Cronjob-Parameter. Gilt nur, wenn `zfs_enable_monitoring` auf True gesetzt ist.
zfs_pools_scrub_cron:
  minute: 0
  hour: 0
  day: *
  month: *
  weekday: sun
zfs_ubuntu_ppa: ppa:zfs-native/stable

# Definiert Blockgerätevolumes zur Verwaltung
zfs_volumes: []
  # - name: backups
  #   pool: tank
  #   # Definiert, ob iscsitarget das Volume bereitstellen soll... | on | off | oder nicht definiert
  #   shareiscsi: on
  #   # Definiert volsize für Blockgeräte
  #   volsize: 1G
  #   lun: 0
  #   allow:
  #     - ALL
  #   state: present
  # - name: data
  #   pool: tank
  #   shareiscsi: on
  #   volsize: 2G
  #   lun: 1
  #   allow:
  #     # - 10.0.0.0/8
  #     - 192.168.202.0/24
  #   state: present
  # - name: encrypted-vol
  #   pool: tank
  #   state: present
  #   # Der zu verwendende Verschlüsselungsalgorithmus oder einfach "on", um den von ZFS gewählten Standard zu verwenden.
  #   encryption: on
  #   # Wo der Schlüssel im Dateisystem gesucht werden soll.  Prompt wird von dieser Rolle nicht unterstützt.
  #   keylocation: "file:///use/local/etc/zfs/keys/tank/encyrpted-vol"
  #   # passphrase | hex | raw
  #   volsize: 3G

zfs_enable_monitoring: False

# in Prozent.
zfs_monitoring_capacity_threshold: 80

# in Tagen.
zfs_monitoring_scrub_max_age: 8

zfs_monitoring_email_dest: root@localhost

Abhängigkeiten

Keine

Beispiel-Paybook

GitHub

        ---
        - name: Installiert ZFS unter Linux
          hosts: all
          become: true
          vars:
            - zfs_iscsistarget_iqn: iqn.2001-04.local.vagrant  #definieren Sie Ihr FQDN in umgekehrter Reihenfolge...(local.vagrant)
            - zfs_iscsitarget_target_portals:
                - 192.168.202.0/24
            - zfs_enable_iscsi: true
            - zfs_enable_nfs: true
          roles:
            - role: ansible-zfs
          tasks:
        ```yaml
        #### Galaxy
        ```yaml
        ---
        - name: Installiert ZFS unter Linux
          hosts: all
          become: true
          vars:
            - zfs_iscsistarget_iqn: iqn.2001-04.local.vagrant  #definieren Sie Ihr FQDN in umgekehrter Reihenfolge...(local.vagrant)
            - zfs_iscsitarget_target_portals:
                - 192.168.202.0/24
            - zfs_enable_iscsi: true
            - zfs_enable_nfs: true
          roles:
            - role: mrlesmithjr.zfs
          tasks:

Erweitertes Beispiel zur Erstellung von ZPools

zfs_pools:  # definiert die zu verwaltenden zpool(s)
  - name: 'SSD-TANK'
    action: 'create'
#    atime: 'on'
    options: # setze permanente Optionen beim Erstellen
      ashift: 13
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-INTEL_SSDSC2BW240A4_CVDA352100YL2403GN'
      - 'ata-INTEL_SSDSC2BW240A4_BTDA329505KM2403GN'
      - 'ata-INTEL_SSDSC2BW240A4_CVDA352100GP2403GN'
      - 'ata-INTEL_SSDSC2BW240A4_CVDA401000Q02403GN'
      - 'ata-INTEL_SSDSC2BW240A4_CVDA4010045B2403GN'
      - 'ata-INTEL_SSDSC2BW240A4_BTDA329501102403GN'
      - 'ata-INTEL_SSDSC2BW240A4_BTDA329503XM2403GN'
      - 'ata-INTEL_SSDSC2BW240A4_CVDA4010011R2403GN'
    type: 'raidz2'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'SSD-TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:
      - 'ata-INTEL_SSDSC2BW240A4_BTDA3300022F2403GN'
    type: 'spare'
    state: 'present'
  - name: 'TANK'
    action: 'create'
#    atime: 'on'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-ST2000VN000-1HJ164_W522KVAS'
      - 'ata-ST2000VN000-1HJ164_W522KW2J'
    type: 'mirror'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-ST2000DM001-1CH164_Z1E957EP'
      - 'ata-ST2000DM001-1ER164_W4Z08B5M'
    type: 'mirror'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-ST2000DM001-1ER164_W4Z08FPX'
      - 'ata-ST2000DM001-1ER164_W5009JQ4'
    type: 'mirror'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-ST2000DM001-1CH164_W1E3XCBV'
      - 'ata-ST2000DM001-1CH164_W1E3V7VA'
    type: 'mirror'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-ST31000340NS_9QJ814GW'
      - 'ata-ST31000340NS_9QJ80NQK'
    type: 'mirror'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-INTEL_SSDSC2CW120A3_CVCV248102U3120BGN'
    type: 'cache'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-INTEL_SSDSC2CW120A3_CVCV2515011Y120BGN'
    type: 'cache'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'
  - name: 'TANK'
    action: 'add'
    compression: 'lz4'  # on | off (Standard) | lzjb | gzip | gzip-1 | gzip-2 | gzip-3 | gzip-4 | gzip-5 | gzip-6 | gzip-7 | gzip-8 | gzip-9 | lz4 | zle
    devices:  # definiere Geräte, um einen Pool zu erstellen...kann mehrere durch | sdb sdc sdd sde sdf | alle in einer Zeile mit Leerzeichen definieren
      - 'ata-ST2000DL003-9VT166_5YD48V54'
    type: 'spare'  # definiere Pooltyp... | basic (kein RAID) | mirror | raidz | raidz2 | raidz3
    state: 'present'

Lizenz

BSD

Autor Informationen

Larry Smith Jr.

Über das Projekt

Installs and configures ZFS On Linux (http://zfsonlinux.org/)

Installieren
ansible-galaxy install mrlesmithjr.zfs
Lizenz
mit
Downloads
516.4k
Besitzer
Sharing practical insights on virtualization, cloud, automation, and DevOps to help others build, automate, and innovate with confidence.