Eu sei que esta é uma pergunta muito antiga, mas eu já vi alguns lugares diferentes. Sempre houve alguma confusão sobre o valor expresso em zfs list no que se refere ao uso de zfs send | recv. O problema é que o valor expresso na coluna USED é, na verdade, uma estimativa da quantidade de espaço que será liberado se esse snapshot único for excluído, tendo em mente que pode haver snapshots anteriores e posteriores referenciando os mesmos blocos de dados.
Exemplo:
zfs list -t snapshot -r montreve/cev-prod | grep 02-21
NAME USED AVAIL REFER MOUNTPOINT
montreve/cev-prod@2018-02-21_00-00-01 878K - 514G -
montreve/cev-prod@2018-02-21_sc-daily 907K - 514G -
montreve/cev-prod@2018-02-21_01-00-01 96.3M - 514G -
montreve/cev-prod@2018-02-21_02-00-01 78.5M - 514G -
montreve/cev-prod@2018-02-21_03-00-01 80.3M - 514G -
montreve/cev-prod@2018-02-21_04-00-01 84.0M - 514G -
montreve/cev-prod@2018-02-21_05-00-01 84.2M - 514G -
montreve/cev-prod@2018-02-21_06-00-01 86.7M - 514G -
montreve/cev-prod@2018-02-21_07-00-01 94.3M - 514G -
montreve/cev-prod@2018-02-21_08-00-01 101M - 514G -
montreve/cev-prod@2018-02-21_09-00-01 124M - 514G -
Para descobrir quantos dados precisarão ser transferidos para reconstituir um instantâneo via zfs send | recv, você precisará usar o recurso dry-run (-n) para esses valores. Tomando os instantâneos listados acima, tente:
zfs send -nv -I montreve/cev-prod@2018-02-21_00-00-01 montreve/cev-prod@2018-02-21_09-00-01
send from @2018-02-21_00-00-01 to montreve/cev-prod@2018-02-21_sc-daily estimated size is 1.99M
send from @2018-02-21_sc-daily to montreve/cev-prod@2018-02-21_01-00-01 estimated size is 624M
send from @2018-02-21_01-00-01 to montreve/cev-prod@2018-02-21_02-00-01 estimated size is 662M
send from @2018-02-21_02-00-01 to montreve/cev-prod@2018-02-21_03-00-01 estimated size is 860M
send from @2018-02-21_03-00-01 to montreve/cev-prod@2018-02-21_04-00-01 estimated size is 615M
send from @2018-02-21_04-00-01 to montreve/cev-prod@2018-02-21_05-00-01 estimated size is 821M
send from @2018-02-21_05-00-01 to montreve/cev-prod@2018-02-21_06-00-01 estimated size is 515M
send from @2018-02-21_06-00-01 to montreve/cev-prod@2018-02-21_07-00-01 estimated size is 755M
send from @2018-02-21_07-00-01 to montreve/cev-prod@2018-02-21_08-00-01 estimated size is 567M
send from @2018-02-21_08-00-01 to montreve/cev-prod@2018-02-21_09-00-01 estimated size is 687M
total estimated size is 5.96G
Gosta! Isso é muito mais do que os valores USADOS. No entanto, se você não precisar de todos os instantâneos intermediários no destino, poderá usar a opção consolidar (-i em vez de -I), que calculará o diferencial necessário entre dois instantâneos, mesmo que haja outros entre eles. / p>
zfs send -nv -i montreve/cev-prod@2018-02-21_00-00-01 montreve/cev-prod@2018-02-21_09-00-01
send from @2018-02-21_00-00-01 to montreve/cev-prod@2018-02-21_09-00-01 estimated size is 3.29G
total estimated size is 3.29G
Então, isso está isolando os vários blocos que foram reescritos entre os instantâneos, de modo que só tiramos o estado final deles.
Mas essa não é toda a história! O zfs send é baseado na extração dos dados lógicos da fonte, para que, se você tiver a compactação ativada no sistema de arquivos de origem, as estimativas sejam baseadas nos dados não compactados que precisarão ser enviados. Por exemplo, pegando um snapshot incremental e escrevendo no disco você obtém algo próximo ao valor estimado do comando dry-run:
zfs send -i montreve/cev-prod@2018-02-21_08-00-01 montreve/cev-prod@2018-02-21_09-00-01 > /montreve/temp/cp08-09.snap
-rw-r--r-- 1 root root 682M Feb 22 10:07 cp08-09.snap
Mas se você passar pelo gzip, veremos que os dados estão significativamente compactados:
zfs send -i montreve/cev-prod@2018-02-21_08-00-01 montreve/cev-prod@2018-02-21_09-00-01 | gzip > /montreve/temp/cp08-09.gz
-rw-r--r-- 1 root root 201M Feb 22 10:08 cp08-09.gz
Nota lateral - é baseada no OpenZFS no Linux, versão: - ZFS: módulo carregado v0.6.5.6-0ubuntu16
Você encontrará algumas referências às otimizações que podem ser aplicadas ao fluxo de envio (fluxo D-deduplicado, -e mais compacto), mas com essa versão eu não observei nenhum impacto no tamanho dos fluxos gerados com o meu conjuntos de dados.