zsync für Proxmox - Teil 1 Installation
zsync ist ein Werkzeug zur effizienten Synchronisation von ZFS-Dateisystemen über das Netzwerk. Es ermöglicht die Erstellung und Übertragung von Snapshots zwischen Quell- und Zielsystemen, um Daten konsistent und sicher zu replizieren.
Hauptmerkmale von zsync:
- Pull-Funktionalität: Daten können von einem entfernten Quellsystem zu einem lokalen Zielsystem gezogen werden, was besonders nützlich für Backups ist.
- Snapshot-Verwaltung: Automatisierte Erstellung und Verwaltung von Snapshots zur Sicherstellung der Datenkonsistenz.
- SSH-Unterstützung: Verbindungen zu entfernten Systemen werden sicher über SSH hergestellt, wobei für ZFS-Befehle
sudo
verwendet wird. - Inkrementelle Übertragungen: Nach der ersten vollständigen Übertragung werden nur noch Änderungen übertragen, was Bandbreite spart und die Effizienz erhöht.
Installation und -Konfiguration
Installation von zsync auf dem Zielserver
echo "deb [signed-by=/usr/share/keyrings/bashclub-archive-keyring.gpg] https://apt.bashclub.org/release bookworm main" > /etc/apt/sources.list.d/bashclub.list
wget -O- https://apt.bashclub.org/gpg/bashclub.pub | gpg --dearmor > /usr/share/keyrings/bashclub-archive-keyring.gpg
apt update
apt install bashclub-zsync
ssh konfigurieren
Dazu hinterlegt man auf dem Quell-Server (wo die Snapshots herkommen) beim Benutzer root den öffnetlichen ssh-Schlüssel des Benutzers root vom Ziel-Server (wo die Snapshots vom Quell-Server gespeichert werden sollen) in der authorized_keys-Datei.
Konfiguration auf dem Zielserver
-
Zuerst erstellen wir eine Konfigurationsdatei für das Script. Standardmäßig wird die Datei
/etc/bashclub/zsync.conf
verwendet. Eine zsync.conf.example sollte vorhanden sein.
cd /etc/bashclub
cp zsync.conf.example zsync.conf
-
Wie in der Dokumentation zu zsync beschrieben muss jetzt die zsync.conf angepasst werden (mit vi, nano, etc.)
Konfiguration auf dem Quellserver
-
Wir fragen zuerst ab welche ZFS-Dateisysteme oder Volumes schon markiert (mit tag versehen) sind:
zfs get bashclub:zsync
Hier sollte noch nichts mit bashclub-zsync Tags mit Werten wie "all", "subvols" oder "exclude" markiert sein.
-
Nun das ZFS-Dateisystem oder Volume identifizieren, das wir für die Replikation markieren möchten, z.B. pool-ssd16k/data
-
Wir führen nun den Markierungs-Befehl aus, das ist das Schema (bitte schau hier auch in die Dokumentation):
zfs set bashclub:zsync=<value> <datensatz>
Also z.B.
zfs set bashclub:zsync=subvols pool-ssd16k/data
-
Durch die Markierung mit dem Attribut "bashclub:zsync" wird das betreffende ZFS-Dateisystem oder -Volume für die Replikation mit dem bashclub-zsync-Script berücksichtigt.
Log-Verzeichnis auf dem Zielserver
-
Wir verwenden das Verzeichnis
/var/log/bashclub-zsync
, falls es noch nicht existiert:
mkdir -p /var/log/bashclub-zsync
zsync Testweise starten
Den sync-Vorgang können wir jetzt so einmal (oder öfter) starten:
/usr/bin/bashclub-zsync -c /etc/bashclub/zsync.conf >> /var/log/bashclub-zsync/zsync.log 2>&1
Cron-Job
Damit zsync immer um eine bestimmte Zeit ausgeführt wird, erstellen wir zuerst ein Script dafür:
mkdir /root/zsync
Wir fürgen hier eine Datei "bashclub-zsync-cron.sh" hinzu und editieren sie:
# Das Script wird von cron unter /etc/cron.d/bashclub-zsync zeitgesteuert ausgeführt
#
# Updates Einspielen
apt update && apt dist-upgrade -y
# zsync starten
/usr/bin/bashclub-zsync -c /etc/bashclub/zsync.conf >> /var/log/bashclub-zsync/zsync.log 2>&1
# Server ausschalten
poweroff
Das Script führt immer zuerst eine Update des Proxmox-Systems aus, dann startet es zsync und am Schluß fährt es den Server herunter.
Unter "/etc/cron.d" legen wir jetzt eine Datei "bashclub.zsync" an mit folgendem Inhalt:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
5 0 * * * root /root/zsync/bashclub-zsync-cron.sh
Das angegebene Script wird also immer um 0 Uhr und 5 Minuten jeden Tag ausgeführt.
Aufwecken des Zielservers
Damit der zsync-Backup-Server immer um eine bestimmte Zeit gestartet wird, installieren wir auf einer (Debian) VM oder LXC-Container auf dem Quellserver den Befehl "wakeonlen":
apt install wakeonlan
Nun erstellen wir einen cron-Job der den Befehl ausführt, z.b. so:
0 0 * * * wakeonlan <Mac-Adresse des zsync-Backup-Servers>
Mit diesem Befehl wird der zsync-Backup-Server immer um 0 Uhr und 0 Minuten jeden Tag gestartet und führt dann wie oben beschrieben das "bashclub-zsync-cron.sh"-Script um 0 Uhr und 5 Minuten aus.
Erklärung zum Monitoring mit Checkmk
Der zsync-Befehl erstellt automatisch nach dem syncen eine Konfigrations-Datei für checkmk, damit das Ergebnis ins Monitoring einfliest und sichbar wird.
checkmk ist hier zu finden: https://checkmk.com
Zum Schluß
Wenn ihr zsync regelmäßig nutzt, denk bitte auch an eine KoFi-Spende an den Entwickler: https://ko-fi.com/thorakel
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
By accepting you will be accessing a service provided by a third-party external to https://neticens.de/