Mam maszynę Debian w mojej sieci LAN, która służy jako serwer zapasowy dla innych. Ma cztery dyski twarde połączone w programowe urządzenie RAID 5 md, na tym LVM i na tym btrfs. Kopie zapasowe są tworzone przy użyciu rsync, a dla dużego systemu plików zajmuje to ponad godzinę. Przez długi czas myślałem, że niewiele mogę z tym zrobić.
Ostatnio jednak zauważyłem, że aktywność HDD była bardzo różna na obu końcach transferu. Podczas gdy strona wysyłająca, działająca w Gentoo i korzystająca głównie z ext4, nie miała prawie żadnego We / Wy dysku, strona odbierająca była ciągle zajęta. Ponieważ większość danych nie zmienia się między transferami, uważam, że odczyty metadanych powinny stanowić większość danych. Ale byłbym naprawdę zaskoczony, jeśli czytanie i-węzłów w btrfs jest tak dużo pracy niż robienie tego samego w ext4.
iotop
potwierdzone odczyty dysku wynoszące około 1-4 MB / s po stronie odbierającej, podczas gdy strona wysyłająca miała tylko sporadyczne impulsy 0,5 MB / s.
Moje pytanie brzmi: czy ktoś może wyjaśnić, co się tutaj dzieje? Najlepiej z pewnym wskazaniem, jak obejść problem, jeśli to możliwe.
Być może jest jakaś flaga strojenia btrfs, której mogłabym użyć, lub coś podobnego. Potrzebuję FS z funkcją migawek na serwerze backupu, a moja próba użycia FreeBSD i ZFS szybko prowadzi do niespójności FS, więc obecnie nie widzę alternatywy dla btrfs. Dlatego odpowiedzi mówiące o używaniu ext4 lub zfs mogą otrzymać pozytywne głosy, ale nie będą zaznaczone.
Opcje Rsync w użyciu, zgodnie z żądaniem cjm :
--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
Jak również kilka -f
reguł, aby pominąć niektóre pliki.
Opcje montowania btrfs są zgłaszane przez mount
as
rw,nosuid,noexec,noatime,nospace_cache
W szczególności obejmuje to noatime
flagę, więc nie powinno być żadnych zapisów, chyba że faktycznie były różnice w niektórych plikach. Dodałem te informacje w odpowiedzi na odpowiedź przez Kyle Jones .
dtrace
lub systemtap
dowiedzieć się, gdzie spędza się czas.