가상 머신 스토리지를 위한 새로운 백업 서버로 사용되는 Ubuntu 서버를 새로 설치했습니다. 서버에는 4개의 네트워크 카드가 있으며 그 중 2개는 SAN 연결을 위한 10Gbit(실제로 최신 드라이버가 포함된 Intel x540-T2)입니다. nfs-share를 로컬에 설치하고 30개 정도의 파일과 15개 정도의 가상머신 이미지, 해당 로그 파일이 들어있는 디렉토리를 복사할 때의 속도 차이를 비교해봤습니다. 이미지 크기는 8GB에서 600GB까지입니다.
사용:
cp -rf /mnt/nfs-share /backup-storage/
bmon은 약 600MiB/s를 보여줍니다.
사용
rsync -av /mnt/nfs-share /backup-storage/
bmon은 처음 몇 초 동안 일부 패킷을 표시하고 약 30초 동안 일시 중지한 다음 약 60-75MiB/s로 증가합니다. CPU 사용량은 약 60% 정도 됩니다.
rsync
동일한 성능을 사용하려면 무엇을 변경해야 하며 변경할 수 있습니까 cp
?
답변1
cp
제 생각에는 와 의 차이점이 꽤 명확하다고 생각합니다 rsync
. 참고로 다음 기사를 참조하세요.rsync 성능 개요.
The four commands tested were:
rsync $SRC $DEST
echo $SRC | cpio -p $DEST
cp $SRC $DEST
cat $SRC > $DEST/$SRC
The results for rsync, cpio, cp, and cat were:
user sys elapsed hog MiB/s test
5.24 77.92 101.86 81% 100.53 cpio
0.85 53.77 101.12 54% 101.27 cp
1.73 59.47 100.84 60% 101.55 cat
139.69 93.50 280.40 83% 36.52 rsync
나는 rsync
매일 그것을 사용합니다. 이 상황을 개선하기 위해 할 수 있는 일이 몇 가지 있습니다.
예를 들어 다음과 같이 스위치를 사용해 볼 수 있습니다 -W
.
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
또한 3.x 버전을 사용하고 있는지 확인하는 것이 좋습니다 rsync
. 새 버전으로 업그레이드하면 확실히 개선됩니다.
답변2
rsync를 cp와 동일한 성능으로 만드는 방법은 철자를 "cp"로 쓰는 것입니다.
최종 효과는 동일할 수 있지만 두 명령 간의 차이는 여전히 중요합니다. 특히 rsync는 파일이나 파일의 일부를 복사해야 하는지 확인하기 위해 많은 읽기 작업을 수행합니다.
rsync를 사용하려는 이유가 있나요? cp는 "맹목적으로" 복사하기 때문에 더 높은 원시 성능을 볼 수 있습니다. 일련의 트리거에 대해 rsync의 "증분 전송" 메커니즘을 사용하는 경우 보고한 방식으로 전송 속도가 떨어지고 CPU 사용량이 크게 증가하는 것을 볼 수 있습니다.
답변3
이 사용 사례에서는 rsync
불필요하게 복잡한 시스템입니다 . 파일 수정 시간과 파일 크기를 비교하여 동기화하는 데 동의하는 경우 양쪽 끝에서 파일 시스템 메타데이터를 수집하고 비교한 다음 (로컬) 명령을 통해 변경된(또는 새) 파일을 복사합니다 cp
.
다음을 수행하는 이 작고 간단한 동기화 프로그램에 관심이 있을 수 있습니다.Fitus/Zaloha.sh
사용 방법은 다음과 같습니다.
$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"
분석 단계 중 최대 속도를 위해 옵션을 사용하여 복구 스크립트 생성을 건너뛸 수 있습니다 --noRestore
. 또한 Express 설치 프로그램이 설치되어 있는 경우 이를 사용 mawk
하도록 선택하세요 .--mawk
Zaloha.sh
명령을 통해 파일 시스템 메타데이터를 수집합니다 find
. 남은 질문은 find
NFS 공유의 성능에 관한 것입니다.