Quantos dados são transferidos no caso do zfs enviar com snapshots incrementais?

2

Meu cenário é dois servidores em uma configuração hot-standby usando o ZFS para hospedar VMs e usar instantâneos incrementais do ZFS para replicação de alterações nas VMs de um servidor para outro usando algo como zrep regularmente. Não tenho certeza do que essa base é atualmente, pode ser algo lento como a cada alguns minutos.

Gostaria de saber qual é a diferença incremental entre dois instantâneos: o ZFS é copy-on-write de forma que sobrescrever exatamente os mesmos dados em um arquivo sempre leva os novos dados a serem copiados para o armazenamento livre e vinculados no arquivo alterado. Pelo que entendi, se isso acontece várias vezes entre dois instantâneos, a diferença entre esses dois instantâneos é, na verdade, apenas a alteração mais recente dos mesmos dados. Portanto, em um arquivo com 50 GB de dados, se 3 vezes os mesmos 20 GB de dados forem gravados, a diferença entre os snapshots antes e depois dessas 3 alterações é exatamente o mais recente de 20 GB de dados gravados apenas. As primeiras 2 gravações de 20 GB são simplesmente perdidas e está tudo bem, claro, porque senão eu teria precisado criar snapshots adicionais.

Portanto, embora 60 GB de alterações tenham sido gravadas nos discos ao longo do tempo, a diferença entre os dois instantâneos é de apenas 20 GB e somente eles são transferidos usando send e receive de instantâneos na rede.

Isso está correto ou estou errado?

    
por Thorsten Schöning 19.08.2017 / 17:01

1 resposta

1

Recebi uma resposta de Stefan Ring em alguma lista de discussão, então, até que o autor faça alguma tentativa de postar aqui e receber seus créditos, eu publicarei para referência:

It behaves like you expect. Incremental sends are more or less the same size as the sum of the "written" properties of the sent snapshots. You can check the size estimate easily with zfs send -n. In my experience, this estimate is exactly the resulting size.

link

    
por 20.08.2017 / 22:09