ZFS no Linux enviar / receber currículo em conexão ssh ruim / ruim

4

Estou usando o ZFS no Linux e tentando configurar a replicação remota. Mas eu tenho uma conexão ssh ruim, e o envio / recebimento do zfs sobre o ssh é reiniciado novamente. Eu sei que há um problema no ZoL, mas eu não sei quando ele será implementado, ou uma nova versão estável virá. Eu ouvi falar do mbuffer, mas parece que não pode reiniciar. Talvez seja possível usá-lo de alguma forma como zfs send | mbuffer | enquanto verdadeiro; fazer ssh ...; feito, mas não tenho certeza.

Agora eu estou fazendo zfs enviar para um arquivo, rsync-lo com --append --partial para remoto e restaurar. mas consome espaço, precisa de assistência manual e é uma solução suja. Eu quero ter alguma solução automatizada, como sanoid / syncoid, para manter um espelho do meu pool com todos os instantâneos. Talvez algum script bash que faça o mesmo, mas mantenha todos os instantâneos no remoto, exclua arquivos no host quando eles forem rsynced com êxito, etc. Por favor ajude

P.S. Eu sei que há uma pergunta duplicada, mas não há nenhuma solução. Na minha pergunta eu uso uma solução suja e quero substituí-la ou melhorá-la

    
por Ural 09.02.2017 / 10:28

1 resposta

4

Você pode usar a opção -s do zfs receive, que salvará um token recuperável no lado de recebimento se a transferência falhar. Depende se você estiver usando o netcat (nc) ou o SSH.

No recv machine (somente netcat) :

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

Na máquina send :

Comece com o normalmente send :

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

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

Se a transferência falhar, vá para a máquina recv e digite:

zfs get all tank/dataset

Obtenha o receive_resume_token e vá para a send machine:

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

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

Aqui você vai:)

    
por 25.05.2017 / 17:14