Guía de migración de conjuntos de datos ZFS: mueve datos sin cambiar las rutas de los contenedores

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

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

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.