Hat jemand eine echte differentielle Synchronisation mit rsync in ESXi erreicht?

11

Beschimpfe mich später darüber, dass ich die Servicekonsole verwende, um irgendetwas in ESXi zu tun ...

Ich habe eine funktionierende rsync-Binärdatei (v3.0.4), die ich in ESXi 4.1U1 verwenden kann. Ich neige dazu, rsync über cp zu verwenden, wenn VMs oder Sicherungen von einem lokalen Datenspeicher in einen anderen lokalen Datenspeicher kopiert werden. Ich habe rsync verwendet, um Daten von einer ESXi-Box in eine andere zu kopieren, aber das war nur für kleine Dateien.

Beim Versuch, echte differenzielle Synchronisierungen von Sicherungen durchzuführen, die über ghettoVCB zwischen meinem primären ESXi-Computer und einem sekundären Computer erstellt wurden. Aber selbst wenn ich dies lokal mache (ein Datenspeicher in einen anderen Datenspeicher auf demselben ESXi-Computer), scheint rsync die Dateien vollständig zu kopieren. Ich habe in der Größe zwei VMDKs total 80GB bekam, und rsync nimmt immer noch irgendwo zwischen 1 und 2 Stunden , aber die VMDKs wachsen nicht , dass viel täglich.

Unten ist der Befehl rsync, den ich ausführe. Ich kopiere lokal, weil diese Dateien letztendlich in einen Datenspeicher kopiert werden, der von einer LUN auf einem Remote-System erstellt wurde. Es ist kein Rsync, der von einem Rsync-Daemon auf einem Remote-System bedient wird.

