..png)
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, rsync
um die gleiche Leistung wie zu verwenden cp
?
Antwort1
cp
Ich denke, diese Unterschiede zwischen und sind ziemlich gut etabliert rsync
. Siehe diesen Artikel als Referenz mit dem Titel:Ein Blick auf die rsync-Leistung.
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 rsync
täglich. Es gibt Dinge, die Sie tun können, um die Situation zu verbessern.
Sie können beispielsweise versuchen, den -W
Schalter 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 rsync
ist 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) cp
Befehl 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 mawk
installiert haben, geben Sie außerdem die Option an, --mawk
sie zu verwenden.
Zaloha.sh
sammelt Dateisystem-Metadaten über find
Befehle. Eine verbleibende Frage betrifft die Leistung find
auf Ihrer NFS-Freigabe ...