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ón | Qué riesgo supone |
|---|---|
| configuración y base de datos de la capa de clúster | no 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 EFI | no 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 nodo | no hay con qué restaurar la configuración de las máquinas |
| lista de paquetes y prioridades de los repositorios | no 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ón | Cuándo se necesita |
|---|---|
--dry-run | mostrar el plan de recopilación sin escribir nada |
--tag TEXT | anotación en el informe: versión de destino, número de solicitud |
-o, --out DIR | otro directorio, por ejemplo para una recopilación repetida «después» |
--copy-to DIR | duplicar inmediatamente la recopilación en un medio montado y verificar la copia mediante sumas de comprobación. La opción puede indicarse varias veces |
--tar | empaquetar además la recopilación en vstackos-config-backup-<nodo>-<fecha>.tar.gz junto al directorio |
--verify DIR | comprobar una copia existente con su manifiesto y salir |
--no-secrets | no incluir en la copia master.passwd, spwd.db ni las claves ssh privadas del nodo |
--with-logs | añ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ónde | Cómo | Quién lo hace |
|---|---|---|---|
| 1 | en el nodo | directorio de salida | el script |
| 2 | segundo 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ón | el script |
| 3 | fuera del nodo: equipo de trabajo del administrador | flujo tar, véase más abajo | el 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>