Was hält eine Seite eines Rsync so beschäftigt?

11

Ich habe einen Debian-Computer in meinem LAN, der als Backup-Server für die anderen dient. Es verfügt über vier Festplatten, die zu einem Software-RAID-5-md-Gerät kombiniert sind, auf einem LVM und auf diesem btrfs. Backups werden mit rsync erstellt und dauern für ein großes Dateisystem über eine Stunde. Ich hatte lange gedacht, dass ich wenig dagegen tun könnte.

Kürzlich habe ich jedoch festgestellt, dass die HDD-Aktivität an beiden Enden der Übertragung sehr unterschiedlich war. Während die sendende Seite, die Gentoo ausführte und hauptsächlich ext4 verwendete, kaum Festplatten-E / A hatte, war die empfangende Seite ständig beschäftigt. Da sich die meisten Daten zwischen den Übertragungen nicht ändern würden, sollten Metadatenlesevorgänge den größten Teil der Daten ausmachen. Aber ich wäre wirklich überrascht, wenn das Lesen von Inodes in btrfs so viel Arbeit bedeutet, als dasselbe in ext4 zu tun.

iotop bestätigte Festplattenlesevorgänge von etwa 1 bis 4 MB / s auf der Empfangsseite, während die Sendeseite nur gelegentlich einen Burst von 0,5 MB / s aufwies.

Meine Frage ist, kann jemand erklären, was hier los ist? Am besten mit einigen Hinweisen, wie das Problem umgangen werden kann, wenn möglich.

Vielleicht gibt es ein btrfs-Tuning-Flag, das ich verwenden könnte, oder ähnliches. Ich benötige einen FS mit Snapshot-Funktionen auf dem Sicherungsserver, und mein Versuch, FreeBSD und ZFS zu verwenden, führt schnell zu einem inkonsistenten FS, sodass ich derzeit kaum eine Alternative zu btrfs sehe. Daher erhalten Antworten, die mich auffordern, ext4 oder zfs zu verwenden, möglicherweise positive Stimmen, aber kein Häkchen.


Verwendete Rsync-Optionen, wie von cjm angefordert :

--rsync-path='rsync --fake-super'
--archive               # -rlptgoD
--hard-links            # detect and preserve these
--acls
--xattrs
--sparse
--noatime               # based on patch from samba #7249c1
--delete
--delete-delay
--fuzzy
--human-readable        # size suffixes, base 1000
--stats

Sowie eine Reihe von -fRegeln, um einige Dateien wegzulassen.


Die Mount-Optionen der btrfs werden von mountals gemeldet

rw,nosuid,noexec,noatime,nospace_cache

Dies schließt insbesondere das noatimeFlag ein, sodass kein Schreiben erforderlich sein sollte, es sei denn, es gab tatsächlich Unterschiede in einigen Dateien. Ich habe diese Informationen als Antwort auf die Antwort von Kyle Jones hinzugefügt .

MvG
quelle
Welche rsync-Optionen verwenden Sie?
cjm
Haben Sie eine ausgefallene Festplatte, wenn Sie nur im Dunkeln fotografieren? Dies kann zu zusätzlichen E / A führen, da versucht wird, die fehlenden Daten aus Paritätsinformationen zu rekonstruieren.
Bahamat
@bahamat, ich habe smartd zum Laufen gebracht und es wurden keine Probleme gemeldet. Mdadm hat auch keine Ereignisse gemeldet.
MvG
Es ist wirklich schwer zu sagen, was falsch ist. Nur ein Beispiel sind nicht übereinstimmende Blockgrößen zwischen den Schichten. Um dies zu diagnostizieren, ist es am besten, etwas wie zu verwenden dtraceoder systemtapherauszufinden, wo die Zeit verbracht wird.
Bahamat
@bahamat, das ist eine Straße, die ich noch nicht untersucht habe. Können Sie eine Antwort schreiben, wie Sie diese Tools zur Diagnose des Problems verwenden können? Das wäre toll. Schritt-für-Schritt-Anleitungen, wenn Sie Zeit haben, aber auch einige grobe Ideen und Dokumentationshinweise wären sehr hilfreich.
MvG

Antworten:

3

Eine mögliche Antwort ist, dass das Remote-Dateisystem standardmäßig mit der Option "atime" bereitgestellt wird. Schreibvorgänge für die Zugriffszeit für alles, auf das der Remote-Rsync zugreift, in Kombination mit der Schreibstrafe, die Sie mit RAID 5 erleiden (Rechenparität bedeutet, dass Sie alle RAID-Datenträger lesen, bevor Sie auf einen von ihnen schreiben), können die E / A-Vergrößerung auf der Remote-Seite erklären.

Wenn ich recht habe, können Sie die Dinge beschleunigen, indem Sie das Remote-Dateisystem mit der Option "noatime" mounten.

Kyle Jones
quelle
2
Guter Gedanke, aber leider nicht die Lösung: Das Dateisystem ist bereits mittags gemountet. Mount meldet den Satz aller Mount-Optionen als rw,nosuid,noexec,noatime,nospace_cache.
MvG
1

Ich vermute die --fake-super Optionen. Dadurch wird rsync angewiesen, alle Metadateninformationen in erweiterten Attributen für jede Datei zu speichern. Ich vermute, dass der Zugriff auf diese Attribute langsam ist. Versuchen Sie einen Testlauf mit rsync zu einem Root ohne --fake-super. Sie können nicht dasselbe Backup wiederverwenden, da die Attribute nicht übereinstimmen.

Wayne
quelle
Sie sollten erwägen, Ihre Antwort um einige hilfreiche Links oder Verweise auf Dokumentationen zu erweitern, die Ihre Behauptung stützen.
HalosGhost