Saltar al contenido principal

Copia de seguridad de la configuración del nodo

Antes de actualizar o reinstalar un nodo, haga una copia de su configuración y de su estado. Esto lo hace el script vstackos.config-backup.sh en una sola ejecución, en pocos segundos, y no modifica nada en el nodo.

El script lo proporciona el soporte técnico de vStack bajo petición. No forma parte de la distribución de la versión.

No es una copia de seguridad de los datos. Los datos de los pools, los discos de las VM y las instantáneas de ZFS no entran en la recopilación. El script recopila la configuración del nodo, es decir, aquello con lo que el nodo se reconstruye o vuelve a su estado anterior.

Por qué una recopilación aparte si la actualización ya hace una copia​

Antes de actualizar, vStack.update.sh guarda /etc, /usr/local/etc, vstack-env.conf y el perfil de arranque: /boot/loader.conf, /boot/loader.conf.local y /boot/device.hints. Después de la actualización restaura las cuentas de usuario, ssh, varios archivos del sistema y esos tres archivos de arranque. Esto se describe en detalle en el paso 3 de la página «Actualización del nodo a 3.2».

Esta copia tiene dos puntos débiles. Se guarda en /var/backups en el disco del sistema del nodo, y se pierde con él en una reinstalación. Además, no cubre parte del estado del nodo:

No cubierto por la copia de la actualizaciónQué riesgo supone
configuración y base de datos de la capa de clústerno hay con qué restaurar la pertenencia del nodo al clúster ni la distribución de los servicios
particionado de los discos, espejo del disco del sistema, particiones EFIno hay con qué reproducir el disco de arranque en una reinstalación
composición de la exportación de discos (LUN, destinos, iniciadores)en algunas versiones, al detener los servicios, el archivo de composición se vacía, y la composición se pierde con él
descripciones de las VM del nodono hay con qué restaurar la configuración de las máquinas
lista de paquetes y prioridades de los repositoriosno hay con qué reproducir la misma compilación en una reversión

Cuándo ejecutarlo​

Antes de detener la capa de clúster y exportar los pools. Después de la detención, los pools no están montados y ya no hay de dónde obtener la composición de la exportación. El script lo detectará y avisará, pero no podrá recopilar la composición.

Se necesitan permisos de root en el nodo y 256 MB de espacio libre en el directorio de salida. Normalmente la recopilación ocupa 5–8 MB. No se necesita una ventana de mantenimiento: el script solo lee y escribe en su propio directorio.

Cada nodo tiene su propia recopilación. No mezcle las recopilaciones de nodos distintos. El identificador del nodo, vstack-env.conf y la base de datos de la capa de clúster son propios de cada nodo, y si se confunden, el clúster se romperá.

Paso 1. Ejecución en el nodo​

sh vstackos.config-backup.sh --tag "3.1.0 -> 3.2.0"

Lo mismo sin copiar el script al nodo:

ssh root@q100u001 sh -s -- --tag "3.1.0 -> 3.2.0" < vstackos.config-backup.sh

La recopilación se guarda en /root/vstackos-config-backup/<clúster>/<fecha-UTC>/<nodo>/; el directorio se crea con permisos 700. Dentro hay secciones por tema: identidad del nodo, paquetes, configuración, almacenamiento, discos, clúster, exportación, VM, red, runtime.

El script determina el nombre del clúster por sí mismo y lo muestra al iniciarse. Primero toma el prefijo del nombre del nodo con la forma <clúster>u<NNN> (para q100u001 es q100), después cluster_id de vstack-env.conf y, en último caso, el nombre completo del nodo. Si el nombre obtenido no es el correcto, indique el directorio con la opción --out.

OpciónCuándo se necesita
--dry-runmostrar el plan de recopilación sin escribir nada
--tag TEXTanotación en el informe: versión de destino, número de solicitud
-o, --out DIRotro directorio, por ejemplo para una recopilación repetida «después»
--copy-to DIRduplicar inmediatamente la recopilación en un medio montado y verificar la copia mediante sumas de comprobación. La opción puede indicarse varias veces
--tarempaquetar además la recopilación en vstackos-config-backup-<nodo>-<fecha>.tar.gz junto al directorio
--verify DIRcomprobar una copia existente con su manifiesto y salir
--no-secretsno incluir en la copia master.passwd, spwd.db ni las claves ssh privadas del nodo
--with-logsañadir las últimas líneas de /var/log

Códigos de salida: 0: recopilación limpia; 2: recopilada, pero con advertencias; 1: el script no se inició.

Paso 2. Leer el informe de la recopilación​

cat <out>/00-summary/SUMMARY.txt # perfil del nodo, tamaño de la recopilación, resultado de las comprobaciones
cat <out>/00-summary/checks.txt # PASS/FAIL de los artefactos críticos
cat <out>/00-summary/warnings.txt # lo que no se ha recopilado

