Para Servidor Dedicado y Servidor Bare Metal

En este artículo se explica cómo reconstruir un software RAID tras sustituir un disco defectuoso (por ejemplo, un disco duro, un SSD o una unidad NVMe) en un Servidor Dedicado o un Servidor Bare Metal. Esta guía tiene en cuenta tanto las configuraciones con RAID 1 como los sistemas con software RAID adicional 5 o 6 para las particiones de datos.

Advertencia

  • Estas instrucciones solo son válidas para Servidor Dedicado y Servidor Bare Metal que utilizan UEFI como interfaz entre el hardware y el sistema operativo. Si utilizas un Servidor Dedicado que emplea la BIOS como interfaz entre el hardware y el sistema operativo, encontrarás información para reconstruir el software RAID en el siguiente artículo: reconstruir el software RAID (Linux/servidor dedicado con BIOS).

  • Sigue al pie de la letra el orden de los pasos descritos.

Comprobar si un servidor utiliza UEFI o BIOS

Para comprobar si tu servidor utiliza BIOS o UEFI como interfaz entre el hardware y el sistema operativo, introduce el siguiente comando:

[root@localhost ~]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

Más información sobre UEFI

Encontrarás más información sobre UEFI en el siguiente artículo: información general sobre UEFI

Información importante sobre el particionamiento de tu Servidor Dedicado

En Servidor Dedicado que se gestiona en Cloud Panel, desde el 20 de octubre de 2021 solo se configura una partición al configurar o reinstalar el sistema operativo. En Servidor Dedicado configurado antes de esa fecha y en los adquiridos en el marco de Servidor a precio especial, las imágenes del sistema operativo están equipadas con un gestor de volúmenes lógicos (LVM). Este LVM establece una capa lógica entre el sistema de archivos y las particiones de los discos utilizados, lo cual permite crear un sistema de archivos que se extienda a lo largo de varias particiones y/o discos. De este modo, por ejemplo, se puede agrupar el espacio de almacenamiento de varias particiones o discos.

Determinación de la información necesaria para reconstruir el software RAID

Antes de empezar, debes comprobar la estructura RAID actual y el estado de las particiones.

Mostrar una lista de los discos y particiones existentes

Para ver la lista de discos y particiones existentes, sigue estos pasos:

  • Inicia sesión en el servidor con tu cuenta de root.

  • Para ver la lista de discos y particiones existentes, introduce el comando fdisk -l. fdisk es un programa de línea de comandos para particionar discos. Con este programa se pueden mostrar, crear o eliminar particiones.

    [root@localhost ~]# fdisk -l

  • Anota los nombres de las unidades (por ejemplo, /dev/sda, /dev/sdb, /dev/nvme0n1).

Nota

Tras un intercambio en caliente, el nuevo dispositivo de almacenamiento suele detectarse como «sdc». Es imprescindible reiniciar el sistema para que el dispositivo vuelva a identificarse correctamente como «sda» o «sdb».

Determinar los puntos de montaje
  • Para ver los puntos de montaje de los dispositivos y las particiones que utilizas, introduce el siguiente comando:

    [root@localhost ~]# lsblk

    A continuación, se mostrará, por ejemplo, la siguiente información:

    [root@2A2E3A1 ~]# lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda       8:0    0  1.8T  0 disk
    ├─sda1    8:1    0  511M  0 part
    │ └─md1   9:1    0  511M  0 raid1 /boot/efi
    ├─sda2    8:2    0  1.4G  0 part
    │ └─md2   9:2    0  1.4G  0 raid1 /boot
    ├─sda3    8:3    0  3.7G  0 part  [SWAP]
    └─sda4    8:4    0  1.8T  0 part
      └─md4   9:4    0  1.8T  0 raid1 /
    sdb       8:16   0  1.8T  0 disk
    ├─sdb1    8:17   0  511M  0 part
    │ └─md1   9:1    0  511M  0 raid1 /boot/efi
    ├─sdb2    8:18   0  1.4G  0 part
    │ └─md2   9:2    0  1.4G  0 raid1 /boot
    ├─sdb3    8:19   0  3.7G  0 part  [SWAP]
    └─sdb4    8:20   0  1.8T  0 part
      └─md4   9:4    0  1.8T  0 raid1 /

  • Anota los dispositivos y las particiones, así como sus puntos de montaje. Por ejemplo:
    /md4 está montado en / (Root)
    /md2 está montado en /boot
    /md1 está montado en /boot/efi
    sda3 y sdb3 son particiones de swap (sin matriz RAID)
Vista ampliada de la estructura RAID con lsblk --inverse