rsync -avPSI VMBACKUP_2011-06-10_02-27-56/* VMBACKUP_2011-06-01_06-37-11/ --stats --itemize-changes --existing --modify-window=2 --no-whole-file
sending incremental file list
>f..t...... VM-flat.vmdk
 42949672960 100%   15.06MB/s    0:45:20 (xfer#1, to-check=5/6)
>f..t...... VM.vmdk
         556 100%    4.24kB/s    0:00:00 (xfer#2, to-check=4/6)
>f..t...... VM.vmx
        3327 100%   25.19kB/s    0:00:00 (xfer#3, to-check=3/6)
>f..t...... VM_1-flat.vmdk
 42949672960 100%   12.19MB/s    0:56:01 (xfer#4, to-check=2/6)
>f..t...... VM_1.vmdk
         558 100%    2.51kB/s    0:00:00 (xfer#5, to-check=1/6)
>f..t...... STATUS.ok
          30 100%    0.02kB/s    0:00:01 (xfer#6, to-check=0/6)

Number of files: 6
Number of files transferred: 6
Total file size: 85899350391 bytes
Total transferred file size: 85899350391 bytes
Literal data: 2429682778 bytes
Matched data: 83469667613 bytes
File list size: 129
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 2432530094
Total bytes received: 5243054

sent 2432530094 bytes  received 5243054 bytes  295648.92 bytes/sec
total size is 85899350391  speedup is 35.24

Liegt das daran, dass ESXi selbst so viele Änderungen an den VMDKs vornimmt, dass für rsync die gesamte Datei erneut übertragen werden muss?

Hat jemand tatsächlich eine tatsächliche Diff-Synchronisierung mit ESXi erreicht?

JuliusPIV
quelle
rsynce ist standardmäßig inkrementell. Schwer zu glauben, aber wahr. Ich bin gespannt, wohin Sie den Download für rsynce gehen, der unter ESXi funktioniert. Ich habe ESXi 4.1

Antworten:

6

Es sieht so aus, als hätten Sie nur 2 GB inkrementelle Änderungen übertragen. Denken Sie daran, dass rsync immer noch eine ganze Datei einlesen und die Prüfsumme prüfen muss, damit 80 GB Daten gelesen werden können. Überprüfen Sie Ihre Serverstatistiken während der Rsync. Sind Sie während der Operation an CPU oder E / A gebunden? Wie schnell können Sie die 80-GB-Datei von der Festplatte lesen? Das liegt in der Nähe Ihrer absoluten Mindestübertragungszeit.

Bemerkenswert ist auch, dass rsync während der Übertragung eine Kopie der Datei erstellt und dann die endgültige Datei in einer atomaren Operation an ihren Platz verschiebt. Sie können dies sehen, indem Sie während der Übertragung im Zielverzeichnis einen ähnlichen Dateinamen mit einem zufälligen Suffix sehen. Dies bedeutet, dass Sie 160 GB Daten lesen müssen (jeweils 80 GB für jede Quelle und jedes Ziel) und 80 GB auf der Zielseite ausschreiben müssen. Haben Sie sich die Option --inplace angesehen? Dies kann hier von Vorteil sein.

Kurz gesagt, Sie haben möglicherweise nur 2 GB Änderungen, aber rsync erledigt eine Menge Arbeit. Sie sind wahrscheinlich an E / A gebunden, da all das Lesen und Schreiben auf derselben Festplatte zu vielen Konflikten und Verlangsamungen führen kann.

bot403
quelle
Danke bot403 für deine Antwort. Ich habe festgestellt, dass die übertragenen Bytes erheblich niedriger waren, aber ich habe immer noch eine Wartezeit von über 30-45 Minuten angesehen. Ich hätte genauso gut die Dateien in ihrer Gesamtheit erneut senden können. Es könnte hier einen IO-Flaschenhals geben, aber ich denke, das liegt in ESXi und nicht so sehr in der Hardware. Ich werde es auf eine LUN verschieben und dort testen. Vielen Dank an alle.
JuliusPIV
4

Dieser Thread ist sehr alt, aber vielleicht hilft er jemandem.

Da ESX das Dateisystem bei jedem Schreiben neuer Blöcke sperrt, ist die Leistung nicht so gut. Mit der Option - an Ort und Stelle erhalten Sie möglicherweise bessere Ergebnisse. Beachten Sie jedoch, dass die Datei nicht konsistent ist, wenn Sie die Synchronisierung abbrechen Mehr. In Bezug auf die Konsistenz kann rsync einer geöffneten Datei in irgendeiner Weise inkonsistent sein -> verwenden Sie besser den Snapshot vor rsync.

Beste Grüße Marc

Nessi
quelle
2

Wie es aussieht, erstellen Sie eine lokal-zu-lokal-Kopie mit rsync. In diesem Fall besteht das Standardverhalten von rsyncdarin, den Delta-Übertragungsalgorithmus auszuschalten und "Ganzdatei" -Transfers durchzuführen. Der Grund für dieses Standardverhalten ist, dass lokale Übertragungen unter Verwendung des Delta-Xfer-Algorithmus normalerweise langsamer sind als das einfache Kopieren der gesamten Dateien, da der Delta-Algorithmus viel mehr CPU-Crunching als nur das Kopieren der gesamten Datei umfasst.

Wenn Sie der Meinung sind, dass eine lokal-zu-lokal-Kopie von der Verwendung des Delta-Xfer-Algorithmus profitieren würde, können Sie die rsyncVerwendung erzwingen , indem Sie die Option --no-W(oder --no-whole-file) angeben.

Steven Montag
quelle
Danke für die Antwort Steven! Sie haben Recht: Ich mache eine lokale Kopie nur zu Testzwecken (auch bekannt als Bestätigung, dass tatsächlich eine differenzielle Synchronisierung durchgeführt wird). Letztendlich werden die Dateien in einen lokalen Datenspeicher kopiert, eine LUN, die ich verfügbar gemacht habe und die sich auf einem Remotecomputer befindet. Es wird eigentlich keine Synchronisierung vom Typ rsync-to-rsync-Daemon sein. Für was es wert ist, benutze ich die --no-whole-fileOption als Teil des Befehls rsync; Es ist jenseits der Sicht des Bildschirms.
JuliusPIV
@ Julius: Hoppla, ich habe diese horizontale Bildlaufleiste verpasst! Tut mir leid, dass du deine Zeit verschwendest.
Steven Montag,