El enfoque seguro consiste en tratar la replicación, la verificación y el cambio atómico del punto de montaje original, conservando un conjunto de datos de reversión, como una secuencia de comprobaciones observables, no como un solo comando.
En un conjunto de datos ZFS que respalda una pila de contenedores de servidor doméstico, el riesgo práctico es tener que mover un conjunto de datos ZFS conservando las rutas de montaje bind utilizadas por los contenedores. Registra la identidad actual y el punto de recuperación, empieza con el discriminador menos invasivo, interpreta los resultados correctos e incorrectos antes de cambiar otra variable y detente cuando el almacenamiento se vuelva inestable o la única copia recuperable pudiera quedar expuesta. El flujo de trabajo siguiente solo termina cuando la carga de trabajo original funciona correctamente o las pruebas alcanzan un límite que requiere escalar el problema.
Inventariar el conjunto de datos y el contrato de rutas
Registra el conjunto de datos de origen, sus elementos secundarios, instantáneas, punto de montaje, valor de canmount, raíz de cifrado, cuotas, reservas, comportamiento de las ACL y cada montaje bind de contenedor que se encuentre dentro de él. El contrato es la ruta del host que ven los contenedores; el nombre del pool y del conjunto de datos puede cambiar por debajo de esa ruta.
La replicación de ZFS puede conservar instantáneas y propiedades, por lo que un flujo recursivo requiere revisar deliberadamente las propiedades en lugar de hacer una recepción a ciegas. Una migración independiente con ZFS send y receive muestra cómo se utilizan send y receive para la migración interna de conjuntos de datos y por qué conviene inspeccionar la jerarquía de destino antes del cambio.
Crea una copia de seguridad externa actual o demuestra que una restauración existente funciona antes de la migración. Detente si el origen contiene conjuntos de datos secundarios ocultos, una dependencia desconocida de una clave de cifrado o un punto de montaje que se solapa con otro conjunto de datos activo; esas condiciones pueden hacer que un flujo correcto se monte en el lugar equivocado.
Recibir la primera copia sin montarla sobre producción
Crea una instantánea recursiva como zfs snapshot -r oldpool/apps@move-0 y envíala a un conjunto de datos de destino recibido con el montaje deshabilitado o con un punto de montaje temporal. Usa las opciones adecuadas para tus requisitos de cifrado y propiedades; no supongas que un flujo cifrado sin procesar y una recepción descifrada tienen el mismo comportamiento con las claves.
Después de la recepción, compara zfs list -r -t filesystem,snapshot y zfs get -r mountpoint,canmount,encryptionroot,quota,reservation en ambos árboles. Una discusión del foro sobre propiedades de puntos de montaje replicadas ilustra por qué las propiedades de puntos de montaje replicadas pueden causar sorpresas en una migración que, por lo demás, se ha completado correctamente.
La primera copia es válida cuando el conjunto de datos y la ascendencia de las instantáneas coinciden y el destino permanece aislado de la ruta de producción. Si se monta sobre el origen o cambia los archivos visibles para los contenedores, exporta o desmonta el destino y corrige las propiedades antes de cualquier envío incremental.
Cerrar la brecha de escritura y cambiar el punto de montaje
Toma otra instantánea del origen y envía la diferencia incremental mientras la aplicación siga funcionando. Para el cambio final, detén todos los procesos que escriben, confirma que ningún proceso tenga archivos abiertos bajo la ruta de montaje bind, toma una instantánea final y envía solo ese delta. Mantén el tiempo de inactividad limitado a la sincronización final y al cambio de ruta.
Configura el origen con un punto de montaje que no sea de producción o con canmount=noauto; después asigna la ruta original del host al destino y móntalo. Nunca dejes que dos conjuntos de datos reclamen el mismo punto de montaje. Inicia la base de datos y los servicios dependientes antes que la interfaz de la aplicación para que los errores apunten a la capa correcta.
Si el envío final falla, vuelve a montar el origen en la ruta original y reinicia la pila; no mezcles escrituras nuevas entre ambas copias. La condición de reversión es explícita: el origen permanece intacto y no se acepta ninguna escritura de producción en el destino hasta que se completen correctamente el flujo final y las comprobaciones de propiedades.
Validar los contenedores en la ruta sin cambios
Inspecciona los montajes bind desde el tiempo de ejecución de contenedores, abre archivos representativos, crea y elimina un archivo desechable mediante la aplicación y confirma la propiedad, las ACL, los atributos extendidos y los informes de espacio libre. Reinicia la pila dos veces y verifica que ZFS se monte antes de que se inicien los contenedores.
Ejecuta un scrub u otra comprobación del estado del pool según tu plan de mantenimiento, pero no lo utilices como única prueba de migración. Compara los GUID de las instantáneas o un manifiesto de hashes representativo, restaura un elemento pequeño y utiliza la prueba de ZimaSpace para comprobar si la replicación de ZFS puede reanudarse tras una interrupción antes de retirar la ascendencia del origen.
Conserva el origen en modo de solo lectura hasta que se complete correctamente al menos un ciclo normal de copia de seguridad y aplicación. Retíralo solo cuando los contenedores utilicen las rutas originales, los trabajos programados apunten al nuevo conjunto de datos, la replicación continúe desde la ascendencia prevista y ya no sea necesaria la reversión; de lo contrario, revierte el punto de montaje y conserva ambos historiales.
Soporte y Consejos
Más para leer

Guía de migración de Borg Backup para trasladar un repositorio a un nuevo almacenamiento
Mueve un repositorio de Borg como un único objeto coherente: detén las escrituras, conserva las claves y la identidad, verifica las restauraciones y, después,...

Flujo de mantenimiento del repositorio de Restic: comprobar, podar, compactar y probar la restauración
Restic no tiene un comando compact independiente: prune realiza el reempaquetado. Protege los bloqueos y el espacio libre, vuelve a comprobar después y termina...

Guía de recuperación de Time Machine en NAS para historiales de copias de seguridad dañados o abandonados
Conserva el paquete antiguo. Separa el acceso al NAS, la identidad del destino, los daños en la imagen y el historial abandonado antes de...

