먼저 논리 볼륨이 마운트되지 않았는지 확인하십시오. "핫 카피"를 만들려면 먼저 스냅 샷을 생성하고 대신 이것을 사용하십시오.
lvcreate --snapshot --name transfer_snap --size 1G
두 개의 1Gbit 연결 서버간에 많은 양의 데이터 (7TB)를 전송해야하므로 가능한 빠른 방법이 필요했습니다.
SSH를 사용해야합니까?
ssh를 사용하는 것은 암호화 때문이 아니라 (AES-NI를 지원하는 CPU가있는 경우 크게 아프지 않습니다) 네트워크 버퍼 때문에 문제가되지 않습니다. 그것들은 잘 확장되지 않습니다. 이 문제를 해결 하는 패치 된 Ssh 버전 이 있지만 사전 컴파일 된 패키지가 없으므로 매우 편리하지 않습니다.
압축 사용
원시 디스크 이미지를 전송할 때는 항상 압축을 사용하는 것이 좋습니다. 그러나 압축이 병목 현상이되는 것을 원하지 않습니다. gzip과 같은 대부분의 유닉스 압축 도구는 단일 스레드이므로 압축이 하나의 CPU를 포화 시키면 병목 현상이 발생합니다. 이런 이유로 압축을 위해 모든 CPU 코어를 사용하는 gzip 변형 인 pigz를 항상 사용합니다. 그리고 이것은 GBit 속도 이상으로 올라가고 싶을 때 필요합니다.
암호화 사용
앞에서 말했듯이 ssh는 느립니다. AES-NI CPU가있는 경우 병목 현상이 발생하지 않아야합니다. 따라서 ssh를 사용하는 대신 openssl을 직접 사용할 수 있습니다.
속도
구성 요소의 속도 영향에 대한 아이디어를 제공하기 위해 내 결과는 다음과 같습니다. 이것들은 메모리에 읽고 쓰는 두 프로덕션 시스템 사이의 전송 속도입니다. 실제 결과는 네트워크 속도, HDD 속도 및 소스 CPU 속도에 따라 다릅니다! 적어도 성능 저하가 없다는 것을 보여주기 위해이 작업을 수행하고 있습니다.
Simple nc dd:
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 47.3576 s, 106 MB/s
+pigz compression level 1 (speed gain depends on actual data):
network traffic: 2.52GiB
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 38.8045 s, 130 MB/s
+pigz compression level 5:
network traffic: 2.43GiB
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 44.4623 s, 113 MB/s
+compression level 1 + openssl encryption:
network traffic: 2.52GiB
5033164800 bytes (5.0 GB, 4.7 GiB) copied, 43.1163 s, 117 MB/s
결론 : 압축을 사용하면 데이터 크기가 많이 줄어들 기 때문에 속도가 눈에 띄게 향상됩니다. 네트워크 속도가 느리면 더욱 중요합니다. 압축을 사용할 때는 CPU 사용량을 확인하십시오. 사용량이 최대가되면 사용하지 않고 시도 할 수 있습니다. imho는 압축에서 30-40 % CPU를 훔치기 때문에 압축을 AES-NI 시스템에 미치는 작은 영향으로 만 사용합니다.
화면 사용
나와 같은 많은 데이터를 전송하는 경우 ssh 클라이언트의 네트워크 연결 끊김으로 인해 데이터를 중단하지 않으려는 경우 양쪽 화면에서 시작하는 것이 좋습니다. 이것은 단지 참고 사항입니다. 여기서는 화면 자습서를 작성하지 않습니다.
복사 할 수 있습니다
소스 및 대상에 대한 일부 종속성을 설치하십시오.
apt install pigz pv netcat-openbsd
그런 다음 대상과 소스와 동일한 크기로 볼륨을 만듭니다. 확실하지 않은 경우 소스에서 lvdisplay를 사용하여 크기를 가져오고 대상을 작성하십시오.
lvcreate -n lvname vgname -L 50G
다음으로, 데이터를 수신 할 대상을 준비하십시오.
nc -l -p 444 | openssl aes-256-cbc -d -salt -pass pass:asdkjn2hb | pigz -d | dd bs=16M of=/dev/vgname/lvname
준비가되면 소스에서 전송을 시작하십시오.
pv -r -t -b -p -e /dev/vgname/lvname | pigz -1 | openssl aes-256-cbc -salt -pass pass:asdkjn2hb | nc <destip/host> 444 -q 1
참고 : 로컬로 데이터를 전송하거나 암호화에 신경 쓰지 않으면 Openssl 부분을 양쪽에서 제거하십시오. 관심이 있으시면 asdkjn2hb가 암호화 키이므로 변경해야합니다.