대용량 파일(~16GB)을 빠르게 전송하는 방법

대용량 파일(~16GB)을 빠르게 전송하는 방법

80개 서버의 한 마운트 지점에서 다른 마운트 지점으로 대용량 아카이브(~16GB)를 빠르게 전송하는 방법은 무엇입니까? 마운트 지점은 다른 파티션에 있습니다. 루프에서 rsync를 사용하여 ansible(-f 100 옵션 사용)과 bash 스크립트를 시도했지만 두 방법 모두 매우 느리고 우아해 보이지 않았습니다.

답변1

설치하겠습니다PDSHpdsh그리고 모든 서버(또는 선택한 개별 호스트 또는 서버 그룹)에서 병렬로 명령을 실행할 수 있도록 구성합니다./etc/성별문서).

예를 들어, 일단 설치되면 pdsh(이상한 기본 rsh 대신) ssh를 사용하도록 구성하고 all모든 서버를 포함하는 그룹을 정의합니다.

pdsh -g all mv /old /new |& tee /tmp/pdsh.log

less 등을 사용하여 로그 파일을 보거나 pdsh유틸리티를 사용하여 호스트당 한 섹션의 형식을 적절하게 지정할 수 있습니다 dshbak.

dshback /tmp/pdsh.log

각 출력 줄에는 원래 호스트 이름이 접두어로 붙습니다(이는 dshbak호스트 이름별로 출력을 그룹화하는 데 사용됩니다).

# pdsh -g all uptime
hanuman:  22:24:53 up 60 days,  1:38,  8 users,  load average: 0.05, 0.03, 0.05
indra:  22:24:16 up 14 days, 25 min,  3 users,  load average: 0.22, 0.40, 0.44
ganesh:  22:24:53 up 49 days,  7:56,  6 users,  load average: 0.73, 0.79, 0.79
kali:  22:25:05 up 3 min,  0 users,  load average: 0.01, 0.03, 0.02

pdshpdcp또한 여러 서버에 파일을 병렬로 복사하는 데 유용한 명령도 포함되어 있습니다 . 예를 들어 /etc/genderslocalhost에서 모든 서버로 복사합니다.

pdcp -g all /etc/genders /etc/

pdsh원래 HPC 클러스터와 함께 사용하도록 설계되었지만 웹 서버 팜, 복제된 데이터베이스 서버 등을 포함한 모든 서버 그룹에서도 똑같이 유용합니다. 여기서는 서버 그룹에 임의의 레이블을 할당하는 기능이 유용합니다. 예를 들어 특정 시스템 그룹에 web, mysql, 로 레이블을 지정 dns하고 에 넣습니다 all.

다른 여러 클러스터 SSH 도구가 있지만 내 경험상 pdsh이 도구가 사용하기 가장 간단하고 구성하기도 쉽습니다.

Puppet, Ansible 등은 대규모 배포 및 업데이트에 적합하고, pdsh는 대규모 명령줄 서버 관리에 적합합니다.

답변2

LAN에서 파일을 멀티캐스트하거나 브로드캐스트하고 모든 클라이언트의 동일한 스트림에서 파일을 수신해 보십시오. 그럼 복사하는데 시간이 걸리네요...

예를 들면 다음을 참조하세요.

http://linux.die.net/man/1/udp-sender

행운을 빌어요, 게르하르트

관련 정보