
¿Cómo puede saber si dos instantáneas ZFS son idénticas o simplemente tienen el mismo nombre?
Digamos que tengo dos computadoras llamadas host-a
y host-b
. Supongamos también que host-a
tiene un conjunto de datos ZFS llamado /tank/mydataset
.
En host-a, podría:zfs snapshot tank/mydataset@mysnapshot' and then I could 'zfs send tank/mydataset@mysnapshot | ssh host-b zfs receive tank/mydataset
Esto significaría @mysnapshot
que sería idéntico en ambos host-a
y host-b
.
Por otro lado, en host-a
Podría: zfs snapshot tank/mydataset@mysnapshot
seguido de ssh host-b zfs snapshot tank/mydataset@mysnapshot
.
En este segundo caso, las dos instantáneas tienen nombres idénticos, pero el conjunto de datos puede ser muy diferente.
Al observar las propiedades de tank/mydataset@mysnapshot
no se muestra ninguna forma aparente de identificar si las instantáneas son idénticas, es decir, un GUID o hash.
Además de intentar tomar otra instantánea host-a
tank/mydataset@mysnapshot2
e intentar enviarla, host-b
¿ zfs send -i @mysnapshot tank/mydataset@mysnapshot2 | ssh host-b zfs receive tank/mydataset
hay alguna manera de determinar que las instantáneas son idénticas no solo en el nombre, sino también en los bloques?
Respuesta1
hay una propiedadespecíficamentepara este caso de uso.
zfs get guid pool/fs@snap
le dará un GUID (ID global único) para una instantánea. Si el GUID no coincide entre dos instantáneas, una no se replica desde la otra y no funcionarán como base para una replicación incremental adicional.
Así es también comosincoideIdentifica instantáneas comunes para determinar los comandos de replicación.
(Descargo de responsabilidad: soy el desarrollador inicial y el jefe de mantenimiento del proyecto Sanoid, al que pertenece la herramienta de replicación Syncoid).