Sustitución de un disco averiado en la raíz de ZFS

Conceptos introductorios

Este documento sirve de guía para administradores y personas que posean un cierto nivel de conocimientos sobre plataformas de hardware informático y conceptos de almacenamiento, como RAID. Si ya posee una buena comprensión del proceso general de fallo, puede saltar a las secciones sobre sustitución de una unidad y reparación del pool.

Grados de verosimilitud

Siempre que una unidad falla o tiene errores, SmartOS registra una gran cantidad de información. Es necesario profundizar en más detalles para averiguar cuál es la causa del fallo del disco. A continuación se muestran los comandos en orden descendente de verbosidad:

El comando 'zpool status ' proporciona una visión general de la salud del pool.

iostat nos proporciona un recuento de errores de alto nivel, así como información específica sobre los dispositivos.

fmadm faulty nos ayudará a determinar con mayor precisión la causa del fallo del disco. fmadm también es capaz de borrar fallos transitorios;

El comando fmdump nos proporciona un registro de los últimos {n} días de eventos de fallo.

Además de reemplazar los discos averiados, esta información puede ser extremadamente útil para aislar la causa raíz del problema si éste es más complejo que un simple fallo de disco.

Proceso general de fallo

En el sistema, cuando se produce un fallo de disco, ZFS no es el primer componente en detectarlo y responder a él. En su lugar, tiene lugar el siguiente orden general de acontecimientos:

1. FMA (Fault Management Architecture) detecta y registra un disco averiado. FMA supervisa y gestiona los fallos de hardware en el sistema.

2. Una vez que FMA detecta el disco averiado, el sistema operativo interviene y retira el disco del sistema.

3. 3. ZFS, que es un sistema de archivos robusto y escalable, se da cuenta del cambio de estado. ZFS detecta que el disco ha sido retirado y responde fallando el dispositivo. El fallo del dispositivo significa que ZFS marca el disco como defectuoso y toma las medidas necesarias para mantener la integridad y disponibilidad de los datos.

Este proceso general de fallo asegura que cualquier fallo de disco en el sistema sea detectado, registrado y respondido rápidamente por los componentes relevantes. FMA da el paso inicial de identificar el disco defectuoso, seguido del sistema operativo que lo elimina y, por último, ZFS reacciona al cambio de estado provocando un fallo en el dispositivo. Siguiendo este orden de eventos, el sistema puede gestionar eficazmente los fallos de disco y mantener la estabilidad y fiabilidad general de la infraestructura de almacenamiento.

Ten en cuenta que ésta es una descripción general del proceso de fallo y que puede variar en función de la implementación y configuración específicas del sistema.

Cómo sustituir un disco

Descripción general de alto nivel de la sustitución de un disco averiado en la raíz de ZFS

Nota: Antes de proceder con el proceso de sustitución del disco, asegúrese de que ha identificado correctamente el disco que ha fallado. Además, asegúrese de que dispone de un disco de repuesto para la sustitución.

Guía paso a paso para sustituir un disco averiado en la raíz ZFS

Supongamos que el servidor tiene 2 discos: /dev/sda y /dev/sdb
Uno de los discos ha fallado, por ejemplo /dev/sdb
Hay que sustituir el disco dañado.

En primer lugar, vamos a definir nuestro pool con el comando

zpool list
Sustitución de un disco averiado en la raíz de ZFS

Antes de sustituir el disco, es aconsejable retirarlo del array:

zpool detach rpool /dev/sdb

A continuación, apague el servidor si no puede intercambiar discos en caliente, pero todo lo que se describe a continuación se puede hacer sin detener el servidor - si usted tiene un controlador y hotswap

poweroff

Sustituya físicamente el disco averiado.

Determinar la tabla de particiones (GPT o MBR) y transferirla al nuevo disco

Después de reemplazar un disco dañado, necesita determinar si la tabla de particiones es GPT o MBR.
Para ello utilice gdisk. Instale gdisk:

apt-get install gdisk -y

Ejecute el comando:

gdisk -l /dev/sda

Donde /dev/sda es un disco válido en RAID.

Para MBR la salida será aproximadamente la siguiente:

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

Para GPT, será aproximadamente la siguiente:

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Antes de añadir un disco al array, necesita ser particionado exactamente como un buen disco sda. Esto se hace de forma diferente dependiendo del particionado del disco.

Copiando el particionado para GPT

Para copiar el particionado GPT:

Nota!El primero es el disco al que se copia el particionado, y el segundo es el disco desde el que se copia el particionado. Si los mezcla, el particionado del disco originalmente útil será destruido.

sgdisk -R /dev/sdb /dev/sda

Asigne un nuevo UUID aleatorio al disco:

sgdisk -G /dev/sdb

Copiar el particionado para MBR

Para copiar el particionado MBR:

Nota!
Aquí se escribe primero el disco desde el que se está transfiriendo el particionado y segundo el disco al que se está transfiriendo.

sfdisk -d /dev/sda | sfdisk /dev/sdb

Si las particiones no son visibles en el sistema, puede releer la tabla de particiones con el comando:

sfdisk -R /dev/sdb

Instalar el gestor de arranque

Después de particionar el disco, necesitas instalar el gestor de arranque en él:

grub-install /dev/sdb

Añadir un disco

Especifica qué disco vamos a reemplazar (en nuestro caso es /dev/sdb3):

zpool replace rpool /dev/sdb3

Añadir un disco al raid:

zpool online rpool /dev/sdb3

Esperar a que finalice la sincronización del array:

zpool status

Conclusión

Siguiendo estas instrucciones, puedes reemplazar con éxito un disco fallido en la raíz de ZFS sin comprometer la integridad de tus datos. Es esencial tomar precauciones y realizar los pasos de copia de seguridad y verificación para evitar posibles pérdidas de datos y garantizar un funcionamiento sin problemas.