Posso retomar um envio ZFS (ZoL) com falha sobre o netcat?

3

Eu tenho um volume com dados do cliente que são criptografados usando a criptografia nativa do ZFS. Eu estava tentando enviar isso de um servidor Ubuntu para um servidor Debian. Não é possível receber zfs send dados em volumes criptografados, portanto o volume de destino é novo.

Mas agora a transferência falhou após uma pequena interrupção e o novo contêiner não é exibido.

Os dados recebidos ainda estão em algum lugar? Posso continuar esta transferência de alguma forma?

Fonte

zfs snapshot pool/bigdata@bup
zfs send pool/bigdata@bup | pv | nc -l -p 5555

Alvo

nc -w 10 1.2.3.4 5555 | zfs receive pool/bup201710

(Onde 1.2.3.4 é o endereço IP de origem.)

Note: ZoL ZFS native encryption is not available in the ZFS versions (0.6.x) that ship with Debian and Ubuntu. This feature was implemented ZoL in 2016, and only available through manual compilation. It's not in any tagged release but available from master on their github page. It is expected to be included in the tagged release of 0.8. Seen how both Ubuntu and Debian are a long way behind the very active development, many people compile ZFS themselves.

    
por Redsandro 21.10.2017 / 14:22

1 resposta

3

Não sei se é possível com a criptografia incluída (suponho que seria), mas normalmente você pode retomar os envios com falha com sinalizadores especiais send -t | recv -s , se o pool oferecer suporte a ele (a documentação é de illumos, I suponha que seja o mesmo com o ZoL):

zfs send [-Penv] -t receive_resume_token
       Creates a send stream which resumes an interrupted receive.  The
       receive_resume_token is the value of this property on the filesystem or
       volume that was being received into.  See the documentation for zfs
       receive -s for more details.

zfs receive [-Fnsuv] [-o origin=snapshot] filesystem|volume|snapshot
zfs receive [-Fnsuv] [-d|-e] [-o origin=snapshot] filesystem

   -s  If the receive is interrupted, save the partially received state,
       rather than deleting it.  Interruption may be due to premature
       termination of the stream (e.g. due to network failure or failure
       of the remote system if the stream is being read over a network
       connection), a checksum error in the stream, termination of the zfs
       receive process, or unclean shutdown of the system.

       The receive can be resumed with a stream generated by zfs send -t
       token, where the token is the value of the receive_resume_token
       property of the filesystem or volume which is received into.

       To use this flag, the storage pool must have the extensible_dataset
       feature enabled.  See zpool-features(5) for details on ZFS feature
       flags.

zfs receive -A filesystem|volume
       Abort an interrupted zfs receive -s, deleting its saved partially
       received state.

Eu primeiro tentaria localmente (canalizar, sem netcat ou pv ) com um sistema pequeno e apenas Ctrl-C da transferência para ver se funciona em princípio.

    
por 23.10.2017 / 11:34