Rsync-Backups auf btrfs sehr langsam

Rsync-Backups auf btrfs sehr langsam

Meine Umgebung ist Ubuntu 15.04 mit Kernel 3.19.0-28-generic und Btrfs v3.17.

Ich habe zwei identische externe USB-Festplatten, die ich mit meinem Backup-Skript verwende. Eine davon ist mit formatiert btrfsund die andere mit ext4. Das Quelldateisystem ist immer ext4. Der rsyncBefehl sieht folgendermaßen aus:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"

Mir ist gerade aufgefallen, dass das durchgeführte Backup btrfseineäußerstlange Zeit: Etwas mehr als eine Stunde, im Vergleich zu den 4 Minuten, die es dauert, dieselbe Kopie durchzuführen ext4.

Um eine Fehlfunktion der Festplatte auszuschließen, habe ich einige Benchmarks mit ddund dem mit Ubuntu mitgelieferten „Festplatten-Dienstprogramm“ durchgeführt, aber ich habe auf beiden Festplatten die gleiche Leistung erzielt. Der langsame Teil scheint das Hardlinking mit dem vorherigen Backup zu sein. Selbst nach einer Defragmentierung und Bereinigung dauert der folgende Befehl unter etwa 53 Minuten btrfs, unter jedoch nur 1 Minute ext4:

cp -arl "$previousBackup" "$destDir"

Bei Recherchen im Internet habe ich Hinweise gefunden, dass die Performance von btrfsunter Hardlinks leidet, aber das hätte ich nicht erwartet.riesigUnterschied. Ich habe herausgefunden, dass dieser Befehl schneller ist, aber trotzdem über 30 Minuten dauert:

cp -ar --reflink "$previousBackup" "$destDir"

Hat jemand Erfahrung mit diesem Verhalten und kann es bestätigen? Gibt es eine einfache Möglichkeit, es zu korrigieren (z. B. andere Mount-Optionen) oder sollte ich versuchen, so viele Hardlinks wie möglich zu löschen und nur Reflinks zu verwenden?

BEARBEITEN

Ich habe gerade herausgefunden, dass sogarLöschenein Verzeichnis btrfsbenötigt mehr als eine Stunde. Derselbe Vorgang ist auf der „Zwillings“ ext4-Platte sofort erledigt. Hier liegt offensichtlich ein Problem mit den Metadaten vor.

Antwort1

Sie sagen, Sie kopieren Hardlinks mit IhremrsyncBefehl, aber wo ist die -HFlagge? Ich sehe sie nicht in Ihrem Befehl:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"

So wie ich es verstehe rsync– in Bezug auf Hardlinks – funktioniert es so, dass ohne das -HFlag tatsächliche Daten kopiert werden, anstatt des Hardlinks, wie auf derrsyncmanpage:

-H, --hard-links

Dies weist rsync an, bei der Übertragung nach fest verknüpften Dateien zu suchen und die entsprechenden Dateien auf der Empfängerseite miteinander zu verknüpfen. Ohne diese Option werden fest verknüpfte Dateien bei der Übertragung so behandelt, als wären sie separate Dateien.

Ich kann mir vorstellen, dass ein solches Verfahren, bei dem viele ähnliche Dateien immer wieder kopiert werden, anstatt sie fest zu verknüpfen, zu längeren Übertragungszeiten führen würde.

Erwägen Sie außerdem die Verwendung des Flags -z( --compress):

-z, --compress

Mit dieser Option komprimiert rsync die Dateidaten beim Senden an den Zielcomputer, wodurch die übertragene Datenmenge reduziert wird – was bei einer langsamen Verbindung nützlich ist.

Ja, dies ist eine USB-zu-USB-Übertragung auf demselben System, sodass die Geschwindigkeit wahrscheinlich bereits optimiert ist. Es schadet jedoch nicht, dies zu überprüfen, da es -zIhnen vielleicht dabei hilft, natürliche Engpässe bei der USB-Datenübertragung zu überwinden.

Ein schönes, einfaches Tutorial, das diese und andere Flags erklärt.finden Sie hier.

verwandte Informationen