10Gb NIC가 있는 Debian 서버 2대보다 빠른 재동기화

10Gb NIC가 있는 Debian 서버 2대보다 빠른 재동기화

저는 새로운 debian/openmediavault 서버에서 이 rsync 명령을 사용하여 이전 서버의 모든 데이터를 이 서버로 이동하고 있습니다:

rsync -hazP --stats -e "ssh -T -c [email protected] -o Compression=no -x" [email protected]:/srv/27829c9c-dbc1-4408-a111-56dbcd8f0ec0/media/ /srv/mergerfs/norman_pool2/media

두 경우 모두 데이터는 Unionfs 또는 mergefs 풀에 있습니다. 10.10.10.15는 원본 서버에 있는 NIC의 IP이며 해당 포트가 DAC 케이블을 사용하여 새 서버의 10Gb NIC에 연결되므로 10Gb를 통해서만 통신할 수 있어야 합니다. 유일한 다른 인터페이스는 기본 1Gb NIC이며 각각 내 라우터/스위치에 대한 라인이 있습니다.

새 서버는 32GB RAM을 갖춘 Intel I3 12100이고 기존 서버는 듀얼 Xeon L5664 CPU와 32GB RAM을 갖춘 Dell R710입니다. 모두 처리 중에 CPU 사용률과 RAM 사용률이 낮았지만 큰 파일의 경우 15MB/s를 초과하고 작은 파일의 경우 5-10MB를 초과하는 속도는 보지 못했습니다. 내가 본 최고 속도는 18MB/s인 것 같은데, 이는 직접 10Gb 연결에 비해 엄청나게 느린 것 같습니다.

내가 생각하지 못한 것이 있거나 명령을 사용하여 속도를 높일 수 있는 것이 있습니까?

답변1

편집: 이런, 뭔가를 타르할 수 있도록 tar에 대한 인수를 잊어버렸습니다...

Rsync는 특히 일부 파일만 변경된 경우(예: 로그 파일 증가 등) 리포지토리를 업데이트하는 데 유용하지만 여기서는 모든 것을 복사하려고 한다고 말합니다.

원본 컴퓨터와 대상 컴퓨터 모두에서 CPU 사용량이 낮고 모든 데이터를 이동해야 하기 때문에 tar와 같은 간단한 도구를 사용하면 약간의 개선이 나타날 수 있습니다.

대상 서버의 ~destuser/.ssh/authorized_keys에 SSH 키가 있으면 간단히 다음을 수행합니다.

( cd /somesourcedir/ && tar czf - ./ ) | ( ssh destuser@destserver "cd /somedestdir/ && tar xzf -" )
# send the full content of /somesourcedir/ into /somedestdir/
# Do use `z` (gzip) option only if most of the data can easily be compressed.
# If most of the data is videos or jpegs or already compressed files, take out both z
# and it will be lighter on the cpu and maybe even a bit faster

그리고 중단하지 마세요... 중지 지점에서 tar를 계속할 수 있는 방법이 없기 때문에(특히 여기서 원격 tar는 별도의 프로세스에 있습니다)...

이를 깨뜨리면 불완전할 수 있는 마지막 파일과 다음 누락된 파일 및 디렉터리만 보내는 영리한 방법을 찾아야 합니다. 여기에는 쉘 명령을 영리하게 사용하는 것이 포함됩니다... 또는 rsync를 사용하여 작업을 다시 수행합니다. 완료?

일반 ssh에 주의하고 특히 압축을 추가하지 마십시오. 특히 터미널 에뮬레이션을 제공하기 위해 -t(또는 그 변형)를 사용하지 마십시오. tar 출력을 엉망으로 만들고 원격 파일을 수정하게 됩니다.

처리 속도에 대한 정보를 얻기 위해 | 대신에 |pv|를 추가할 수도 있습니다(pv는: 파이프 뷰어)... 그러나 간단한 MB/s 정보를 표시하는 pv 옵션이 기억나지 않습니다. (iirc, 전송될 것으로 예상되는 전체 크기를 알고 있는 경우 옵션을 사용하여 이를 제공할 수 있지만 tars에 z 옵션이 있으면 정보가 매우 달라집니다)

관련 정보