Para obtener una representación aún más clara de la estructura RAID, también puedes utilizar el siguiente comando:

[root@localhost ~]# lsblk --inverse

Con este comando, la salida se muestra en orden inverso. De este modo, la estructura no comienza por los discos individuales, sino por los dispositivos md o dispositivos lógicos. Debajo se muestran las particiones y los discos correspondientes.

Esta vista resulta especialmente útil cuando hay varios dispositivos RAID. Este es el caso, por ejemplo, cuando se utilizan matrices separadas para /boot, /, swap o áreas de datos adicionales. De este modo, para cada dispositivo md se ven directamente las particiones correspondientes y los puntos de montaje en una vista conjunta. Por ejemplo:

[root@localhost ~]# lsblk --inverse
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda1 8:1 0 1M 0 part
└─sda 8:0 0 3,6T 0 disk
sdb1 8:17 0 1M 0 part
└─sdb 8:16 0 3,6T 0 disk
md2 9:2 0 487M 0 raid1 /boot
├─sda2 8:2 0 488M 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb2 8:18 0 488M 0 part
└─sdb 8:16 0 3,6T 0 disk
md3 9:3 0 3,9G 0 raid1 [SWAP]
├─sda3 8:3 0 3,9G 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb3 8:19 0 3,9G 0 part
└─sdb 8:16 0 3,6T 0 disk
md4 9:4 0 19,5G 0 raid1 /
├─sda4 8:4 0 19,5G 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb4 8:20 0 19,5G 0 part
└─sdb 8:16 0 3,6T 0 disk
vg-kunden 253:1 0 3,3T 0 lvm /kunden
└─md5 9:5 0 3,6T 0 raid1
├─sda5 8:5 0 3,6T 0 part
│ └─sda 8:0 0 3,6T 0 disk
└─sdb5 8:21 0 3,6T 0 part
└─sdb 8:16 0 3,6T 0 disk

Nota

Si no falla todo el disco, es posible que solo se vean afectadas algunas particiones. En ese caso, es posible que no todos los dispositivos md estén degradados. Por lo tanto, puede ocurrir que una matriz RAID esté defectuosa, mientras que otras matrices del mismo disco sigan intactas. Con el comando lsblk --inverse suele detectarse esto más rápidamente.

Mostrar el contenido del archivo fstab e identificar los archivos de dispositivo
  • En algunas configuraciones de servidor, los directorios del sistema como /usr, /var o /home se encuentran en particiones independientes. Es necesario montarlas también para que los comandos funcionen en el sistema. Para ello, comprueba el archivo fstab en tu sistema montado. Para visualizar el contenido del archivo fstab e identificar los archivos de dispositivo correspondientes, introduce el siguiente comando:

    [root@localhost ~]# cat /etc/fstab

  • Analiza el resultado.

    Caso A (sistema de archivos plano, p. ej., Debian 13): si se muestran entradas en las que /usr, /var y /proc no aparecen por separado, no es necesario montar más particiones. En este caso, puedes saltar los dos pasos siguientes y colocar las particiones montadas en un entorno chroot.

    Caso B (sistema particionado / LVM): si aparecen las entradas /usr, /var y /proc, deberás montarlas como parte de la recuperación del RAID. El procedimiento se describe en la sección «Recuperar RAID».

  • Anota además si los dispositivos están montados mediante UUID o directamente (por ejemplo, como /dev/md0).

Comprobar el estado del RAID

Comprueba qué unidad falta en el RAID. Para ello, introduce el siguiente comando:

[root@localhost ~]# cat /proc/mdstat

Nota

Además de cat /proc/mdstat, también puedes utilizar el comando lsblk --inverse. Con este comando podrás ver los dispositivos md junto con sus particiones y puntos de montaje correspondientes en una vista conjunta. Esto resulta especialmente útil cuando solo algunos conjuntos RAID se encuentran en estado degradado.

RAID 1: una matriz en buen estado muestra [UU]. La «U» significa «Up»: el disco está activo, sincronizado y forma parte de la matriz. Una matriz defectuosa muestra [_U] o [U_].

RAID 5 y RAID 6: la ausencia de particiones en la lista (por ejemplo, solo sdb5 y sdc5 en lugar de sda5 también) o las marcas con (F) indican un fallo.

Tras el nivel RAID (p. ej.: «active raid5») se enumeran las particiones que forman parte del RAID. Un número entre corchetes tras el nombre de la partición (p. ej.: «sda4[0]») indica la función en la matriz. La ausencia de una entrada o la presencia de una «(F)» adicional, que significa «Failed», indica un fallo. 

