rsync 성능 및 처리량 최대화-직접 연결된 기가비트 서버


27

CentOS 6.5를 실행하는 두 개의 Dell R515 서버가 있으며 각각 하나의 브로드 컴 NIC가 서로 직접 연결되어 있습니다. 직접 링크를 사용하여 rsync over ssh를 사용하여 매일 밤 쌍의 기본 서버에서 보조 서버로 백업을 푸시합니다. 트래픽을 모니터링하면 ~ 2MBps의 처리량을 볼 수 있습니다. 이는 기가비트 포트에서 예상되는 것보다 훨씬 적습니다. MTU를 양쪽에 9000으로 설정했지만 아무런 변화가 없었습니다.

사용 가능한 최대 처리량으로 이동시키는 권장 설정 및 최적화가 있습니까? 또한 ssh (또는 잠재적으로 NFS)를 통해 rsync를 사용하여 수백만 개의 파일 (~ 6Tb의 작은 파일-거대한 Zimbra 메일 저장소)을 복사하므로 원하는 최적화가 특정 사용 사례에 더 구체적이어야 할 수도 있습니다 .

중요한 경우 양면에 ext4를 사용하고 있습니다.

감사

편집 : 나는 rsync거의 비슷한 결과로 다음 옵션을 사용했습니다 .

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

현재 cp동일한 직접 케이블 링크를 통해 NFS 내보내기를 사용할 때 동일한 수준의 나쁜 성능을보고 있습니다.

EDIT2 : 동기화를 마친 후 실행할 수 iperf있으며 성능이 약 990Mbits / sec이며, 실제 사용중인 데이터 세트로 인해 속도가 느려졌습니다.


1
태그에 rsync를 추가해야합니다. rsync의 목록 부분에 대한 시간을 확인 했습니까? 작은 파일 때문에 처리량이 낮을 수 있습니다. 옵션을 확인하기 위해 rsync 명령을 게시 할 수 있습니까?
kranteg

@kranteg 제발 편집을 참조하십시오
dyasny

2
와의 연결을 확인하십시오 iperf.
ewwhite

yup, iperf는 991mbits / s를 보여줍니다. 매우 느린 데이터 세트 인 것 같습니다
dyasny

rsync 및 작은 파일이있는 데이터 세트로 처리 할 수 ​​없습니다. 당신은 확실히 타르를 시도해야합니다.
kranteg

답변:


24

파일 수와 SSH 암호화 오버 헤드가 가장 큰 장벽 일 수 있습니다. 이와 같은 전송에서는 유선 속도가 표시되지 않습니다.

개선 할 수있는 옵션은 다음과 같습니다.

  • (예를 들면 저렴 암호화 알고리즘의 SSH + rsync를 사용 -e "ssh -c arcfour")
  • HPN-SSH 와 같은 SSH 전송을 통해 암호화를 완전히 제거 합니다 .
  • 블록 기반 전송. 스냅 샷, dd, ZFS 스냅 샷 전송 / 수신
  • tarnetcat ( nc), mbuffer 또는 일부 조합을 사용하여 일회성이거나 드물게 전송되는 경우 .
  • CentOS tuned-adm설정을 확인하십시오 .
  • 파일 시스템 마운트에서 시간을 제거합니다. 다른 파일 시스템 마운트 옵션 검사
  • NIC 송신 / 수신 버퍼.
  • rsync명령 조정 겠습니까 -W, 여기에 전체 파일 옵션 메이크업 감각? 압축이 가능합니까?
  • 전송 유형 (SSD, 스핀들 수, RAID 컨트롤러 캐시)에 맞게 스토리지 서브 시스템을 최적화하십시오.

NFS 용 SSH를 덤프했는데 거의 같은 결과를 보았습니다. 블록 기반 전송은 내가 계획하고 LVM 스냅 샷 기반 백업으로 전환 한 다음 백업을 두 번째 서버로 복사하여 중복 제거를 위해 ZFS를 실행합니다. atime은 양쪽에서 비활성화되어 있습니다. 압축이 사용되지 않습니다. 이런 종류의 전송을 위해 스토리지 서브 시스템을 어떻게 최적화합니까? 소스에는 12x 10k SAS 드라이브 위에 2 개의 RAID10이 있으며 하나는 로컬 드라이브에 있고 다른 하나는 MD1220입니다. 백업 서버의 디스크 수는 동일하지만 대용량 SATA 드라이브가 있으며 RAID5를 사용합니다. 양쪽에 풀 캐시 H800 및 H700 컨트롤러. 2MBps (iftop에서) ~
dyasny

그럼에도 불구하고 네트워킹은 병목 현상이라고 생각합니다.
dyasny

@dyasny 네트워크를 테스트하여 iperf확인하십시오.
ewwhite


1
rsync아닌 대상 디렉토리 구조를 작성했는지 확인하십시오 cp. 나는 본 적이 rsync테이크를 많이 원래 만든 원격 디렉토리 트리를 업데이트하는 데 시간이 더 cp: 88기가바이트은 1h26m 대신 3H에 체크섬 업데이트! 초기 디스크 레이아웃을 만드는 방법은 업데이트 성능을 높이는 데 중요합니다. CPU 시간은 같습니다. 실시간은 두 배가 될 수 있습니다. (체크섬이없는 동일한 업데이트는 SSD에서 200GB Seagate로 13 분 안에 실행됩니다).
Ian D. Allen

3

아마 작은 파일을 많이 복사하는 것 (예 : MailDir 형식을 사용하는 메일 상자 등)은 높은 대역폭의 인터페이스를 이용하는 최선의 옵션이 아닙니다. SSH는 아마도 최고의 전송 프로토콜이 아닐 수도 있습니다. tar를 사용하여 소스 호스트에서 tarball을 작성하여 보조 호스트로 보내려고합니다.

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

증분 백업이 필요한 경우 -gtar 옵션 을 사용해 볼 수 있습니다. 여전히 처리량을 최대화해야하는 경우 ssh 대신 netcat을 사용해보십시오.


암호화 오버 헤드를 제거하기 위해 SSH 대신 NFS로 전환했습니다. 기쁨은 없습니다
dyasny

타르를 사용해 보셨습니까? 첫 번째 단계로 기본 서버에서 로컬 tarbal을 작성한 후 유선으로 전송하십시오. (또는 @ewwhite suggeted와 같은 iperf로 네트워크를 테스트하십시오)
alxgomz

여분의 여유 공간이 있다면 가능합니다. 이것은 완전히 채워진 DAS 박스를 가지고 있어도 꽤
큽니다

그런 다음 netcat 또는 ssh를 통해 파이프로 연결해보십시오 (효율적이지는 않음)
alxgomz

나중에 블록 기반 백업으로 전환 할 예정이며 그때 부터 파이프 dd를 하려고합니다 nc. 내가 거기에 LVM 시스템을 만들 수 있도록하지만 지금, 나는 다음 주 호스트의 밖으로 이동해야하는 두 개의 거대한 백업과 붙어있어
dyasny

1

기고 요인을 괴롭 히십시오.

  • CPU (예 : 루프백을 통해 파이프 된 / dev / zero의 dd)
  • 디스크 I / O (예 : cat> / dev / null로 파이프 된 파일의 dd ( 단락을 방지하기 위해 파이프))
  • 물리적 네트워크 I / O (예 : dd를 다른 머신에 파이프)
  • 기타

독립적으로 테스트합니다.

Broadcom 드라이버에 대한 나쁜 경험이 있었으므로 첫 번째 제안은 다음과 같이 사용 가능한 네트워크 대역폭을 테스트하는 것입니다. dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


또는 iperf ...
ewwhite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.