
Como você pode saber se dois instantâneos do ZFS são idênticos ou simplesmente têm o mesmo nome?
Digamos que eu tenha dois computadores chamados host-a
e host-b
. Suponha também que host-a
haja um conjunto de dados ZFS chamado /tank/mydataset
.
No host-a, eu poderia:zfs snapshot tank/mydataset@mysnapshot' and then I could 'zfs send tank/mydataset@mysnapshot | ssh host-b zfs receive tank/mydataset
Isso significaria @mysnapshot
que seria idêntico em ambos host-a
e host-b
.
Por outro lado, host-a
eu poderia: zfs snapshot tank/mydataset@mysnapshot
seguido por ssh host-b zfs snapshot tank/mydataset@mysnapshot
.
Neste segundo caso, os dois instantâneos têm nomes idênticos, mas o conjunto de dados pode ser totalmente diferente.
Observar as propriedades de tank/mydataset@mysnapshot
não lista nenhuma maneira aparente de identificar se os instantâneos são idênticos - ou seja, um GUID ou hash.
Além de tentar tirar outro instantâneo host-a
tank/mydataset@mysnapshot2
e enviar para host-b
via, zfs send -i @mysnapshot tank/mydataset@mysnapshot2 | ssh host-b zfs receive tank/mydataset
existe uma maneira de determinar se os instantâneos são idênticos não apenas no nome, mas também nos blocos?
Responder1
Há uma propriedadeespecificamentepara este caso de uso.
zfs get guid pool/fs@snap
fornecerá um GUID (Globally Unique ID) para um instantâneo. Se o GUID não corresponder entre dois instantâneos, um não será replicado do outro e não funcionará como base para replicação incremental adicional.
É assim tambémsinóideidentifica instantâneos comuns para determinar comandos de replicação.
(Isenção de responsabilidade: sou o desenvolvedor inicial e mantenedor-chefe do projeto Sanoid, ao qual pertence a ferramenta de replicação Syncoid.)