Algunos antecedentes.

Algunos antecedentes.

Algunos antecedentes.

Estoy usandoZREPpara replicar dos servidores entre sí y cada servidor contiene un grupo ZFS que contiene dos conjuntos de datos como maestro de replicación y dos conjuntos como destino de replicación. Los conjuntos maestros contienen el sistema y las máquinas virtuales VirtualBox del servidor local, la replicación tiene como objetivo el mismo desde el otro.

Además, estoy haciendo una copia de seguridad de todos los conjuntos maestros por servidor en algún NAS usando rsync. El NAS es bastante lento y la copia de seguridad tarda horas en realizarse, por lo que el enfoque implementado es suspender las máquinas virtuales, crear una instantánea, restaurar las máquinas virtuales y dejar que rsyncse ejecuten desde la instantánea creada. Lo importante es que la instantánea creada manualmente no siguió la convención de nomenclatura ZREP y se destruyó directamente después de rsyncterminar nuevamente. Al principio, ZREP continuó funcionando al mismo tiempo, iniciado por cron.

El problema.

Pero de vez en cuando sucedía que ZREP entraba en algún estadoya no se puede sincronizar. Para resolver ese problema, un compañero de trabajo me dijo que necesitaba eliminar instantáneas y seguir el proceso para inicializar ZREP nuevamente. Ese problema se solucionó al no permitir que ZREP se ejecutara en paralelo con rsyncnuestra propia instantánea al final.

Lamentablemente, me faltan los detalles concretos de ese error y el compañero de trabajo ya no está disponible, pero según su descripción, parecía que había un problema al encontrar ancestros comunes de instantáneas entre el maestro de replicación y el destino para sincronizar de forma incremental. Creo que los mensajes de error eran algo como lo siguiente:

cannot receive incremental stream: most recent snapshot of zfs-pool/vbox/tori does not match incremental source
cannot open 'zfs-pool/vbox/tori@zrep_0001b7': dataset does not exist

Mi comprensión de cómo funciona el envío/recepción incremental.

Desde mi entendimiento delos documentosyotro preguntas, para enviar instantáneas de forma incremental con éxito, el maestro emisor y el destino receptor deben compartir esa instantánea que se utiliza como argumento 1 zfs sendy esa instantánea debe ser además la actual en el destino receptor.

El segundo argumento es una instantánea arbitraria más nueva, utilizada por ZFS para calcular las diferencias entre la instantánea que el maestro y el destino tienen en común y enviar esas diferencias al destino de replicación. Debido a que ambos comparten la misma instantánea especificada como argumento 1, las diferencias tienen sentido para el objetivo y pueden aplicarse simplemente tal cual.

Según tengo entendido, los argumentos -iversus -Iconducen a que se envíe una instantánea lógica que contiene todos los datos incrementales calculados del lado maestro O al envío de todas las instantáneas intermedias que contienen sus cambios incrementales. Entonces, por ejemplo, -isiempre conduce a UNA nueva instantánea en el objetivo, en comparación -Icon N más.

Crear y destruir instantáneas intermedias entre lo que se proporciona como argumento 1 y 2 zfs send -ino debería ser ningún problema, porque ZFS siempre calcula las diferencias solo entre esos dos argumentos proporcionados y no se preocupa por ninguna otra instantánea intermedia. En el caso de ZREP, eso significa en teoría que, siempre que no interfiera con las instantáneas administradas por ZREP, no debería haber ninguna diferencia si se crean instantáneas adicionales durante su operación o no. Simplemente porque las instantáneas especiales de ZREP siempre están disponibles, administradas por ZREP y utilizadas para calcular las diferencias para la replicación. Entonces, en teoría, la creación adicional de instantáneas rsyncy copias de seguridad no debería ser un problema en absoluto.

¿Son correctas esas suposiciones?

Preguntas no relacionadas con ZREP.

¿Es seguro en general enviar instantáneas ZFS de forma incremental ignorando algunas intermedias? ¿O es necesario enviar TODAS las instantáneas intermedias creadas alguna vez al objetivo de replicación para no sincronizarse o cosas así? ¿Cómo dependen las cosas de -ivs. -I?

Respuesta1

Sí, todavía obtienes todos los datos intermedios, pero no puedes rebobinar hasta ese punto.

Si tiene las instantáneas 1, 2 y 3 y el grupo remoto solo tiene la instantánea 1, puede darle la instantánea 3 y omitir la 2... simplemente no podrá volver al estado '2'. Pero los datos seguirán ahí.

Las instantáneas describen lo que había allí en ese momento. Entonces, si falta la instantánea '2' en el grupo remoto, es como si nunca hubieras tomado una en ese momento. Literalmente no sabe acerca de la instantánea '2' ni cómo se veían las cosas en ese entonces.

Si cambia de opinión, deberá eliminar la instantánea '3' en el grupo remoto y solo entonces podrá enviar '2' y luego '3' nuevamente.

https://www.reddit.com/r/zfs/comments/cfzdb3/is_it_safe_to_send_zfssnapshots_incrementally/euensuy/

información relacionada