Warum schlägt rsync mit „Broken Pipe (32)“, „Fehler in Socket-E/A (Code 10)“ bei io.c(820) fehl?

Warum schlägt rsync mit „Broken Pipe (32)“, „Fehler in Socket-E/A (Code 10)“ bei io.c(820) fehl?

Ich habe eine neue Festplatte für meinen Server gekauft und versuche, meine Dateien neu zu organisieren. Beim ersten Transfer rsyncwurden ca. 3 GB problemlos kopiert. Mit dem entsprechenden rsyncBefehl schlägt der zweite Transfer jedoch fehl.

$ sudo /usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 rsync -aEHAXPx /media/a/ /media/b --delete
...
rsync: [sender] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(820) [sender=3.1.1]

Beim ersten Versuch wurden etwa 550 von 800 GB kopiert, bevor der Fehler aufhörte. Neuere Versuche schaffen es nur, 1 GB zu kopieren, bevor der Fehler aufhört. Ich bin mir nicht sicher, ob das relevant ist, aber die Quelle ist einzurück in der Zeitinkrementelles Backup-Laufwerk, daher enthält es eine Menge Hardlinks. Wie kann ich diesen Fehler beheben und den Befehl abschließen?

Ich verwende Rsync, Version 3.1.1, Protokollversion 31.

Antwort1

dmesg | grep rsync

[85852.560086] Nicht genügend Arbeitsspeicher: Prozess 4242 (rsync) beenden, Punktzahl 194 oder Kind opfern [85852.562695] Prozess 4243 (rsync) beendet, Gesamt-VM: 121948 kB, anonymer RSS: 65752 kB, Datei-RSS: 4 kB – Sparhawk

Lösungen:

  • ändern Sie Ihre Rsync-Geschwindigkeit so, dass sie unter der Ihrer Festplatten liegt. --bwlimit=6000… USB 2 liegt bei 60 MB/s /4 für RW über 2 Laufwerke oder /10 für die Suche auf Nicht-SSDs … oder holen Sie sich einen XU4 mit 2 GB RAM und USB3.
  • Ändern Sie die Kernelspeicherparameterecho 100 > /proc/sys/vm/watermark_scale_factor
  • Erzwingen einer Speicherbereinigung während des Betriebsecho 3 > /proc/sys/vm/drop_caches
  • Stellen Sie sicher, dass Sie Kernel 4.9.29 verwendenuname -r

verwandte Informationen