rsync ist im Vergleich zu cp beim Kopieren von Dateien von einer NFS-Freigabe in ein lokales Verzeichnis sehr langsam (Faktor 8 bis 10).

rsync ist im Vergleich zu cp beim Kopieren von Dateien von einer NFS-Freigabe in ein lokales Verzeichnis sehr langsam (Faktor 8 bis 10).

Ich habe einen frisch installierten Ubuntu-Server, der der neue Backup-Server für unseren VM-Speicher sein soll. Der Server hat 4 Netzwerkkarten, 2 davon 10 Gbit (tatsächlich eine Intel x540-T2 mit dem neuesten verfügbaren Treiber), die zur Verbindung mit dem SAN verwendet werden. Ich habe die NFS-Freigabe lokal gemountet und die Geschwindigkeitsunterschiede beim Kopieren eines Verzeichnisses mit ~30 Dateien, etwa 15 VM-Images und entsprechenden Protokolldateien verglichen. Die Images sind zwischen 8 GB und 600 GB groß.

Verwendung:

cp -rf /mnt/nfs-share /backup-storage/

bmon zeigt folglich rund 600 MiB/s an.

Verwenden von

rsync -av /mnt/nfs-share /backup-storage/

bmon zeigt in den ersten Sekunden einige Pakete an, hält dann für etwa 30 Sekunden an und steigert sich dann auf etwa 60–75 MiB/s. Die CPU-Auslastung liegt bei etwa 60 %.

Was sollte/könnte ich ändern, rsyncum die gleiche Leistung wie zu verwenden cp?

Antwort1

cpIch denke, diese Unterschiede zwischen und sind ziemlich gut etabliert rsync. Siehe diesen Artikel als Referenz mit dem Titel:Ein Blick auf die rsync-Leistung.

Auszug:
The four commands tested were:

    rsync $SRC $DEST
    echo $SRC | cpio -p $DEST
    cp  $SRC $DEST
    cat $SRC > $DEST/$SRC

The results for rsync, cpio, cp, and cat were:

user    sys     elapsed hog MiB/s   test
5.24    77.92   101.86  81% 100.53  cpio
0.85    53.77   101.12  54% 101.27  cp
1.73    59.47   100.84  60% 101.55  cat
139.69  93.50   280.40  83% 36.52   rsync

Ich konsumiere rsynctäglich. Es gibt Dinge, die Sie tun können, um die Situation zu verbessern.

Sie können beispielsweise versuchen, den -WSchalter zu verwenden:

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)

Außerdem empfehle ich, sicherzustellen, dass Sie die 3.x-Versionen von haben rsync. Beim Wechsel auf die neueren Versionen gab es spürbare Verbesserungen.

Antwort2

Damit rsync die gleiche Leistung wie cp hat, schreiben Sie es „cp“.

Der Unterschied zwischen den beiden Befehlen ist erheblich, auch wenn der Nettoeffekt derselbe sein kann. Insbesondere führt rsync eine Menge Lesevorgänge durch, um zu sehen, ob eine Datei oder ein Teil einer Datei kopiert werden soll oder nicht.

Gibt es einen Grund, warum Sie rsync verwenden möchten? Da cp „blind“ kopiert, werden Sie eine höhere Rohleistung feststellen. Wenn für eine Reihe von Auslösebedingungen der „Delta-Transfer“-Mechanismus von rsync verwendet wird, werden Sie feststellen, dass die Übertragungsraten sinken und die CPU-Auslastung in etwa so ansteigt, wie Sie es berichten.

Antwort3

Für diesen Anwendungsfall rsyncist dies eine unnötig komplexe Maschine. Wenn Sie mit einer Synchronisierung auf Grundlage des Vergleichs von Dateiänderungszeiten und Dateigrößen einverstanden sind, sollten an beiden Enden nur Dateisystemmetadaten gesammelt, verglichen und die geänderten (oder neuen) Dateien mit dem (lokalen) cpBefehl kopiert werden.

Dieser kleine und einfache Synchronizer könnte Sie interessieren, der Folgendes kann:Fitus/Zaloha.sh

Es wird wie folgt verwendet:

$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"

Um die Analysephase zu beschleunigen, sollten Sie die Generierung der Wiederherstellungsskripte überspringen: Verwenden Sie die Option --noRestore. Wenn Sie die schnelle Version mawkinstalliert haben, geben Sie außerdem die Option an, --mawksie zu verwenden.

Zaloha.shsammelt Dateisystem-Metadaten über findBefehle. Eine verbleibende Frage betrifft die Leistung findauf Ihrer NFS-Freigabe ...

verwandte Informationen