Frage Maximierung von Rsync-Leistung und -Durchsatz - direkt verbundene Gigabit-Server


Ich habe zwei Dell R515-Server mit CentOS 6.5, wobei jeweils einer der Broadcom-NICs direkt mit dem anderen verbunden ist. Ich benutze den direkten Link, um Backups vom Hauptserver des Paares jeden Abend zum sekundären zu schieben, indem ich rsync über ssh benutze. Wenn ich den Verkehr beobachte, sehe ich einen Durchsatz von ~ 2MBps, was viel weniger ist, als ich von einem Gigabit-Port erwarten würde. Ich habe die MTU auf beiden Seiten auf 9000 eingestellt, aber das änderte nichts.

Gibt es empfohlene Einstellungen und Optimierungen, die mich zum maximal verfügbaren Durchsatz führen würden? Da ich rsync über ssh (oder möglicherweise nur NFS) verwende, um Millionen von Dateien zu kopieren (~ 6Tb kleiner Dateien - ein riesiger Zimbra-Mailspeicher), müssen die Optimierungen, die ich suche, möglicherweise spezifischer für meinen speziellen Anwendungsfall sein .

Ich benutze ext4 auf beiden Seiten, wenn das wichtig ist

Vielen Dank

EDIT: Ich habe folgendes benutzt rsync Optionen mit ziemlich ähnlichen Ergebnissen:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

Momentan sehe ich die gleiche schlechte Leistung bei der Verwendung cp zu einem NFS-Export, über die gleiche direkte Kabelverbindung.

EDIT2: Nach Abschluss der Synchronisierung konnte ich laufen iperf und die gefundene Leistung lag bei 990 Mbit / s, die Langsamkeit war auf den tatsächlichen Datensatz zurückzuführen.


23
2018-04-20 18:02


Ursprung


Sie sollten Rsync zu Ihren Tags hinzufügen. Hast du die Zeit für den Listing-Teil von rsync überprüft? Der geringe Durchsatz kann auf kleine Dateien zurückzuführen sein. Können Sie Ihren rsync-Befehl zur Überprüfung der Optionen posten? - kranteg
@Kranteg siehe bitte bearbeiten - dyasny
Überprüfen Sie die Verbindung mit iperf. - ewwhite
yup, iperf zeigt 991mbits / s, ich denke es ist das Dataset, das so langsam war - dyasny
Mit rsync und einem Dataset mit kleinen Dateien können Sie keine guten Ergebnisse erzielen. Sie sollten auf jeden Fall Teer versuchen. - kranteg


Antworten:


Die Anzahl der Dateien und der SSH-Verschlüsselungsaufwand sind wahrscheinlich die größten Hindernisse. Sie werden keine Drahtgeschwindigkeit bei einer Übertragung wie dieser sehen.

Zu verbessernde Optionen umfassen:

  • Verwenden von rsync + SSH mit einem weniger kostspieligen Verschlüsselungsalgorithmus (z. -e "ssh -c arcfour")
  • Verschlüsselung vollständig über den SSH-Transport mit etwas wie HPN-SSH.
  • Blockbasierte Übertragungen Schnappschüsse, dd, ZFS-Snapshot senden / empfangen, usw.
  • Wenn es sich um eine einmalige oder seltene Übertragung handelt, verwenden Sie tar, Netcat (nc), mbuffer oder irgendeine Kombination.
  • Überprüfe deine CentOS tuned-adm die Einstellungen.
  • Entfernen Sie die Zeit von Ihren Dateisystem Mounts. Untersuchen anderer Dateisystem-Mount-Optionen
  • NIC-Sende- / Empfangspuffer.
  • Tuning Ihre rsync Befehl. Würde -Wmacht die Option für ganze Dateien hier Sinn? Ist die Komprimierung aktiviert?
  • Optimieren Sie Ihr Speichersubsystem für den Übertragungstyp (SSDs, Spindle-Count, RAID-Controller-Cache).

22
2018-04-20 18:17



