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

×
Stay Informed

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.

Linkwarden als docker compose mit PostgreSQL-Daten...

By accepting you will be accessing a service provided by a third-party external to https://neticens.de/

Speichern
Cookies Benutzereinstellungen
Wir verwenden Cookies, um Ihnen das beste Erlebnis auf unserer Webseite zu ermöglichen. Wenn Sie die Verwendung von Cookies ablehnen, funktioniert diese Website möglicherweise nicht wie erwartet.
Alle akzeptieren
Alle ablehnen
Analysen
Werkzeuge zur Analyse der Daten, um die Wirksamkeit einer Webseite zu messen und zu verstehen, wie sie funktioniert.
Matomo
Akzeptieren
Ablehnen
Unknown
Unknown
Akzeptieren
Ablehnen