rsync --sparse bedeutet transfer für die gesamten Daten
Ich habe einige VM-Images müssen, synchronisierten Alltag. Die VM-Dateien sind spärlich würde.
Zur Einsparung von Netzwerk-traffic, die ich nur übertragen wollen, um die real-Daten der Bilder.
Ich versuche es mit --sparse-option bei rsync aber auf den Netzwerkverkehr ich sehen, dass die ganze Größe erhalten, übertragen über das Netzwerk und nicht nur die realen Daten Nutzung.
Wenn ich mit rsync -zv --sparse dann nur die wirkliche Größe erhalten, über das Netzwerk übertragen und alles ist ok. Ich möchte aber nicht die Komprimierung der Datei, weil der cpu-Auslastung.
Shouldnt --sparse-option übertragen Sie nur die realen Daten und die "null-Daten" erstellt, lokal zu speichern Netzwerkverkehr?
Gibt es einen workaround ohne Komprimierung?
Dank!
InformationsquelleAutor user2933212 | 2013-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schauen Sie einem diese Diskussion, insbesondere diese Antwort.
Es scheint, dass die Lösung besteht darin, eine
rsync --sparse
gefolgt von einemrsync --inplace
.Auf den ersten
--sparse
rufen auch--ignore-existing
um zu verhindern, dass die bereits übertragen wurden, sparse-Dateien werden überschrieben, und die-z
zur Einsparung von Netzwerk-Ressourcen.Den zweiten Aufruf
--inplace
, solltenUpdates werden nur geänderte chunks. Hier die Komprimierung ist optional.Siehe auch dieser Beitrag.
Update
Glaube ich, dass die obigen Vorschläge nicht Ihr problem lösen. Ich glaube auch, dass
rsync
ist nicht das richtige Werkzeug für die Aufgabe. Sie sollten die Suche nach anderen tools, die Ihnen eine gute balance zwischen Netzwerk und Festplatten-I/O-Effizienz.Rsync
wurde speziell für die effiziente Nutzung einer bestimmten Ressource, die Netzwerk. Es wird davon ausgegangen das Lesen und schreiben im Netz ist viel teurer als das Lesen und schreiben der Quell-und Ziel-Dateien.Den Algorithmus, zusammengefasst in vier Schritten.
Beachten Sie, dass
rsync
normalerweise rekonstruiert die Datei B als temporäre Datei T, dann ersetzt B mit T. In diesem Fall muss er schreiben die ganze Datei.Den
--inplace
entbindet nicht vonrsync
vom schreiben von Blöcken abgestimmt α, als man sich vorstellen konnte. Sie können match bei verschiedenen offsets. Scannen B ein zweites mal, um neue Daten Checksumme ist unerschwinglich in Bezug auf Leistung. Ein block entspricht, in dem gleichen offset war es zu Lesen auf Schritt man könnte übersprungen werden, aberrsync
macht das nicht. Im Falle einer sparse-Datei wird ein null-block B passen würden, für jeden null-block Eine und umgeschrieben werden müsste.Den
--inplace
nur Ursachenrsync
schreiben Sie direkt an B, statt T. Es überschreibt die gesamte Datei.lok/1.qcow2 34.37G 100% 53.89MB/s 0:10:08 (xfer#1, to-check=3/9) lik/1.qcow2 34.37G 100% 40.15MB/s 0:13:36 (xfer#2, to-check=2/9) sent 4.20M bytes received 90.71M bytes 51.17K bytes/sec total size is 139.13G speedup is 1466.03
Nur 90 MB geändert, aber die ganze Datei umgeschrieben habe. Was nutzt viel CPU und IO. Ist es nicht möglich, dass rsync dont schreiben Sie die Datei und ersetzen Sie einfach die änderungen?aber sind Sie zwei aufeinander folgende
rsync
aufrufen, oder verwenden Sie--sparse
und--inplace
gleichzeitig in einem einzigen Aufruf?Wenn die Datei nicht vorhanden ist mache ich rsync --sparse, wenn die Datei vorhanden ist, die ich machen rsync --inplace. Dies sollte korrekt sein. Die Ausgabe von oben war von rsync --inplace - (die Dateien sind bereits auf dem backup-server).
Es ist die Arbeit. Aber das problem ist, dass rsync Neuschreiben der kompletten Datei. Aber über das Netzwerk überträgt nur die neuen bits (wie im Beispiel über, 70 GB eingerichtet schriftliche, 90 MB änderungen trasmitted). Ich finde es nicht normal, dass die ganze Datei umgeschrieben, es sollte nur ersetzen ändert. Schreiben Sie die gesamte Datei macht hoch IO, nimmt viel CPU-Leistung und Zeit. Mein Befehl (die Datei existiert schon auf meinem backup-server):
rsync -rvh --progress --inplace [email protected]:/kvm /backup/kvm
Es korrekt übertragen:12G -rw-r--r-- 1 root root 33G Nov 15 13:06 vm-100-disk-1.qcow2
bitte siehe meine überarbeitete Antwort.
InformationsquelleAutor Rafa
Könnten Sie versuchen, zu ändern, der Grad der Komprimierung auf den niedrigsten Wert (verwenden Sie die option
--compress-level=1
). Die niedrigste Komprimierungsstufe zu sein scheint genug, um zu verringern den Datenverkehr für sparse-Dateien. Aber ich weiß nicht, wie die CPU-Auslastung betroffen ist.InformationsquelleAutor Bastian