1

У меня две машины на разных сайтах. Две машины имеют объем FreeBSD и ZFS. Один хозяин. а другой резервный.

Я обычно делаю резервную копию этой командой, которая вызывается cron.

zfs send -i pool/vol@old pool/vol@new | ssh backup zfs recv pool/vol

Но снимок довольно большой. Требуется более 24 часов, а иногда он теряет связь. Если это произошло, мне нужно переслать первый байт.

Есть ли способ восстановить соединение ssh без тормозной трубки?

Например, я могу представить команду chunked_send и chunked_recv.

zfs send -i pool/vol@old pool/vol@new | chunked_send id1 ssh backup chunked_recv id1 zfs recv pool/vol

Обновить:

Одним из наивных решений является использование временного файла и rsync.

zfs send -i vol@old vol@new | split -b 1024m backup-tmp.
rsync backup-tmp.* backup:/tmp
ssh backup 'cat /tmp/backup-tmp.* | zfs recv vol'

Я чувствую, что это не умно.

1 ответ1

0

Попробуйте инкапсулировать TCP-соединение в UDP-пакеты. Самый простой способ сделать это - установить сеть UDP OpenVPN между двумя серверами.

Соединение UDP может иметь место при случайных отключениях. Соединения SSH через UDP VPN не отключаются. Я не уверен в вашей команде, но я вполне уверен, что она будет сопротивляться отключениям, если используется в сети OpenVPN.

Я написал руководство по установке OpenVPN для Debian, которое может вам помочь. Он предоставляет инструмент, облегчающий настройку сервера OpenVPN.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .