Die Antwort von ChatGPT wie der Redis ConnectionPool funktioniert. Ein paar Dinge finde ich komisch.
https://chat.openai.com/share/b10fdadc-2c9b-404a-bc99-c883d110d6af
Ein paar der wichtigsten Befehle, die ich so die letzten Tage kennengelernt und benutzt habe. Wird bei Bedarf erweitert.
Hiermit bauen wir einen ZFS Pool aus zwei Platten auf.
zpool create ZFS-Pool ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K6XD2C26 ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5PPSH52
Zeigt uns den Status des Pools an, welche Platten, Zustand usw.
root@pve:~# zpool status
pool: ZFS-Pool
state: ONLINE
scan: resilvered 1.20T in 02:56:31 with 0 errors on Mon Oct 18 18:28:36 2021
config:
NAME STATE READ WRITE CKSUM
ZFS-Pool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K6XD2C26 ONLINE 0 0 0
ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5PPSH52 ONLINE 0 0 0
errors: No known data errors
Hiermit fügen wir eine oder mehrere Platten zu einem Pool hinzu.
zpool attach ZFS-Pool ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K6XD2C26 ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5PPSH52
Das entfernt eine Platte aus dem Pool.
zpool detach ZFS-Pool 8992518921607088473
Eine Platte, die z.B. ausgefallen ist, wird hiermit ersetzt.
zpool replace ZFS-Pool ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5PPSH52
Listet den Inhalt des ZFS Filesystemes.
root@pve:~# zfs list -t filesystem -o name,used
NAME USED
ZFS-Pool 418G
ZFS-Pool/nas_backup 384G
oder
root@pve:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
ZFS-Pool 418G 3.10T 1.50G /ZFS-Pool
ZFS-Pool/nas_backup 384G 3.10T 384G /ZFS-Pool/nas_backup
ZFS-Pool/vm-100-disk-0 33.0G 3.13T 3.17G -
oder
gibt alle Parameter aus, was für Experten
root@pve:~# zfs get all ZFS-Pool
NAME PROPERTY VALUE SOURCE
ZFS-Pool type filesystem -
ZFS-Pool creation Sat Oct 16 10:50 2021 -
ZFS-Pool used 418G -
ZFS-Pool available 3.10T -
ZFS-Pool referenced 1.50G -
ZFS-Pool compressratio 1.01x -
ZFS-Pool mounted yes -
ZFS-Pool quota none default
ZFS-Pool reservation none default
ZFS-Pool recordsize 128K default
ZFS-Pool mountpoint /ZFS-Pool default
ZFS-Pool sharenfs off default
ZFS-Pool checksum on default
ZFS-Pool compression on local
ZFS-Pool atime on default
ZFS-Pool devices on default
ZFS-Pool exec on default
ZFS-Pool setuid on default
ZFS-Pool readonly off default
ZFS-Pool zoned off default
ZFS-Pool snapdir hidden default
ZFS-Pool aclmode discard default
ZFS-Pool aclinherit restricted default
ZFS-Pool createtxg 1 -
ZFS-Pool canmount on default
ZFS-Pool xattr on default
ZFS-Pool copies 1 default
ZFS-Pool version 5 -
ZFS-Pool utf8only off -
ZFS-Pool normalization none -
ZFS-Pool casesensitivity sensitive -
ZFS-Pool vscan off default
ZFS-Pool nbmand off default
ZFS-Pool sharesmb off default
ZFS-Pool refquota none default
ZFS-Pool refreservation none default
ZFS-Pool guid 16136524096267552939 -
ZFS-Pool primarycache all default
ZFS-Pool secondarycache all default
ZFS-Pool usedbysnapshots 0B -
ZFS-Pool usedbydataset 1.50G -
ZFS-Pool usedbychildren 417G -
ZFS-Pool usedbyrefreservation 0B -
ZFS-Pool logbias latency default
ZFS-Pool objsetid 54 -
ZFS-Pool dedup off default
ZFS-Pool mlslabel none default
ZFS-Pool sync standard default
ZFS-Pool dnodesize legacy default
ZFS-Pool refcompressratio 1.00x -
ZFS-Pool written 1.50G -
ZFS-Pool logicalused 394G -
ZFS-Pool logicalreferenced 1.50G -
ZFS-Pool volmode default default
ZFS-Pool filesystem_limit none default
ZFS-Pool snapshot_limit none default
ZFS-Pool filesystem_count none default
ZFS-Pool snapshot_count none default
ZFS-Pool snapdev hidden default
ZFS-Pool acltype off default
ZFS-Pool context none default
ZFS-Pool fscontext none default
ZFS-Pool defcontext none default
ZFS-Pool rootcontext none default
ZFS-Pool relatime off default
ZFS-Pool redundant_metadata all default
ZFS-Pool overlay on default
ZFS-Pool encryption off default
ZFS-Pool keylocation none default
ZFS-Pool keyformat none default
ZFS-Pool pbkdf2iters 0 default
ZFS-Pool special_small_blocks 0 default
Legt ein Dataset an. Das kann man sich wie einen Ordner vorstellen.
A dataset is a space where you put your data. Datasets are flexible in size and are located inside your pool.
zfs create <Pool_Name>/<dataset>
zfs snapshot datapool/test@today
root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/test@today 0B - 96K -
Die Anleitung zum Thema -> https://openzfs.github.io/openzfs-docs/index.html
Unter dem Beitrag sammel ich mal ein paar Beispiele, für mich zum Nachlesen
Den Anfang macht die
Ich hatte Am Anfang ein wenig Verständnisprobleme, bis es klar war, das diese Replication von Pool zu Pool funktioniert. Also brauchen wir zwei vorhandene ZFS-Pools.
root@pbs:/mnt/datastore/datapool/test# zfs list
NAME USED AVAIL REFER MOUNTPOINT
Backup_Home 222G 677G 222G /mnt/datastore/Backup_Home
datapool 2.36G 1.75T 2.36G /mnt/datastore/datapool
Wir erzeugen ein Dataset im datapool
zfs create datapool/docs -o mountpoint=/docs
Wir erzeugen eine Datei mit Inhalt
echo "version 1" > /docs/data.txt
Wir erzeugen einen Snapshot
zfs snapshot datapool/docs@today
Kontrolle
root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@today 0B - 96K -
Wir replizieren den vorhandenen Snapshot zum ZFS-Pool Backup_Home und speichern ihn da im Dataset test.
zfs send datapool/docs@today | zfs receive Backup_Home/test
Nun befinden sich die Daten in dem anderen ZFS-Pool
root@pbs:/mnt/datastore/datapool/test# ls /mnt/datastore/Backup_Home/test/
data.txt
Und was mich am meisten interessiert, ist wie man das zu einem anderen Server schickt
zfs send datapool/docs@today | ssh otherserver zfs receive backuppool/backup
Den Test reiche ich dann später nach.
Quelle: https://www.howtoforge.com/tutorial/how-to-use-snapshots-clones-and-replication-in-zfs-on-linux/
Als, nur die geänderten Daten senden!
Wir erzeugen ein paar Dateien
root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data1.txt
root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data2.txt
root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data3.txt
root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data4.txt
Neuer Snapshot
zfs snapshot datapool/docs@17:02
Liste der Snapshots
root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@today 56K - 96K -
datapool/docs@17:02 0B - 112K -
Wir senden dieinkrementelle Replication
zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive Backup_Home/test
send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K
total estimated size is 38.6K
cannot receive incremental stream: destination Backup_Home/test has been modified
since most recent snapshot
Dazu schreibt die Anleitung, die ich unten verlinkt habe, das die Daten verändert wurden. Warum, verstehe ich aktuell noch nicht. Mit -F im send Befehl erzwingt man einen Rollback zum letzten Snapshot.
zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive -F Backup_Home/test
send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K
total estimated size is 38.6K
Und Kontrolle
ls /mnt/datastore/Backup_Home/test/
data1.txt data2.txt data3.txt data4.txt data.txt
Quelle: https://klarasystems.com/articles/introduction-to-zfs-replication/