잘못된 SSH 연결에서 Linux의 ZFS 보내기/받기 복구

잘못된 SSH 연결에서 Linux의 ZFS 보내기/받기 복구

Linux에서 ZFS를 사용하고 있으며 원격 복제를 설정하려고 합니다. 하지만 내 SSH 연결이 불량하고 SSH를 통해 zfs 보내기/받기가 다시 시작됩니다. ZoL에 문제가 있다는 것은 알고 있지만 언제 구현될지, 새로운 안정 버전이 출시될지는 알 수 없습니다. mbbuffer에 대해 들어봤는데 다시 시작되지 않는 것 같습니다. ssh를 수행하더라도 zfs send | |처럼 사용할 수 있지만 확실하지 않습니다.

이제 zfs를 파일로 보내고 --append --partial을 사용하여 원격으로 rsync하고 복원합니다. 하지만 공간을 차지하고 수동적인 도움이 필요하며 지저분한 솔루션입니다. 모든 스냅샷이 포함된 풀 이미지를 유지하기 위해 sanoid/syncoid와 같은 자동화된 솔루션을 원합니다. 동일한 작업을 수행하지만 모든 스냅샷을 원격에 유지하고 성공적인 동기화 후 호스트의 파일을 삭제하는 등의 bash 스크립트가 있을 수 있습니다. 도와주세요

추신: 중복된 질문이 있지만 해결책이 없다는 것을 알고 있습니다. 내 문제에서는 더러운 솔루션을 사용했고 이를 교체하거나 개선하고 싶습니다.

답변1

-s전송이 실패할 경우 수신 측에 복구 가능한 토큰을 저장하는 zfs receive 옵션을 사용할 수 있습니다 . 이는 netcat(nc)을 사용하는지 아니면 SSH를 사용하는지에 따라 다릅니다.

recv기계 에 (인터넷 고양이만 해당):

nc -l <port> | zfs receive -s -v tank/dataset

send기계 에서 :

평소부터 시작하십시오 send:

zfs send -v snapshot | nc <host> <port>

zfs send -v snapshot | ssh ... zfs receive -s -v tank/dataset

전송이 실패하면 recv컴퓨터에 다음을 입력하십시오.

zfs get all tank/dataset

머신을 가져와 receive_resume_token실행합니다 .send

zfs send -v -t <token> | nc <host> <port>

zfs send -v -t <token> | ssh ... zfs receive -s -v tank/dataset

여기요 :)

관련 정보