Recuperación de un pool degradado
Un pool degradado está en funcionamiento, pero ha perdido la redundancia: otro fallo de disco en el mismo grupo de dispositivos provocará la pérdida de datos. Este procedimiento tiene un único objetivo: restaurar la redundancia sin perder nada por el camino. La rapidez importa aquí, pero la secuencia importa más: identificar mal un disco convierte un incidente en una pérdida de datos.
vStack Center obtiene el estado de salud de los pools de dos fuentes, y estas pueden discrepar durante un incidente. La base de datos de vStack Center almacena el estado recopilado por el inventario; las pantallas de la interfaz lo muestran. Las consultas directas a los nodos no pasan por la base de datos: consultan los nodos en ese momento y no escriben nada en la base de datos. Durante un incidente, confíe en la consulta directa y use las pantallas para obtener información de capacidad e indicadores de los procesos en curso.
| Fuente | Dónde está disponible | Qué proporciona | Cuándo usarla |
|---|---|---|---|
| Consulta directa a los nodos | Solo a través de la API | Un árbol de pools y dispositivos con el estado de cada elemento | Confirmar el incidente y encontrar el disco averiado |
| Propiedades del pool según ZFS | Ficha del pool, sección Properties | Capacidad, capacidad usada, eficiencia y el nodo que aloja el pool | Examinar las propiedades de un pool concreto |
| Base de datos de vStack Center | Storage Resources, tabla ZFS pools | Estado de salud, capacidad usada, indicadores de resilvering y scrub | Determinar si hay una recuperación en curso y si hay espacio suficiente |
Una consulta directa sin un nodo especificado consulta todos los nodos del clúster a la vez y combina
las respuestas en una sola lista. Se admiten respuestas parciales: un nodo no disponible aparece
como una entrada independiente con el estado UNAVAILABLE y no hace que falle toda la consulta. De ello se deriva
una regla importante para leer la respuesta: "el nodo no respondió" y "el pool ha fallado" son eventos distintos y
no deben confundirse.
La restauración de la redundancia usa la misma operación que la sustitución planificada: el pool cambia a un disco de reemplazo y, a continuación, comienza el resilvering. La protección contra la pérdida de datos también se aplica durante un incidente: vStack Center consulta al nodo sobre el disco de reemplazo y envía el comando solo si ese disco está libre. Si su estado es desconocido, la operación se rechaza.
Las operaciones con discos físicos, salvo el encendido de indicadores luminosos, no están disponibles en la interfaz web. Un administrador usa la API para consultar los pools directamente, consultar el rol de un disco, marcar un disco como spare (de reserva), sustituir un disco y retirar un disco del clúster; consulte la referencia de la API.
Requisitos previos
- El rol Cluster master (role_id=1), necesario para las operaciones con discos físicos y para leer los pools del clúster;
- El indicador
feature.physical_disc_management: sin él, el subsistema de discos no está disponible, incluidas las consultas directas a los pools, la lista de discos, la sustitución, el marcado de un disco como spare y el encendido de indicadores luminosos; - Un disco de reemplazo en el mismo nodo que el pool degradado: libre o spare. No se puede usar un disco de reemplazo de otro nodo;
- No hay ninguna otra sustitución en curso en este pool: solo una sustitución por pool a la vez;
- vStack Center versión 3.0.5.
Paso 1. Confirme que el pool está degradado
Primero, asegúrese de que la degradación es real y no se debe a información desactualizada de la base de datos.
-
Abra Provider Data Center → Storage Resources. La tabla ZFS pools contiene las columnas GUID, Name, Health, Consuming, Scrubbing, Resilvering, Current node y Capacity (RAW). La columna Health identifica un pool en mal estado.
-
Consulte los pools directamente a través de la API. La consulta es de solo lectura y se puede repetir sin riesgo, y responde a una pregunta que la pantalla no responde: qué dispositivo del pool ha fallado.
-
Lea la respuesta como un árbol aplanado en una lista.
Nivel de la entrada Qué describe Qué comprobar Pool en un nodo Todo el pool Nombre del pool, estado, nodo Grupo de dispositivos Un grupo dentro de un pool, como un mirror Estado del grupo Dispositivo Un disco concreto Ruta y estado del dispositivo
Una entrada que muestra un nodo en estado UNAVAILABLE significa que el nodo no respondió a la consulta,
no que su pool haya fallado. Compruebe ese nodo por separado en la columna Health de la tabla Server
Nodes; es posible que el incidente no tenga que ver con los discos.
Los datos de la tabla ZFS pools proceden de la base de datos, por lo que durante un incidente debe cotejarlos con una consulta directa: la pantalla puede mostrar el último estado registrado.
Paso 2. Determine si ya hay una recuperación en curso
Si el resilvering ya ha comenzado, por ejemplo porque el pool sustituyó automáticamente un disco spare, intervenir causará daños.
- En la tabla ZFS pools, compruebe la columna Resilvering del pool requerido. Un valor de uno significa "recuperación en curso": espere a que termine y, después, decida si es necesaria la sustitución.
- Abra el pool y lea la sección Properties: Capacity, Provisioned, Used y Free. Un pool demasiado lleno tarda más en recuperarse, y debe haber espacio suficiente para el resilvering.
- Compruebe también Scrubbing: una comprobación de integridad iniciada en el nodo también añade carga al pool.
Paso 3. Localice el disco averiado
Una consulta directa proporciona la ruta del dispositivo; las pantallas proporcionan el modelo, la ubicación en el chasis y el estado de salud del disco. Haga que coincidan con precisión: va a retirar un disco físico, que se identifica por su chasis y su ranura.
- Tome la ruta del dispositivo de la entrada de la consulta directa con un estado anómalo.
- Abra la sección Pool Disks de la ficha del pool (o la sección Disks de la ficha del nodo) y busque esta ruta en la pestaña Placement, en la columna Device. Los campos contiguos Enclosure_device, Enclosure_id y Dev_index indican la ubicación del disco en el chasis.
- Compruebe el modelo y el estado de salud del disco en la pestaña Disk props, en las columnas Model, Size (GB) y Status.
- Encienda el indicador luminoso del disco para que el ingeniero de la sala de servidores elija la ranura correcta. En la sección Disks de la ficha del nodo, vaya a la pestaña Front view o Inner view. Allí, cada disco tiene botones de indicador de localización y de fallo. Durante un incidente, el indicador de fallo es más adecuado: indica explícitamente "este disco ha fallado".
- Compruebe que los indicadores están encendidos en la pestaña LED on panel, en las columnas Led_fault y Led_locate.
Si la ruta de la respuesta directa no figura en la lista de discos, el disco no se ha inventariado.
Ejecute un inventario del nodo para la clase cam y, después, ses, y vuelva a abrir la
lista.
Paso 4. Compruebe si el pool está importado
Un tipo de incidente distinto parece una degradación, pero requiere otra solución: el pool no se está ejecutando en el nodo. Un pool se ejecuta en el clúster como servicio. Mientras el servicio está detenido, el clúster no puede ver el pool.
- En la tabla ZFS pools, compruebe la columna Current node: indica qué nodo aloja actualmente el pool. Un valor vacío o la ausencia del pool en la tabla indica que el servicio del pool no se está ejecutando.
- Abra el pool desde la tabla y, en el menú Actions, seleccione Start pool.
- Asegúrese de que el pool aparece en la tabla como en ejecución y, después, repita la consulta directa: el pool también debe aparecer en esa respuesta.
El permiso del servicio es un segundo atributo independiente: un servicio deshabilitado no se iniciará, por muchas veces que intente iniciarlo. La habilitación y la deshabilitación no están disponibles en la interfaz web; un administrador realiza estas operaciones a través de la API. El procedimiento se explica en "Gestión de los servicios del clúster".
Que un comando se acepte confirma que Cluster Manager lo ha recibido, no que el servicio se haya iniciado realmente. La tabla de pools muestra el estado real cuando el nodo responde.
Paso 5. Busque o prepare un disco de reemplazo
La sustitución no se iniciará hasta que haya un disco libre disponible en el nodo. Libre significa un rol "spare" o "unused". El rol de la base de datos puede estar desactualizado, por lo que debe confirmarlo con una consulta directa.
- Busque candidatos en la sección Disks de la ficha del nodo: en la pestaña ZFS props, un disco libre tiene vacíos los campos Pool name y Vdev_pool_name. Compruebe Size (GB): el disco de reemplazo debe ser al menos tan grande como el disco sustituido.
- Actualice el rol del candidato consultando directamente al nodo a través de la API: el nodo informa sobre el disco por la ruta del dispositivo y vStack Center registra el rol actual.
- Si ningún disco está marcado explícitamente como spare, marque un disco libre como spare a través de la API. El nodo rechaza esta operación en un disco con datos activos, salvo que la operación se fuerce. Es un mecanismo de protección.
- Vuelva a leer la lista de discos y asegúrese de que el Pool name del disco de reemplazo está vacío.
No use como reemplazo un disco de otro pool, aunque parezca libre. La protección rechazará el comando con el código -24907, pero comprobar el rol antes de la llamada es más sencillo que investigar un rechazo durante un incidente.
Paso 6. Inicie la sustitución
Un administrador realiza la sustitución a través de la API. Todas las comprobaciones se realizan antes de enviar el comando al nodo: una llamada no válida no llegará al disco.
Prepare lo siguiente:
- El nodo que contiene el disco averiado y el disco de reemplazo;
- El nombre del pool de la columna Name de la tabla ZFS pools;
- La ruta del dispositivo averiado obtenida de la consulta directa;
- La ruta del disco de reemplazo, que debe ser distinta de la ruta del dispositivo averiado.
Que un comando se acepte significa "enviado al nodo". El resultado real llega en la respuesta del nodo: si tiene éxito, el disco de reemplazo se marca como miembro del pool; si falla, se devuelve un error y el disco antiguo no se marca automáticamente como defectuoso.
No vuelva a enviar el mismo comando. Una segunda sustitución en el mismo pool se rechaza con el código -24906, y una segunda operación destructiva en el mismo disco, con -24504.
Paso 7. Espere a que se restaure la redundancia
La recuperación se ejecuta en el nodo; vStack Center solo la muestra. Compruebe dos lugares: el estado actual del árbol según una consulta directa y el indicador del proceso en la pantalla de pools.
- En la tabla ZFS pools, supervise las columnas Health y Resilvering. Un valor de uno en Resilvering significa que la recuperación está en curso; cero con un valor de Health en buen estado significa que se ha completado.
- Repita las consultas directas a este nodo. El éxito significa que la ruta del disco de reemplazo ha sustituido a la ruta antigua y que los estados del pool y del grupo de dispositivos han vuelto a la normalidad.
- Verifique la pertenencia al pool en la ficha del pool, en la pestaña Placement de la sección Pool Disks.
Hasta que el pool vuelva a un estado correcto, considérelo vulnerable: la redundancia todavía no se ha restaurado y otro fallo en el mismo grupo de dispositivos provocará la pérdida de datos.
Finalización del trabajo
- Apague los indicadores luminosos: ficha del nodo → sección Disks → pestaña Front view o Inner view. Compruebe el resultado en la pestaña LED on panel.
- Retire el disco averiado del clúster antes de extraerlo físicamente. Esta operación usa la API con el número de serie o la ruta del dispositivo. Confirme con una consulta directa que el pool ya no usa este disco.
- Restablezca la reserva de discos spare. El disco de reemplazo ahora está en el pool y el nodo se queda sin spare: ponga un disco nuevo en línea en el clúster y márquelo como spare.
- Actualice el inventario después de los cambios físicos: ejecute un inventario del nodo para la
clase
sesy, después,cam. De lo contrario, la lista de discos conservará una entrada del disco retirado con un Last_seen desactualizado. - Lea la propiedad
autoreplacedel pool a través de la API. Si está desactivada, un disco spare no se sustituirá automáticamente y la siguiente sustitución volverá a tener que iniciarse manualmente.
Verificación del resultado
| Qué comprobar | Dónde mirar | Resultado esperado |
|---|---|---|
| El pool ha recuperado la redundancia | Storage Resources, columna Health | El pool se muestra en buen estado |
| El pool usa el disco de reemplazo | Consulta directa a través de la API | La ruta del disco de reemplazo ha sustituido a la ruta del dispositivo averiado |
| El resilvering ha terminado | Storage Resources, columna Resilvering | Un valor de 0 con un valor de Health en buen estado |
| El disco de reemplazo figura como miembro del pool | Ficha del pool, Pool Disks → ZFS props | Los campos Pool name y Vdev_pool_name del disco de reemplazo tienen valores |
| El disco averiado se ha retirado del clúster | A través de la API | El indicador "en línea en el clúster" está desactivado |
| Los indicadores luminosos están apagados | Sección Disks → LED on panel | Led_fault y Led_locate están apagados |
| La reserva de discos spare está restablecida | A través de la API | El nodo tiene un disco con el rol "spare" y un Pool name vacío |
| Todos los nodos responden | Consulta directa a través de la API | La respuesta no contiene entradas en estado UNAVAILABLE |
Si algo sale mal
| Qué ve | Causa | Qué hacer |
|---|---|---|
Un nodo está en estado UNAVAILABLE en la respuesta de la consulta directa | El nodo no respondió a la consulta. Esto no indica un pool degradado | Compruebe el nodo en la tabla Server Nodes; es posible que el incidente no tenga que ver con los discos |
| Código de error -25003 | No se pudo obtener la lista de nodos del clúster al consultar todos los nodos | Consulte los nodos uno por uno y compruebe la disponibilidad de Cluster Manager |
| Código de error -24907 | El disco de reemplazo no está libre: su rol no es "spare" ni "unused" | Elija otro disco o libere este; actualice el rol con una consulta directa |
| Código de error -24908 | No se pudo determinar el estado del disco de reemplazo: el nodo no respondió o se agotó el tiempo de espera de la solicitud | La sustitución se rechazó deliberadamente. Compruebe la conectividad con el nodo y vuelva a consultar el disco |
| Código de error -24906 | Ya hay una sustitución en curso en este pool | Espere a que termine la sustitución actual: una sustitución por pool |
| Código de error -24905 | El dispositivo averiado y el dispositivo nuevo son el mismo | Indique dispositivos distintos |
| Código de error -24902 | El pool está vacío o no existe en el nodo | Es posible que el pool no esté importado. Compruebe Current node e inicie el pool desde el menú Actions |
| Código de error -24903 | No se proporcionó la ruta del dispositivo averiado | Use la ruta de la consulta directa |
| Código de error -24904, -24502, -24402, -24803 | Falló la validación del formato de la ruta del dispositivo | Use una ruta con el formato /dev/daN |
| Código de error -24504 | Ya hay una operación destructiva en curso en el disco | Espere la respuesta del nodo: no pueden ejecutarse dos operaciones destructivas en el mismo disco |
| Código de error -24503 | El disco ya está marcado como spare | No es necesario reintentar; compruebe el rol del disco |
| Código de error -24307, -24316 | El formato del nombre del chasis es incorrecto o no se encontró el chasis | Use un nombre con el formato /dev/sesN; si la información difiere, vuelva a recopilar el inventario del chasis |
| Código de error -24311, -24313, -24315 | El valor del indicador no es 0 ni 1, o no se proporcionó ningún indicador | Proporcione al menos un indicador con un valor de 0 o 1 |
| Código de error -25002, -24901, -24501, -24401, -24301, -24201, -24801 | El indicador feature.physical_disc_management está deshabilitado | Habilite la gestión de discos físicos en las opciones del clúster |
| Código de error -403 | La operación solo está disponible para el rol Cluster master | Inicie sesión con un rol a nivel de clúster |
| Código de error -29 | No se pudo obtener el mapa de pools de la base de datos | Básese en las consultas directas: la base de datos no está disponible en este momento |
| Código de error -20512, -20522, -713 | Falló la validación del nombre del servicio o del nodo, o el comando no llegó a Cluster Manager | Use el nombre del pool de la columna Name y compruebe la disponibilidad de Cluster Manager |
| El comando se acepta, pero el estado no cambia | El comando solo se ha reenviado al agente del nodo | Vuelva a abrir las pantallas y repita la consulta directa; el resultado llega en la respuesta del nodo |
| La consulta directa indica "en buen estado", pero la tabla ZFS pools indica "degradado" | La información de la base de datos está desactualizada: el inventario la actualiza | Confíe en la consulta directa; actualice la base de datos recopilando los datos del host |
| La sustitución tuvo éxito, pero el pool sigue degradado | Ha fallado más de un disco del pool o hay un fallo en otro grupo de dispositivos | Vuelva a leer todo el árbol de la consulta directa y sustituya los dispositivos averiados restantes uno por uno |
| El pool está degradado, pero el árbol no contiene discos averiados | Es posible que el pool haya perdido el acceso a algunos dispositivos por un nodo y no por un disco | Compruebe los estados de los nodos y el servicio del pool; no es necesario sustituir ningún disco |
Limitaciones
No se puede iniciar una comprobación de integridad del pool desde vStack Center; esta operación no está disponible. La columna Scrubbing solo informa de si se está ejecutando un proceso iniciado en el nodo.
El estado de salud actual de los pools obtenido mediante consultas directas no se escribe en la base de datos de vStack Center: una consulta directa devuelve el estado en el momento de la llamada. No puede proporcionar un historial de los eventos de degradación.
El progreso del resilvering no está disponible como porcentaje; solo hay un indicador de si está en curso. Estime la duración a partir del tamaño del pool en la sección Properties.
Véase también
- El procedimiento planificado cuando el disco todavía funciona: "Sustitución planificada de un disco en un nodo".
- El modelo de la capa de almacenamiento y las fuentes del estado de los pools: "Pools de almacenamiento".
- El mapa de pools, la página del pool y las consultas directas a los nodos: "Consulta de los pools del clúster".
- Los servicios de pool y su asignación a nodos: "Gestión de los servicios del clúster".
Métodos de la API
Operaciones de la API de esta página: pd-pools-status, pd-list, pd-status-map,
pd-led, pd-info, pd-spare, pd-replace, pd-use, pd-unuse, pool-map,
pool-map-by-guid, pools-list, pools-get, get-statusmap, node-list,
node-inventory, host-inventory, cluster-service-enable,
cluster-service-start; consulte la referencia de la API.