Ejemplos:

RAID 1 (duplicación) – Un disco ha fallado

[root@2A2E3A1 ~]# cat /proc/mdstat
Personalities : [raid1]
md4 : active raid1 sdb4[2] sda4[0]
     1947653952 blocks super 1.0 [2/1] [U_]

md2 : active raid1 sdb2[2] sda2[0]
     1428416 blocks super 1.0 [2/2] [UU]

md1 : active raid1 sdb1[1] sda1[0]
     523200 blocks [2/2] [UU]

unused devices: <none>

RAID 5 (datos) – Falta un disco por completo

El RAID 5 se utiliza a menudo para grandes volúmenes de datos. Soporta el fallo de un máximo de un disco.

md5 : active raid5 sdc1[0] sde1[2] [3/2] [U_U]

sdc1[0] y sde1[2]: solo aparecen dos particiones en la lista. Falta por completo un disco en la lista. Esto puede ocurrir, por ejemplo, tras un fallo de hardware en el que el controlador ya no reconoce el disco duro
[3/2]: la matriz espera 3 discos, pero solo hay 2 disponibles
[_UU]: falta el primer disco

RAID 6 (datos) – Dos discos averiados

El RAID 6 soporta el fallo simultáneo de hasta dos discos.

md6 : active raid6 sdc1[0] sdf1[3] 3895307904 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/2] [U__U]

[4/2]: de los 4 discos, solo 2 están activos

[U__U]: los dos discos del centro (sdd1 y sde1) han fallado o se han retirado. El RAID sigue funcionando («degraded»), pero es necesario actuar con urgencia.

Nota

En los servidores con RAID 1 y RAID 5 se utilizan, por ejemplo, los siguientes dispositivos y particiones:

