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.
- @mrlesmithjr
- http://everythingshouldbevirtual.com
- mrlesmithjr [at] gmail.com
Installieren
ansible-galaxy install mrlesmithjr.zfsLizenz
mit
Downloads
516.4k
Besitzer
Sharing practical insights on virtualization, cloud, automation, and DevOps to help others build, automate, and innovate with confidence.
