Warum verwenden die Benutzer nicht einfach rsync, um VMware-Gäste zu sichern?

12

Wenn ich ein modernes VMware ESXi-System verwende, kann ich statisch verknüpfte Rsync-Binär- und Rsync-Dateien über SSH an jeden beliebigen Zielort senden.

Ich versuche zu verstehen, warum die meisten (alle?) Backups von VMware-Gästen nicht auf diese Weise durchgeführt werden.

Wenn die VM ausgeführt wird, können Sie einfach 'vim-cmd vmsvc / snapshot.create' verwenden, um einen Snapshot zu erstellen und diesen Snapshot dann mit dem Remote-Host zu synchronisieren. (Es gibt sogar eine Option, um den Schnappschuss "stillzulegen")

ODER, wenn Sie ein robusteres Backup wünschen, können Sie die VM ordnungsgemäß anhalten und über die vmdk-Datei (en) synchronisieren.

Also ... es scheint, als wäre ich ein einfaches Shell-Skript, das sich von allen Sicherungen, die ich jemals machen wollte, einfach und problemlos mit einfachem altem rsync entfernt.

Was vermisse ich hier?

user227963
quelle
1
Denn wenn sich eine einzelne Datei in der VM ändert, müssen Sie die gesamte vmdk sichern?
Fälscher
Nein, rsync aktualisiert eine einzelne Datei nur mit den Änderungen seit der letzten Übertragung. Sicherlich könnten die Operationen der VM VIEL mehr Änderungen hervorrufen, als Sie erwarten, aber es wird Sie nicht dazu bringen, die gesamte vmdk erneut zu senden ...
user227963
Abgesehen von der Tatsache, dass Sie die esxi-Shell nur für Wartungszwecke verwenden sollten, funktioniert das esxi-Betriebssystem nicht auf diese Weise, und Sie würden nicht unterstützt. Ich denke, Sie verstehen das Konzept eines Snapshots falsch. Der Schnappschuss ist in diesem Fall ein Delta. Wenn Sie also einen Schnappschuss machen und ihn sofort kopieren, ist er winzig und enthält fast keine Informationen. Sie denken an einen Backend-Speicher-Snapshot, und ja, die Leute
sichern
1
@Rqomey - In ESXi gibt es verschiedene Arten von "Snapshots". Sie sprechen von der einen Art, die über den vSphere-Client angezeigt wird. Bei Verwendung der API stehen Ihnen jedoch andere Optionen zur Verfügung, z. B .: vollständiges Klonen.
Masi
@MASI Meinst du dann einen Klon im Gegensatz zu einem Schnappschuss? ;)
Rqomey

Antworten:

32
  • Weil die Übertragungsgeschwindigkeiten von der ESXi-Konsole absichtlich begrenzt sind.
  • Weil dies in keiner Weise skalierbar ist.
  • Weil Sie eine statisch kompilierte rsync-Binärdatei auf dem ESXi-Host ablegen müssten.
  • Da sich die VMs, VMDKs, ihre Ramdisk-Dateien und andere Komponenten so stark ändern können, dass rsync zu einem Verlust wird ... Möchten Sie wirklich eine 200-GB-VM neu synchronisieren, die neu gestartet wurde und bei der sich eine geringe Anzahl von Dateien geändert hat?
  • Aufgrund von CPU- / Speicherressourcenanforderungen für die Quelle oder das Ziel. Rsync ist nicht frei.
  • Da es andere Produkte auf dem Markt gibt, die sowohl von Drittanbietern als auch von VMware bereitgestellt werden. Nachschlagen von Changed Block Tracking .
  • Weil ESXi KEIN Allzweck-Betriebssystem ist.

Siehe auch: Installieren von rsync auf einem VMware ESX 4.1-Server

ewwhite
quelle
1
Hervorragende Antwort.
EEAA
3
Sie sind nicht ... ich meine, es ist im Namen: ghettoVCB . Es gibt bessere Lösungen. Veeam, vSphere Data Protection usw.
ewwhite
2
Sie können die rsync-Methode verwenden, wenn Sie auf xen / kvm umstellen.
Zoredache
9
@ user227963 Rsync ist sowohl bei einer großen Anzahl von Dateien als auch bei großen Dateien ziemlich ineffizient. Und obwohl es möglicherweise nicht erforderlich ist, die gesamte Datei erneut über das Netzwerk zu senden , muss es sowohl an der Quelle als auch am Ziel erneut gelesen werden. CBT hilft Ihnen dabei, aber rsync weiß nichts über CBT.
the-wabbit
2
@ user227963 Das Kopieren von Dateien ist einfach. Machen Sie es jetzt schnell und kein Ressourcenfresser bei großen Dateien mit kleinen konstanten Änderungen. rsync ist anständig, aber nicht annähernd so leistungsfähig wie alles, was Insider-Informationen darüber enthält, welche Blöcke geändert wurden.
James Ryan
4

Ich habe das vor ein paar Jahren gemacht. (Bearbeiten: mit VMWare auf CentOS-Hosts, zugegebenermaßen nicht ESXi)

Jede Nacht hatte ich ein Skript, das eine VM anhielt, die Dateien von der Festplatte auf den Sicherungsserver synchronisierte und die VMs dann erneut startete. Es hat ganz gut funktioniert, außer ...

Rsync funktioniert mit einer 2-GB-Datei nicht sehr gut.