Ich habe SSH für NFS verloren und sehe so ziemlich die gleichen Ergebnisse. Blockbasierte Übertragungen sind, was ich plane, wechseln zu LVM Snapshot basierten Backups und dd die Backups auf den zweiten Server, wo ich ZFS für Deduplizierung ausführen werde. Atime ist auf beiden Seiten deaktiviert. Es wird keine Komprimierung verwendet. Wie optimiere ich die Storage Subsys für diese Art der Übertragung? Die Quelle verfügt über zwei RAID10 über 12x 10k SAS-Laufwerke, eines auf den lokalen Laufwerken, das andere ein MD1220. Der Backup-Server hat die gleiche Festplattenanzahl, jedoch mit großen SATA-Laufwerken und verwendet RAID5. Volle Cache H800 und H700 Controller auf beiden Seiten. 2MBps (von iftop) ~ - dyasny
~ lässt mich denken, Networking ist hier dennoch der Flaschenhals. - dyasny
@dyasny Testen Sie Ihr Netzwerk mit iperf um sicher zu sein. - ewwhite
@dyasny Ja. Das meiste, was Sie über ZFS wissen müssen, ist hier - ewwhite
Stellen Sie sicher, dass die Zielverzeichnisstruktur von erstellt wurde rsync und nicht durch cp. Ich habe gesehen rsync nehmen viel länger, um einen Remote-Verzeichnisbaum zu aktualisieren, der ursprünglich von cp: 88GB aktualisiert mit checksumming in 1h26m statt 3h! Wie Sie das ursprüngliche Festplattenlayout erstellen, ist entscheidend für eine gute Update-Leistung. Die CPU-Zeit ist gleich; Die Echtzeit kann sich verdoppeln. (Das gleiche Update ohne Checkumming läuft in 13 Minuten von einer SSD auf eine 200GB Seagate). - Ian D. Allen


Wie Sie wahrscheinlich wissen, kopieren viele kleine Dateien (z. B. Mailboxen mit MailDir-Format oder ähnliches) ist definitiv nicht die beste Option, um High-Band-Schnittstellen zu nutzen. SSH ist wahrscheinlich auch nicht das beste Transportprotokoll dafür. Ich würde versuchen, tar zu verwenden, um einen Tarball auf dem Quell-Host zu erstellen, bevor er an den sekundären Host gesendet wird.

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

Wenn Sie ein inkrementelles Backup benötigen, können Sie das versuchen -g Optionen von Teer. Wenn Sie den throughut noch maximieren müssen, versuchen Sie es mit netcat anstelle von ssh.


3
2018-04-20 18:27



Ich bin zu NFS anstelle von SSH gewechselt, um den Verschlüsselungsoverhead zu entfernen, keine Freude - dyasny
Hast du es mit Teer versucht? Als ersten Schritt können Sie versuchen, ein lokales Tarbal auf dem primären Server zu erstellen und es dann über die Leitung zu übertragen. (oder testen Sie Ihr Netzwerk mit iperf wie @ewhite suggeted) - alxgomz
Ich würde, wenn ich lokalen Platz übrig hätte. Das ist ziemlich groß, sogar mit einer voll besetzten DAS-Box - dyasny
dann versuche es über netcat oder ssh zu verteilen (das ist aber nicht so effizient) - alxgomz
Ich werde später auf Block-basierte Backups umsteigen, und ich beabsichtige zu pipen dd durch nc dann. Aber im Moment bin ich mit zwei riesigen Backups fest, die dann vom Haupt-Host entfernt werden müssen, damit ich dort ein LVM-System erstellen kann - dyasny


Versuchen Sie, die beitragenden Faktoren auseinander zu reißen:

  • CPU (z. B. dd von / dev / zero piped durch Loopback)
  • Platten-E / A (z. B. dd von a groß Datei piped zu cat> / dev / null [piped um Kurzschlüsse zu verhindern])
  • Physische Netzwerk-E / A (z. B. dd an die andere Maschine geleitet)
  • usw.

und sie unabhängig testen.

Ich habe schlechte Erfahrungen mit Broadcom-Treibern gemacht, daher ist mein erster Vorschlag, die nutzbare Netzwerkbandbreite zu testen mit: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


0
2018-04-21 03:05



Oder iperf ... - ewwhite