Reemplazo planificado de un disco en un nodo
El reemplazo planificado se realiza mientras el disco aún funciona: ha llegado al final de su vida útil, su modelo ya no es compatible o muestra signos de un fallo inminente. Se diferencia del reemplazo de emergencia en un aspecto importante: es usted quien determina la secuencia, no una avería. Esto significa que puede preparar un disco de reemplazo, encender el indicador en el gabinete correcto y reemplazar el disco sin dejar el pool sin redundancia ni siquiera un minuto.
En el modelo de vStack Center, un disco tiene tres atributos independientes. Confundirlos es la principal fuente de errores en este procedimiento. Ninguno puede deducirse de otro.
| Atributo | Dónde se ve | Qué significa | Qué lo modifica |
|---|---|---|---|
| Estado de salud | Columna Status de la pestaña Disk props | El estado real del disco | El nodo, según las condiciones reales |
| Rol | Solo mediante la API | Rol del disco: libre, particionado, miembro de pool, de repuesto (spare) | Consultar el disco, marcarlo como de repuesto, quitar la etiqueta de repuesto, el reemplazo |
| En línea en el clúster | Solo mediante la API | El disco está disponible en la fabric del clúster y es visible para todos los nodos | Poner el disco en línea en el clúster y retirarlo del clúster |
El reemplazo en sí es una única operación. No "retira" el disco del gabinete: cambia el pool al dispositivo de reemplazo e inicia el resilvering. El disco antiguo se retira físicamente después, cuando el pool ya no lo utiliza.
Las operaciones con discos físicos, salvo el encendido de indicadores, no están disponibles en la interfaz web. Un administrador utiliza la API para reemplazar un disco, marcarlo como de repuesto y retirarlo del clúster; consulte la referencia de la API. En este procedimiento, la interfaz cumple otra función: mostrar el disco, su ubicación en el gabinete, el estado de salud del pool y el estado del resilvering.
El reemplazo es la operación más peligrosa del subsistema de discos, por lo que cuenta con su propia protección contra la pérdida de datos. Antes de enviar el comando, vStack Center consulta al nodo el rol real del disco de reemplazo y envía el comando solo si el disco de reemplazo está libre: de repuesto o sin usar. Si el disco de reemplazo está en uso, no es posible determinar su estado o el dispositivo averiado y el dispositivo nuevo son el mismo, el reemplazo se rechaza antes de enviar el comando al nodo. No se permiten reemplazos simultáneos en el mismo pool.
Todos los comandos del subsistema de discos son asíncronos: un comando aceptado significa "reenviado al agente del nodo". El resultado real llega en la respuesta del nodo y se ve la próxima vez que lea la lista de discos o el estado del pool.
Requisitos previos
- El rol Cluster master (role_id=1), necesario para todas las operaciones con discos físicos;
- El indicador
feature.physical_disc_management: sin él, todo el subsistema de discos no está disponible. El indicador se encuentra en las opciones del clúster; - Un disco de reemplazo en el mismo nodo: libre o ya marcado como de repuesto. No se puede usar un disco de reemplazo de otro nodo; el reemplazo opera dentro de un único nodo;
- Se conocen el nombre del pool y la ruta del dispositivo que se reemplaza;
- No hay otro reemplazo en curso en el pool: solo un reemplazo por pool a la vez;
- vStack Center versión 3.0.5: las operaciones con discos físicos se introdujeron en esta versión.
Paso 1. Localice el disco y su ubicación en el gabinete
Identifique el disco de tres maneras: por su entrada en la lista de discos, por la ruta de su dispositivo (que requiere el comando de reemplazo) y por su ubicación en el gabinete, para retirar el disco correcto.
-
Abra Provider Data Center → Server Nodes, seleccione el nodo y despliegue la sección Disks. La misma lista, filtrada por pool, está disponible en la tarjeta del pool, en la sección Pool Disks. Abra el pool desde la tabla ZFS pools en Storage Resources.
-
Cambie entre las pestañas: muestran distintas vistas de la misma lista. La columna ID vincula las filas de todas las pestañas, y encima de la tabla hay un campo de búsqueda (Search in table).
Pestaña Columnas Finalidad en este paso Disk props ID, Model, Size (GB), Status Identificar el modelo, el tamaño y el estado de salud ZFS props Pool name, Vdev_pool_name, Vdev_guid, Vdev_pool_guid Asegurarse de que el disco pertenece al pool correcto Placement Enclosure_device, Enclosure_id, Dev_index, Device Localizar el gabinete y la ranura LED on panel Led_fault, Led_locate Comprobar que el indicador está encendido Timestamps Created, Last_seen Determinar la antigüedad del registro del disco -
Anote el nodo y el valor de Device para el comando de reemplazo, y Enclosure_device y Dev_index para encender el indicador. Los campos Pool name y Vdev_pool_name rellenados confirman que el disco es miembro de un pool y no está libre.
Estas tablas no muestran el rol del disco ni el indicador "en línea en el clúster"; la API los proporciona. Compruébelos antes del reemplazo: el rol determina qué disco puede usarse como reemplazo.
Paso 2. Encienda el indicador del gabinete del disco
Elegir la ranura equivocada cuesta un segundo disco, así que encienda el indicador antes de ir a la sala de servidores. Hay dos indicadores: de localización ("este") y de fallo.
- En la sección Disks de la tarjeta del nodo, vaya a la pestaña Front view o Inner view. Allí, cada disco tiene botones para los indicadores de localización y de fallo.
- Encienda el indicador de localización del disco que se reemplaza.
- Compruebe que el indicador está realmente encendido en la pestaña LED on panel, en las columnas Led_fault y Led_locate.
Puede realizar la misma operación mediante la API. En ese caso, indique el nombre del gabinete con el formato
/dev/sesN, y no como aparece en la columna Enclosure_device. Cualquier otro
formato se rechaza con el código -24307, y un gabinete desconocido, con -24316.
Paso 3. Registre el estado de salud del pool antes de la operación
Registre el estado inicial antes de hacer cambios; de lo contrario, no tendrá nada con qué comparar después del reemplazo.
- Abra Provider Data Center → Storage Resources. La tabla ZFS pools contiene las columnas GUID, Name, Health, Consuming, Scrubbing, Resilvering, Current node y Capacity (RAW).
- Anote Health, Resilvering y Current node del pool en el que se reemplaza el disco. Inicie el reemplazo planificado solo en un pool en buen estado. Un pool degradado requiere un procedimiento distinto, descrito en "Recuperación de un pool degradado".
- Abra el pool y revise la sección Properties: Capacity, Provisioned, Used y Free indican si hay espacio suficiente para el resilvering.
La tabla y la página del pool leen de la base de datos de vStack Center y muestran el último estado registrado. La API proporciona el árbol actual del pool con el estado de cada dispositivo. Lo necesitará si la información de la interfaz difiere del estado real.
Paso 4. Prepare el disco de reemplazo
El disco de reemplazo debe estar libre; de lo contrario, la protección bloqueará el comando. "Libre" significa un rol "spare" o "unused". El rol en la base de datos puede estar desactualizado, así que primero actualícelo consultando directamente al nodo.
- Busque candidatos en la sección Disks de la tarjeta 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 que se reemplaza.
- Actualice el rol del candidato consultando directamente al nodo mediante la API: el nodo informa sobre el disco por la ruta del dispositivo, y vStack Center registra el rol actual. Para un disco que aún no se ha inventariado, la consulta no cambia nada; primero inventaríe ese disco desde la página del nodo.
- Si el disco de reemplazo simplemente está libre, puede dejarlo como está: el reemplazo acepta tanto discos de repuesto como sin usar. Si mantiene un disco de repuesto designado en el nodo, márquelo como de repuesto mediante la API. Es una operación destructiva: el nodo escribe una etiqueta de servicio en el disco, por lo que rechaza la operación en un disco con datos activos, salvo que se fuerce el etiquetado.
- Vuelva a leer la lista de discos y asegúrese de que el campo Pool name del disco de reemplazo sigue vacío.
Paso 5. Reemplace el disco
Ahora emita un único comando. Un administrador lo ejecuta mediante la API. Todas las comprobaciones se realizan antes de enviar el comando al nodo, por lo que una llamada no válida no llegará al disco.
Prepare lo siguiente:
- El nodo que contiene ambos discos;
- El nombre del pool en el que se realiza el reemplazo;
- La ruta del dispositivo que se reemplaza, de la columna Device;
- La ruta del disco de reemplazo, que debe ser distinta de la ruta del dispositivo que se reemplaza.
Un comando aceptado solo significa "enviado al nodo". El resultado real llega en la respuesta del nodo. Si tiene éxito, el dispositivo nuevo se marca como miembro del pool. Si falla, se devuelve un error y el disco antiguo no se marca automáticamente como averiado: su rol no cambia.
Paso 6. Espere a que termine el resilvering
El pool restablece la redundancia por sí mismo; vStack Center solo muestra el proceso.
- Abra Storage Resources y supervise las columnas Resilvering y Health del pool en el que se reemplaza el disco. Un valor de uno en Resilvering significa que el pool está restableciendo la redundancia después del reemplazo.
- El reemplazo ha finalizado cuando Resilvering vuelve a cero y Health sigue indicando un buen estado.
- Compruebe la pertenencia al pool: en la tarjeta del pool, en la pestaña Placement de la sección Pool Disks, el disco de reemplazo debe aparecer en lugar del disco antiguo.
vStack Center no muestra el progreso en 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.
Paso 7. Desconecte y retire el disco antiguo
Mientras un disco está en línea en el clúster, el clúster lo considera parte del clúster. Antes de retirarlo físicamente, desactive este indicador. La operación utiliza la API y elimina el LUN de la fabric. Especifique el disco por número de serie (preferible) o por la ruta del dispositivo.
No retire un disco del clúster mientras siga siendo miembro de un pool activo: el pool quedará degradado. Revise la sección Pool Disks para asegurarse de que el pool utiliza el disco de reemplazo y no el disco antiguo. El nodo protege las estructuras de datos activas y rechazará la operación, pero no debe confiar en ese rechazo en lugar de comprobarlo.
Después de la llamada, vuelva a leer la lista de discos: el indicador "en línea en el clúster" del disco está desactivado. Ya puede retirar físicamente el disco.
Finalización del trabajo
- Apague ambos indicadores: tarjeta del nodo → sección Disks → pestaña Front view o Inner view. Compruebe el resultado en la pestaña LED on panel.
- Restablezca la reserva de discos de repuesto. El disco de reemplazo ya está en el pool, por lo que no queda ningún disco de repuesto en el nodo: ponga un disco nuevo en línea en el clúster y márquelo como de repuesto mediante la API.
- Actualice el inventario después de los cambios físicos: ejecute un inventario del nodo
para la clase
sesy después paracam. De lo contrario, la lista de discos conservará una entrada del disco retirado con un valor de Last_seen desactualizado. - Compruebe el estado final en la pestaña ZFS props: el nuevo miembro del pool tiene rellenados los campos Pool name y Vdev_pool_name, mientras que el campo Pool name del disco de repuesto está vacío.
Verificación del resultado
| Qué comprobar | Dónde mirar | Resultado esperado |
|---|---|---|
| El pool utiliza el disco nuevo | Tarjeta del pool, Pool Disks → Placement | El disco de reemplazo ha sustituido al disco antiguo |
| El resilvering ha finalizado | Storage Resources | Resilvering = 0, Health indica buen estado |
| El disco nuevo está registrado como miembro del pool | Pool Disks → ZFS props | Los campos Pool name y Vdev_pool_name del disco de reemplazo están rellenados |
| El disco antiguo se ha retirado del clúster | Mediante la API | El indicador "en línea en el clúster" está desactivado |
| Los indicadores están apagados | Sección Disks → LED on panel | Led_fault y Led_locate están apagados |
| Se ha restablecido la reserva de discos de repuesto | Mediante la API | El nodo tiene un disco con el rol "spare" y el campo Pool name vacío |
Si algo sale mal
| Qué ve | Causa | Qué hacer |
|---|---|---|
| Código de error -24907 | El disco de reemplazo no está libre: su rol no es ni "spare" ni "unused" | Libere el disco o elija otro; actualice el rol consultando directamente al nodo |
| 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 | El reemplazo se rechazó deliberadamente. Compruebe la conectividad con el nodo y vuelva a consultar el disco |
| Código de error -24905 | El dispositivo que se reemplaza y el dispositivo nuevo son el mismo | Especifique dispositivos distintos |
| Código de error -24906 | Ya hay un reemplazo en curso en este pool | Espere a que finalice el reemplazo actual: un reemplazo por pool |
| Código de error -24902 | El pool está vacío o no existe en el nodo | Compare el nombre del pool con la columna Name de la tabla ZFS pools; es posible que el pool no esté importado en este nodo |
| Código de error -24903 | No se proporcionó la ruta del dispositivo que se reemplaza | Utilice la ruta de la columna Device |
| Código de error -24904, -24502, -24402, -24803 | Falló la validación del formato de la ruta del dispositivo | Utilice 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 de repuesto | No es necesario reintentar; compruebe el rol del disco |
| Código de error -24603 | El disco no está marcado como de repuesto, por lo que no hay etiqueta que quitar | Compruebe el rol del disco antes de quitar la etiqueta |
| Código de error -24307 | Formato incorrecto del nombre del gabinete | Utilice un nombre con el formato /dev/sesN, y no como aparece en la columna Enclosure_device |
| Código de error -24316 | No se encontró el gabinete | Compruebe Enclosure_id y Enclosure_device en la pestaña Placement; si difieren, vuelva a recopilar el inventario |
| Código de error -24311, -24313, -24315 | El valor del indicador no es ni 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 -24802 | No se especificó ni un número de serie ni una ruta de disco | Proporcione al menos un identificador del disco |
| Código de error -24901, -24501, -24601, -24801, -24401, -24301, -24201 | El indicador feature.physical_disc_management está desactivado | Active 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 de nivel de clúster |
| El comando se acepta, pero no ha cambiado nada en la lista de discos | El comando solo se ha reenviado al agente del nodo; el resultado llega más tarde | Vuelva a abrir las pantallas; compruebe Last_seen para ver la antigüedad de los datos |
| El disco se marcó correctamente como de repuesto, pero su rol no cambió | El disco aún no se ha inventariado, por lo que no hay ningún registro en el que guardar el rol | Ejecute un inventario del nodo para la clase cam y vuelva a intentarlo |
| El pool pasó a DEGRADED después de retirar el disco | El disco se retiró antes de que el pool cambiara al disco de reemplazo | Vuelva a colocar el disco en el gabinete y siga el procedimiento de recuperación |
| El reemplazo se completó correctamente, pero sigue sin haber redundancia | El pool utiliza el disco de reemplazo, por lo que no queda ningún disco de repuesto en el nodo | Ponga un disco nuevo en línea en el clúster y márquelo como de repuesto |
Limitaciones
No se puede iniciar una comprobación de integridad del pool (scrub) desde vStack Center; esta operación no está disponible. La columna Scrubbing solo indica si se está ejecutando un proceso iniciado en el nodo.
vStack Center tampoco puede añadir un disco a un pool como dispositivo nuevo. Poner un disco en línea en el clúster lo hace visible para los nodos, pero la pertenencia al pool se modifica en el nodo. Reemplazar un miembro existente del pool es la única operación de pertenencia al pool disponible desde vStack Center.
La API proporciona la propiedad autoreplace del pool. Si está desactivada, un disco de repuesto
no se sustituirá automáticamente, y el reemplazo siempre deberá iniciarlo un administrador.
Véase también
- El modelo de la capa de almacenamiento y el origen de la capacidad y el estado de salud del pool: "Pools de almacenamiento".
- El mapa de pools y las consultas directas a los nodos: "Visualización de los pools del clúster".
- El procedimiento de emergencia cuando el pool ya ha perdido la redundancia: "Recuperación de un pool degradado".
- Poner en línea en el clúster los discos de un nodo nuevo: "Puesta en servicio de un nodo nuevo".
Métodos de la API
Operaciones de la API en esta página: pd-list, pd-status-map, pd-led, pd-info,
pd-spare, pd-unspare, pd-replace, pd-use, pd-unuse,
pd-pools-status, pool-map-by-guid, pools-get, node-inventory; consulte la
referencia de la API.