Es liegt nicht daran, dass rsync nicht brillant ist, sondern dass sich jede 2 GB große vmdk-Datei auf eine Weise ändert, die für rsync sehr undurchsichtig ist. Selbst kleine Änderungen am beiliegenden Dateisystem führen zu Änderungen in der vmdk (oder allen vmdks aus irgendeinem Grund), die ich beschuldigt habe Windows, das entweder automatisch defragmentiert oder auf andere Weise alle anderen Aktionen ausführt, spielt keine Rolle, wenn Sie ein reales System ausführen, sondern wenn Sie versuchen, eine VM zu synchronisieren!

Ich denke, der rsync-Mechanismus zum Erkennen von Änderungen funktioniert bei einer 2-GB-Datei nicht besonders gut, obwohl er häufig Teile des Starts von vmdk übersprungen hat. Sobald er einen Unterschied festgestellt hat, kopiert er einfach den Rest der Datei. Ich weiß nicht, ob dies ein Problem damit ist, dass rsync einen verschobenen Teil der Binärdaten nicht erkennen kann, der Quellcode nicht über genügend Speicher verfügt oder ob der VMDK gerade vollständig aktualisiert wurde. Es spielt keine Rolle, da das Ergebnis dasselbe war - die Mehrheit der vmdk wurde kopiert.

Am Ende habe ich einfach alle geänderten Dateien kopiert und überschrieben, immer noch mit rsync. Ich hatte auch eine bessere Leistung, indem ich einfach die Sicherungsdatei überschrieb, anstatt rsync kopieren und ersetzen zu lassen, was da war.

Unser Backup-Server war auch nicht der schnellste und es war nicht mehr lange genug, um über Nacht alle laufenden VMs zu sichern.

Als wir jedoch eine VM wiederherstellen mussten, war es wirklich einfach und hat wunderbar funktioniert.

gbjbaanb
quelle
Ok, das ist sehr hilfreich. Ich weiß ein wenig darüber, wie rsync funktioniert, und ich kann Ihnen sagen, dass es nichts mit der Größe der Datei zu tun hat - aber Sie beschreiben, dass viel mehr Änderungen an der Datei vorgenommen werden, als Sie erwarten Angenommen, Sie führen die VM einen Tag lang aus, und Sie tun nur ein paar Kleinigkeiten damit, und dann stoppen Sie sie ... aber die vmdk-Datei hat sich um 30-40% geändert (obwohl Sie sehr wenig getan haben). Rsync würde also prima funktionieren, es muss nur eine Menge Arbeit geleistet werden ... mehr als Sie erwartet haben. Vielen Dank!
user227963
1
Aber dann ... die Frage, die sich dabei stellt ... wie machen es die "professionellen" Werkzeuge? Welche Art von Magie tun sie, die irgendwie optimaler ist als das, was rsync (oder scp oder sogar cp) tun würde? Am Ende des Tages haben Sie eine Unix-Umgebung (die ESXi-Konsole) und möchten eine Datei hinein- oder herausschieben. Welche Geheimnisse könnten damit verbunden sein?
user227963
@ user227963 Die professionellen Tools nutzen Funktionen wie das Verfolgen geänderter Blöcke oder haben Zugriff auf andere vSphere- oder ESXi-APIs.
Ewwhite
2

Das Synchronisieren einer einzelnen Datei ist keine Sicherungslösung.

Was machst du, wenn etwas mit der VM passiert ist und Dateien gelöscht wurden? Sie haben jetzt das gute 'Backup' Ihrer Dateien mit dem schlechten Image überschrieben.

Wenn Sie ein Backup wünschen, müssen Sie die alten Versionen oder die Diffs irgendwo aufbewahren. Rsync kopiert nur die Diffs für Sie, speichert jedoch nicht nur die Diffs, sondern überschreibt die vorherige Datei.

Möglicherweise gibt es hier Optionen für Sie mit rsync und einem schreibgeschützten Dateisystem mit Versionsinformationen, in dem die Unterschiede bei jeder Ausführung Ihres rsync-Skripts gespeichert werden. Diese Lösung wird schon etwas komplizierter, deshalb greifen die Leute imho auf bekannte funktionierende Lösungen zurück.

Jens Timmerman
quelle
Es ist sicherlich viel komplexer, als ich ursprünglich dachte, aber was Sie erwähnen, ist kein Problem. Wenn Sie rsync blindlings immer wieder ausführen, treten, wie Sie vermuten, Probleme auf, aber es gibt viele einfache Möglichkeiten, von rsync erstellte Sicherungen (auch einzelne) zu klonen / zu drehen ... Dieses Problem wurde lange behoben Zum Glück vor einiger Zeit.
user227963
0

Es gibt keinen Grund, warum Sie Rsync nicht auf einem ESXi-Server verwenden können. Wir bieten hier eine statisch kompilierte Version an: https://33hops.com/rsync-for-vmware-vsphere-esxi.html , die sehr gut funktioniert. Es gibt auch Informationen, wie Sie Ihre eigenen kompilieren können.

Trotzdem muss jeder, der es verwenden möchte, berücksichtigen, dass Rsync und sein Delta-Algorithmus nicht dazu gedacht waren, große Dateien mit fester Länge wie VM-Festplatten zu sichern, sondern kleinere Dateien mit variabler Länge zu synchronisieren. Es funktioniert also, aber es braucht viel Zeit und CPU, um die Diff-Daten zu berechnen. Tatsächlich ist dies nur eine Möglichkeit, die Bandbreite über die CPU auszutauschen. Auf jeden Fall funktioniert es immer noch recht gut, besonders wenn Ihre virtuellen Festplatten in der Größenordnung von einigen zehn Gigabyte liegen.

Ich habe hier einen vollständigen Beitrag zum Thema veröffentlicht, in dem alle Vor- und Nachteile aufgeführt sind: https://33hops.com/blog_xsibackup-rsync-considerations.html

Daniel J.
quelle