Un FAIL en la base de datos de la capa de clúster, en vstack-env.conf, en el particionado de los discos o en las descripciones de las VM significa alto. No inicie la actualización hasta averiguar por qué no se ha recopilado el artefacto.

Preste especial atención a la advertencia de que la composición de exportación guardada está vacía mientras los subsistemas en runtime siguen activos. Significa que el archivo de composición ya se ha vaciado, y la única copia de la exportación es el volcado del runtime dentro de la recopilación.

Paso 3. Guardar la recopilación en tres lugares​

Por defecto, la recopilación se guarda en el disco del sistema, el mismo que sobrescribe la actualización y que se pierde en una reinstalación. Esta copia sola no basta.

#DóndeCómoQuién lo hace
1en el nododirectorio de salidael script
2segundo medio: memoria USB de arranque del nodo, otro pool, recurso compartido de red montado--copy-to <punto de montaje>, el script copia y verifica mediante sumas de comprobaciónel script
3fuera del nodo: equipo de trabajo del administradorflujo tar, véase más abajoel administrador

Al final de la ejecución, el script muestra las tres líneas con la marca [done] o [NOT done]. La tercera siempre es NOT done, porque solo el administrador puede sacar la recopilación del nodo.

Memoria USB​

Grabar la imagen de instalación con dd borra todo lo que había en el medio. Por eso, guarde la recopilación después de grabar la imagen.

gpart show da0 # localizar la partición del medio
mount -t msdosfs /dev/da0s1 /mnt # o -t ufs /dev/da0p2 para la imagen memstick
sh vstackos.config-backup.sh --copy-to /mnt
umount /mnt

El medio debe distinguir mayúsculas y minúsculas en los nombres de archivo. En el nodo hay archivos cuyos nombres solo se diferencian en mayúsculas y minúsculas. Una memoria USB FAT, un disco de Windows y el volumen estándar de macOS consideran esos nombres como un único archivo, y la copia allí pierde en silencio un archivo por cada par. El script comprueba el medio antes de copiar y se niega a escribir en uno que no distingue mayúsculas y minúsculas. En macOS y Windows guarde la recopilación como archivo comprimido (--tar o el flujo tar de más abajo) y descomprímala donde se distingan mayúsculas y minúsculas.

Extracción desde el nodo: flujo tar, no scp -r​

La recopilación contiene alrededor de mil archivos pequeños. scp -r los transfiere uno a uno, y en un enlace con latencia esto puede alargarse durante horas. Un flujo tar lo resuelve en segundos.

D=/root/vstackos-config-backup/<clúster>/<fecha>

# el destino distingue mayúsculas y minúsculas: directamente a un directorio
ssh root@q100u001 "tar czf - -C $D q100u001" | tar xzf -

# macOS o Windows: guardar como archivo comprimido, sin descomprimir
ssh root@q100u001 "tar czf - -C $D q100u001" > vstackos-config-backup-q100u001-<fecha>.tar.gz

Organización del almacenamiento fuera del nodo​

Lo más cómodo es reproducir la organización del nodo; así la recopilación se traslada con una simple copia:

<almacenamiento>/<clúster>/<fecha>/vstackos-config-backup-<nodo>-<fecha>.tar.gz
CHECKSUMS.sha256

Comprobación de la copia​

Cualquier copia se verifica con su propio manifiesto. Es el único modo del script que no necesita root: se ejecuta allí donde está la copia. El script elige la utilidad de hash (sha256, sha256sum o shasum) según la que haya en el equipo.

sh vstackos.config-backup.sh --verify <directorio-de-la-copia>
# verified NNN files ... mismatched 0 -> copia íntegra (código 0)
# MISMATCH ./30-config/etc/rc.conf -> copia dañada (código 2)

El manifiesto cubre el material recopilado. Los archivos de informe de la propia ejecución quedan excluidos intencionadamente.

Paso 4. Repetir en cada nodo​

El clúster se actualiza nodo a nodo, y la recopilación también se hace nodo por nodo. El nombre del nodo es el último nivel del directorio, por lo que las recopilaciones de nodos distintos no entran en conflicto ni en la memoria USB ni en el almacenamiento común.

Después de la actualización: recopilación «después» y comparación​

ssh root@q100u001 sh -s -- \
--out /root/vstackos-config-backup/<clúster>/<fecha>-after/q100u001 \
--tag after-3.2.0 < vstackos.config-backup.sh
diff -r <before>/30-config <after>/30-config | head -50
diff <before>/20-packages/pkg-versions.txt <after>/20-packages/pkg-versions.txt

En primer lugar, revise los archivos *.pkgnew y *.pkgsave de la configuración, los paquetes desaparecidos, los parámetros de ajuste que han divergido y la composición de la exportación.

Compare los parámetros de ajuste por sus valores efectivos, no por el archivo:

sysctl -n <variable>

Contenido relacionado​