GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Synchronisieren Sie LVM-Snapshots mit dem Sicherungsserver

Lösung 1:

Obwohl es 'Write-Device'- und 'Copy-Device'-Patches für RSync gibt, funktionieren sie nur bei kleinen Images (1-2 GB) gut. RSync wird ewig damit verbringen, auf größeren Bildern nach übereinstimmenden Blöcken zu suchen, und es ist fast nutzlos für Geräte/Dateien mit 40 GB oder mehr.

Wir verwenden Folgendes, um einen Prüfsummenvergleich pro 1 MB durchzuführen und kopieren dann einfach den Inhalt, wenn er nicht übereinstimmt. Wir verwenden dies, um Server auf einem virtuellen Host in den USA über das öffentliche Internet auf ein Sicherungssystem in Großbritannien zu sichern. Sehr wenig CPU-Aktivität und Snapshot-Performancehit nur nach Stunden:

Snapshot erstellen:

lvcreate -i 2 -L 25G /dev/vg_kvm/company-exchange -n company-exchange-snap1

export dev1='/dev/mapper/vg_kvm-company--exchange--snap1';
export dev2='/dev/mapper/vg_kvm-company--exchange';
export remote='[email protected]';

Anfängliches Seeding:

dd if=$dev1 bs=100M | gzip -c -9 | ssh -i /root/.ssh/rsync_rsa $remote "gzip -dc | dd of=$dev2"

Inkrementelles nächtliches Backup (sendet nur geänderte Blöcke):

ssh -i /root/.ssh/rsync_rsa $remote "
  perl -'MDigest::MD5 md5' -ne 'BEGIN{\$/=\1024};print md5(\$_)' $dev2 | lzop -c" |
  lzop -dc | perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
    read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 | lzop -c |
ssh -i /root/.ssh/rsync_rsa $remote "lzop -dc |
  perl -ne 'BEGIN{\$/=\1} if (\$_ eq\"s\") {\$s++} else {if (\$s) {
    seek STDOUT,\$s*1024,1; \$s=0}; read ARGV,\$buf,1024; print \$buf}' 1<> $dev2"

Schnappschuss entfernen:

lvremove -f company-exchange-snap1

Lösung 2:

Dem Standard-rsync fehlt diese Funktion, aber es gibt einen Patch dafür im rsync-patches-Tarball (copy-devices.diff), der von http://rsync.samba.org/ftp/rsync/After appling and recompiling heruntergeladen werden kann , können Sie Geräte mit der Option --copy-devices rsyncen.

Lösung 3:

Personen, die daran interessiert sind, dies speziell mit LVM-Snapshots zu tun, könnten mein lvmsync-Tool mögen, das die Liste der geänderten Blöcke in einem Snapshot liest und nur diese Änderungen sendet.

Lösung 4:

Werfen Sie einen Blick auf das Zumastor Linux Storage Project, es implementiert eine „Snapshot“-Sicherung mit binärem „rsync“ über das ddsnap-Tool.

Von der Manpage:

ddsnap bietet Blockgerätereplikation mit einer Snapshot-Funktion auf Blockebene, die in der Lage ist, mehrere gleichzeitige Snapshots effizient zu speichern. ddsnap kann eine Liste von Snapshot-Chunks generieren, die sich zwischen zwei Snapshots unterscheiden, und diese Differenz dann über die Leitung senden. Schreiben Sie auf einem Downstream-Server die aktualisierten Daten auf ein Snapshot-Blockgerät.

Lösung 5:

Es gibt ein Python-Skript namens blocksync, das eine einfache Möglichkeit darstellt, zwei Blockgeräte über ein Netzwerk per ssh zu synchronisieren und nur die Änderungen zu übertragen.

  • Kopieren Sie blocksync.py in das Home-Verzeichnis auf dem Remote-Host
  • Stellen Sie sicher, dass Ihr Remote-Benutzer entweder sudo kann oder selbst root ist
  • Stellen Sie sicher, dass Ihr lokaler Benutzer (root?) das Quellgerät lesen und ssh auf den Remote-Host senden kann
  • Aufruf:python blocksync.py /dev/source [email protected] /dev/dest

Ich habe es kürzlich gehackt, um es zu bereinigen und es so zu ändern, dass es denselben schnellen Prüfsummenalgorithmus wie rsync (Adler-32) verwendet.


Linux
  1. So erstellen Sie eine Sicherung

  2. Bereiten Sie die Migration eines Windows-Servers vor

  3. So erstellen Sie Snapshots von LVM-Thin-Volumes mit dem Snapper-Befehl

  4. LVM-Befehle schlagen fehl mit „Failed to load config file /etc/lvm/lvm.conf“

  5. Wie behalte oder lösche ich einen LVM-Snapshot?

Ein Leitfaden zu LVM-Snapshots mit ext4 unter CentOS 7

Einrichten einer LVM-Partition auf einem Linux-Server

So erstellen und wiederherstellen Sie VM-Snapshots in VirtualBox

Installieren Sie Firefox Sync Server auf Debian 11

Sicherung und Wiederherstellung von LVM-Snapshots unter Linux

Verwenden Sie NTP, um die Zeit zu synchronisieren