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 -f
Regeln, um einige Dateien wegzulassen.
Die Mount-Optionen der btrfs werden von mount
als gemeldet
rw,nosuid,noexec,noatime,nospace_cache
Dies schließt insbesondere das noatime
Flag 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 .
dtrace
oder systemtap
herauszufinden, wo die Zeit verbracht wird.