[root@B2E14658 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md11 : active raid5 sdb1[1] sde1[0] sdc1[2] sdf1[3]
     23442074112 blocks super 1.0 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
     bitmap: 2/59 pages [8KB], 65536KB chunk

md125 : active raid1 sda4[0] sdd4[2]
     462991168 blocks super 1.0 [2/2] [UU]
     bitmap: 2/4 pages [8KB], 65536KB chunk

md126 : active raid1 sda1[0] sdd1[1]
     523200 blocks [2/2] [UU]

md127 : active raid1 sda2[0] sdd2[2]
     1428416 blocks super 1.0 [2/2] [UU]

Recuperar RAID (RAID 1)

Los pasos a seguir varían en función del disco que se haya sustituido. Distinguimos entre el disco 1 (sda/primario) y el disco 2 (sdb/secundario). En el caso de RAID 5/6, el procedimiento es similar.

Advertencia

En el apartado «Se ha sustituido el disco 1 (sda)», se da por hecho que se ha sustituido el disco 1 con la denominación sda. En el apartado «Se ha sustituido el disco 2 (sdb)», se da por hecho que se ha sustituido el disco 2 con la denominación sdb. Adapta siempre los comandos de esta guía antes de introducirlos y sustituye las designaciones de las unidades. Para ello, utiliza la información que hayas determinado previamente.

Se ha sustituido el disco 1 (sda)

Si se ha sustituido el disco 1 (sda), debes comprobar si se ha detectado correctamente. Es posible que tengas que reiniciar el sistema. Dado que el cargador de arranque principal suele encontrarse en sda, es frecuente que el sistema deje de arrancar de forma normal. Por lo tanto, inicia el servidor en el sistema de rescate y sigue los pasos que se indican a continuación.

  • Copia las tablas de particiones del disco 2 (en este caso: sdb) al nuevo disco (vacío) (en este caso: sda).

    rescue:~# sfdisk -d /dev/sdb | sfdisk --force /dev/sda

Nota

En el caso de los dispositivos NVMe, comprueba con atención la denominación (por ejemplo, sfdisk -d /dev/nvme0n1 | sfdisk --force /dev/nvme1n1).

  • Añade las particiones al conjunto RAID correspondiente. Para ello, adapta los siguientes comandos y, a continuación, ejecútalos:

    RAID 1

    rescue:~# mdadm /dev/md4 -a /dev/sda4 (Root-Partition)

    rescue:~# mdadm /dev/md2 -a /dev/sda2 (Boot-Partition)

    rescue:~# mdadm /dev/md1 -a /dev/sda1 (EFI-Partition)

  • La reconstrucción se iniciará en segundo plano. Para monitorizar la reconstrucción, introduce el siguiente comando:

    rescue:~# cat /proc/mdstat

  • Monta primero el sistema de archivos raíz. Solo después se podrán montar las demás particiones en la estructura de directorios.

    rescue:~# mount /dev/md4 /mnt

  • Monta las particiones de arranque y EFI.

    rescue:~# mount /dev/md2 /mnt/boot

    rescue:~# mount /dev/md1 /mnt/boot/efi

Nota

Si aparecen mensajes de error indicando que los puntos de montaje no existen, créalos con los comandos mkdir /mnt/boot y mkdir /mnt/boot/efi.

  • Solo es aplicable a Servidor Dedicado con un sistema particionado mediante LVM: crea los siguientes puntos de montaje:

    rescue:~# mkdir /mnt/var

    rescue:~# mkdir /mnt/usr

    rescue:~# mkdir /mnt/home

  • Solo para Servidor Dedicado con un sistema particionado con LVM: si es necesario, monta las particiones var, usr y home.

    rescue:~# mount /dev/mapper/vg00-var /mnt/var

    rescue:~# mount /dev/mapper/vg00-usr /mnt/usr

    rescue:~# mount /dev/mapper/vg00-home /mnt/home

  • Válido para Debian 13, AlmaLinux 9 y 10, así como para Rocky Linux 9 y 10: para montar los directorios del sistema en el entorno chroot, introduce el siguiente comando:

    rescue:~# for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt$i; done

  • Accede al entorno chroot:

    rescue:~# chroot /mnt

  • Instala el gestor de arranque. Por ejemplo:

    Debian (11/12/13) / Ubuntu (24.04/26.04)

    rescue:/# grub-install --efi-directory=/boot/efi /dev/sda

    AlmaLinux 9 y 10, así como Rocky Linux 9 y 10

    Intenta primero la recuperación mediante dnf.

    rescue:/# dnf reinstall shim-x64 grub2-efi-x64

    rescue:/# grub2-mkconfig -o /boot/grub2/grub.cfg

    Si este comando falla, utiliza grub2-install.

    rescue:/# grub2-install --efi-directory=/boot/efi /dev/sda

    rescue:/# grub2-mkconfig -o /boot/grub2/grub.cfg

  • Solo para Debian (11/12/13) / Ubuntu (24.04/ 26.04): Para actualizar la configuración, introduce el siguiente comando:

    rescue:/# update-grub

  • Sal del entorno chroot con exit.

    rescue:/# exit

  • Desmonta todos los dispositivos de almacenamiento:

    rescue:~# umount -R /mnt

    Espera a que finalice el proceso de reconstrucción y reinicia el servidor en el sistema normal.

  • Vuelve a iniciar sesión tras el reinicio.
  • Para configurar la partición /dev/sda3 como área de intercambio de Linux, introduce el siguiente comando:

    [root@host ~]# mkswap /dev/sda3

Advertencia

El comando mkswap modifica el UUID de la partición. Si en tu archivo /etc/fstab la partición de swap está montada mediante el UUID (por defecto en AlmaLinux/Rocky/Debian), deberás editar el archivo /etc/fstab tras reiniciar el sistema e introducir el nuevo UUID; de lo contrario, el espacio de swap no se activará automáticamente. Si la partición de swap de tu servidor no está montada mediante el UUID, solo tiene que activar la partición de swap. En ese caso, omite la edición del archivo fstab.

  • Para averiguar el UUID, introduce el siguiente comando:

    [root@host ~]# lsblk -f | grep sda3

  • Esto solo es aplicable si la partición de swap está montada mediante UUID: para editar el archivo /etc/fstab, introduce el siguiente comando:

    [root@host ~]# vi /etc/fstab

Nota

El editor vi dispone de un modo de inserción y un modo de comandos. Puedes acceder al modo de inserción pulsando la tecla [i]. En este modo, los caracteres introducidos se insertan inmediatamente en el texto. Para acceder al modo de comando, pulsa a continuación [ESC]. Cuando utilices el modo de comando, lo que teclees se interpretará como un comando.

  • Ve a la línea que contiene «swap» y sustituye el UUID antiguo por el nuevo en la configuración de /etc/fstab.
  • Para salir de vi y guardar el archivo, introduce el comando :wq y, a continuación, pulsa Intro.
  • Por último, activa la partición de swap con el siguiente comando:

    [root@host ~]# swapon -a

  • Para comprobar si la memoria swap está activa, introduce el siguiente comando:

    [root@host ~]# cat /proc/swaps

     

Se ha sustituido el disco 2 (sdb)

Si se ha sustituido el disco 2 (sdb), procede de la siguiente manera:

  • Reinicia el sistema para que se detecte el disco 2 (sdb).
  • Copia en el sistema local las tablas de particiones al nuevo disco (vacío). Si es necesario, utiliza la opción --force

    [root@host ~]# sfdisk -d /dev/sda | sfdisk --force /dev/sdb

  • Añade las particiones al RAID. Por ejemplo:

    RAID 1

    [root@host ~]# mdadm /dev/md1 -a /dev/sdb1

    [root@host ~]# mdadm /dev/md2 -a /dev/sdb2

    [root@host ~]# mdadm /dev/md4 -a /dev/sdb4

  • Para monitorizar la reconstrucción, introduce el siguiente comando:

    [root@host ~]# cat /proc/mdstat

  • Para que el servidor pueda arrancar aunque sda falle en el futuro, también hay que escribir el gestor de arranque en sdb. Para ello, instala el gestor de arranque:

    Debian (11/12/13) / Ubuntu (24.04/ 26.04)

    [root@host ~]# grub-install --efi-directory=/boot/efi /dev/sdb

    AlmaLinux 9 y 10, así como Rocky Linux 9 y 10

    Intenta primero la restauración mediante dnf:

    [root@host ~]# dnf reinstall shim-x64 grub2-efi-x64

    [root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

    Si este comando falla, utiliza el siguiente:

    [root@host ~]# grub2-install --efi-directory=/boot/efi /dev/sdb

    [root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

  • Para actualizar la configuración, introduce el siguiente comando:

    Debian (11/12/13) /Ubuntu (24.04/ 26.04)

    [root@host ~]# update-grub

    AlmaLinux 9 y 10, así como Rocky Linux 9 y 10

    [root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

  • Asegúrate de que el espacio de intercambio no sea un RAID. Para ello, introduce el siguiente comando:

    [root@host ~]# cat /proc/mdstat

  • Para configurar la partición como área de intercambio de Linux, adapta el siguiente comando y, a continuación, ejecútalo. En este caso, se trata del área de intercambio de Linux /dev/sdb3.

    [root@host ~]# mkswap /dev/sdb3

Advertencia

El comando mkswap modifica el UUID de la partición. Si en tu archivo /etc/fstab la partición de swap está montada mediante UUID (por defecto en Alma/Rocky/Debian), deberás editar el archivo /etc/fstab tras reiniciar el sistema e introducir el nuevo UUID; de lo contrario, el espacio de swap no se activará automáticamente. Si la partición de swap de tu servidor no está montada mediante UUID, solo tienes que activar la partición de swap. En ese caso, omite la edición del archivo fstab.

  • Para averiguar el UUID, adapta el siguiente comando y, a continuación, introdúcelo:

    [root@host ~]# lsblk -f | grep sdb3

  • Esto solo es aplicable si la partición de swap está montada mediante UUID: para editar el archivo /etc/fstab, introduce el siguiente comando:

    [root@host ~]# vi /etc/fstab

  • Sustituye el UUID en la configuración de /etc/fstab.
  • Para salir de vi y guardar el archivo, introduce el comando :wq y, a continuación, pulsa Intro.
  • Activa la partición de swap. Para ello, introduce el siguiente comando:

    [root@host ~]# swapon -a

  • Para comprobar si la memoria de intercambio está activa, introduce el siguiente comando:

    [root@host ~]# cat /proc/swaps

Recuperar un RAID (RAID 5 o RAID 6)

Si utilizas un RAID 5 o 6, la matriz está formada por al menos 3 (RAID 5) o 4 (RAID 6) discos. Si sustituyes un disco, debes asegurarte de que la tabla de particiones se copia exactamente desde uno de los discos restantes que estén en buen estado. La sustitución del disco (sdc, sdd, sde, etc.) puede realizarse sin interrumpir el funcionamiento del sistema. No es necesario instalar ningún gestor de arranque en estos discos.

En este ejemplo, partimos de la base de que se ha sustituido sdd y que sdc y sdf están en buen estado.

  • Copia la estructura de uno de los discos en buen estado al nuevo disco. Para ello, adapta el siguiente comando y, a continuación, ejecútalo. Por ejemplo:

    [root@host ~]# sfdisk -d /dev/sdc | sfdisk --force /dev/sdd

  • Añade la nueva partición al conjunto RAID (por ejemplo, md11). Para ello, adapta el siguiente comando y, a continuación, ejecútalo.

    [root@host ~]# mdadm /dev/md11 -a /dev/sdd1

  • La reconstrucción en RAID 5/6 puede tardar varias horas si hay grandes cantidades de datos. Con este comando puedes monitorizar el progreso:

    [root@host ~]# watch -n 5 cat /proc/mdstat