Un disco de sistema dejó uno de mis tres nodos fuera de servicio. Lo sustituimos, reinstalamos Harvester y recuperamos el almacenamiento. La parte que más me interesa es que el diagnóstico general de SMART seguía dando el disco por bueno.
El SSD decía «PASSED». El sistema de archivos estaba en solo lectura y el nodo había dejado de responder como debía. Las dos cosas aparecían en el mismo diagnóstico. Con ese contraste empezó la recuperación de mi clúster Harvester.
Tengo tres Dell R630 dedicados a pruebas y aprendizaje. Mi clúster principal de Proxmox va por otro lado. Aquí puedo aprender cómo responde la infraestructura cuando algo falla, pero esta vez el fallo no lo provoqué. Fue el disco de sistema de uno de los servidores.
El resumen verde y los errores debajo#
Hace unos días, uno de los tres nodos quedó NotReady. El SSD SATA de 512 GB acumulaba 568 sectores reasignados y 51 errores ATA. También había lecturas irrecuperables, el journal de ext4 había abortado y el sistema se había remontado en solo lectura.
El indicador de desgaste marcaba un 134 %. El disco llevaba unas 17.700 horas encendido y unos 28,4 TB escritos. Había además errores de enlace SATA, aunque por sí solos no explicaban todo lo que estaba pasando.
Y SMART seguía mostrando «PASSED». Ese resultado general no bastaba para valorar el disco. Los errores de lectura y el estado del sistema de archivos mostraban un problema que ese «PASSED» ocultaba.
Cambiar el disco era solo una parte#
Antes de intervenir guardamos una instantánea de etcd, donde se conserva el estado del clúster, fuera del nodo afectado. Después retiramos el nodo mediante la API soportada. El SSD averiado quedó desconectado y guardado sin tocar.
Pusimos otro SSD del mismo modelo y reinstalamos Harvester 1.8.1 desde una ISO verificada por hash. La instalación se hizo a través del CD virtual de iDRAC, con la opción de unirse al clúster existente.
El servidor volvió, pero Longhorn todavía esperaba encontrar la identidad del disco anterior. Rechazó el nuevo con el aviso DiskFilesystemChanged. Había que resolver también esa parte: retiramos las referencias obsoletas y registramos de nuevo el disco.
Durante ese proceso, cuatro volúmenes siguieron funcionando con dos de sus tres réplicas. Los otros dos nodos sostuvieron el clúster. No hubo una caída total, aunque parte de los servicios estuvo degradada durante la recuperación. Tener el servidor encendido y tener recuperado todo su almacenamiento eran dos pasos distintos.
Lo que puedo dar por recuperado#
En la última comprobación encontramos los tres nodos Ready, ocho volúmenes de Longhorn sanos y conectados, y el disco nuevo disponible para almacenar réplicas. No había pods fuera de los estados Running o Completed.
Quedan dos comprobaciones pendientes: el SMART del SSD nuevo y la integridad del histórico de Prometheus, que vuelve a funcionar.
Me quedo con una enseñanza concreta: al revisar un disco, hay que leer algo más que el resultado general de SMART. En este caso, «PASSED» convivía con sectores reasignados, errores irrecuperables y un nodo caído. Los errores estaban ahí, debajo de un resultado que invitaba a pasar de largo.