rsync의 한 쪽을 그렇게 바쁜 상태로 유지하는 이유는 무엇입니까?

rsync의 한 쪽을 그렇게 바쁜 상태로 유지하는 이유는 무엇입니까?

내 LAN에는 다른 컴퓨터의 백업 서버 역할을 하는 데비안 컴퓨터가 있습니다. 4개의 HDD가 소프트웨어 RAID 5 md 장치로 그룹화되어 있으며 해당 장치와 해당 btrfs에 LVM이 있습니다. 백업은 rsync를 사용하여 수행되었으며 대용량 파일 시스템의 경우 1시간 이상 걸렸습니다. 오랫동안 나는 그것에 대해 내가 할 수 있는 일이 아무것도 없다고 생각했습니다.

하지만 최근에 하드 드라이브 활동이 감지되었습니다.매우전송의 두 끝이 다릅니다. 발신자가 Gentoo를 실행하고 대부분 ext4를 사용하고 디스크 IO가 거의 없는 동안 수신자는 지속적으로 사용 중입니다. 대부분의 데이터는 전송 간에 변경되지 않으므로 메타데이터 읽기가 데이터의 대부분을 차지해야 한다고 생각합니다. 그러나 btrfs에서 inode를 읽는 것이 ext4에서 inode를 읽는 것보다 더 많은 작업이 필요하다면 매우 놀랄 것입니다.

iotop수신 측의 디스크 읽기 속도가 약 1-4MB/s인 반면 송신 측에서는 간헐적으로 0.5MB/s의 버스트만 경험하는 것을 확인했습니다.

내 질문은, 무슨 일이 일어나고 있는지 설명할 수 있는 사람이 있습니까? 이 문제를 해결하는 방법에 대한 몇 가지 지침을 제공하는 것이 좋을 것입니다.

아마도 btrfs 튜닝 플래그 등을 사용할 수 있을 것입니다. 백업 서버에 스냅샷 기능이 있는 FS가 필요하며 FreeBSD 및 ZFS를 사용하려고 시도하면 FS 불일치가 발생하므로 현재로서는 btrfs에 대한 대안을 찾을 수 없습니다. 따라서 ext4 또는 zfs를 사용하라는 답변은 찬성표를 받지만 확인 표시는 받지 못할 수 있습니다.


요구 사항에 따라 Rsync 옵션을 사용하십시오.웨스트젬:

--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

-f특정 파일을 생략하는 여러 규칙도 있습니다 .


btrfs에 대한 마운트 옵션은 mount다음과 같이 보고됩니다.

rw,nosuid,noexec,noatime,nospace_cache

특히 여기에는 noatime플래그가 포함되어 있으므로 일부 파일이 실제로 다르지 않는 한 쓰기가 포함되어서는 안 됩니다. 이에 대한 응답으로 이 정보를 추가합니다.답변통과카일 존스.

답변1

한 가지 가능한 대답은 원격 파일 시스템이 기본적으로 "atime" 옵션을 사용하여 마운트된다는 것입니다. 원격 측의 I/O 증폭은 원격 rsync로 액세스되는 모든 항목의 액세스 시간 쓰기와 RAID 5에서 발생하는 쓰기 패널티로 설명할 수 있습니다(컴퓨팅 패리티는 RAID 디스크 중 하나에 쓰기 전에 모든 RAID 디스크를 읽는 것을 의미합니다).

내 말이 맞다면 "noatime" 옵션을 사용하여 원격 파일 시스템을 마운트하면 작업 속도를 높일 수 있습니다.

답변2

--fake-super 옵션이 의심됩니다. 이는 rsync에게 각 파일의 확장 속성에 모든 메타데이터 정보를 저장하도록 지시합니다. 이러한 속성에 액세스하는 속도가 느린 것 같습니다. --fake-super 없이 루트 디렉터리에서 rsync 테스트를 실행해 보세요. 속성이 일치하지 않으므로 동일한 백업을 재사용할 수 없습니다.

답변3

--xattrs/ -X업스트림 커밋(아직 출시되지 않음)이 Debian의 rsync 3.1.2-2에 통합되기 전에는 매우 느렸습니다.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=799143#20

https://bugzilla.samba.org/show_bug.cgi?id=5324

관련 정보