RAID (Español)

Esta traducción de
RAID
fue revisada el
2019-09-30
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
Software RAID and LVM
RAID LVM
Installing with Fake RAID
Convert a single drive system to RAID
ZFS
ZFS/Virtual disks
Striping en el espacio de intercambio
RAID Btrfs
Redundant Array of Independent Disks
(Matriz Redundante de Discos Independientes, siglas en inglés
RAID
) es una tecnología de almacenamiento que combina varios componentes de unidades de disco —normalmente unidades de disco o particiones de los mismos— en una unidad lógica. Dependiendo de la implementación de RAID, la unidad lógica puede ser un sistema de archivos o una capa transparente adicional que puede contener varias particiones. Los datos se distribuyen a través de las unidades de una las muchas maneras que hay, llamadas
#Niveles RAID
, dependiendo del nivel de redundancia y del rendimiento requeridos. El nivel RAID elegido, por lo tanto, va a depender de si lo que se quiere es prevenir la pérdida de datos en caso de un fallo del disco duro, aumentar el rendimiento o una combinación de ambos.
En este artículo se explica qué es RAID y cómo crear/administrar una matriz RAID por software utilizando mdadm.
Advertencia
Asegúrese de
hacer una copia de seguridad
de todos los datos antes de continuar.
Niveles RAID
A pesar de la redundancia implícita en la mayoría de los niveles de RAID, RAID no garantiza que los datos estén seguros. Un RAID no protegerá los datos si el equipo se quema, es robado o fallan varios discos duros a la vez. Además, instalar un sistema con RAID es un proceso complejo que puede destruir datos.
Niveles RAID estándar
Hay muchos
niveles de RAID
, sírvase encontrar a continuación los más comúnmente usados.
RAID 0
Utiliza
striping
para combinar discos. A pesar de que
no proporciona redundancia
(es decir, la posibilidad de recuperar o reconstruir los datos almacenados), todavía se considera RAID. Lo que si hace, sin embargo, es
proporcionar un gran beneficio de velocidad
. Si el aumento de la velocidad vale la pena ante la posibilidad de pérdida de datos (para la partición
swap
, por ejemplo), elija este nivel de RAID. En un servidor, las matrices RAID 1 y RAID 5 son las más apropiadas. El tamaño de un dispositivo de bloques de una matriz RAID 0 equivale al tamaño de la partición más pequeña que la compone de entre el número de particiones integrantes.
RAID 1
Es el nivel RAID más simple: replicación pura. Al igual que con otros niveles de RAID, solo tiene sentido si las particiones están en diferentes unidades de discos físicos. Si una de esas unidades falla, el dispositivo de bloque proporcionado por la matriz RAID va a seguir funcionando con normalidad. El ejemplo que se utiliza es RAID 1 para todo, excepto
swap
y los datos temporales. Tenga en cuenta que con una implementación por software, el nivel de RAID 1 es la única opción para la partición de arranque, porque los gestores de arranque, que leen la partición de arranque, no entienden de RAID, pero una partición integrante de RAID 1 puede ser leída como una partición normal. El tamaño de un sistema RAID 1 equivale a la dimensión de la partición más pequeña que lo compone.
RAID 5
Requiere 3 o más unidades físicas, y proporciona la redundancia de RAID 1 en combinación con la velocidad y los beneficios del tamaño de RAID 0. RAID 5 utiliza
striping
, como RAID 0, pero también bloques de paridad de almacenaje
distribuidos entre cada disco miembro
. En el caso de que un disco falle, estos bloques de paridad se utilizan para reconstruir los datos en un disco de reemplazo. RAID 5 puede soportar la pérdida de uno de los discos miembros.
Nota
RAID 5 es una opción común debido a su combinación de velocidad y redundancia de datos. La advertencia es que si una unidad falla y, antes de que fuera reemplazada, la otra unidad fallara, se perderían todos los datos.  Además, con los tamaños de los disco modernos y las tasas de error de lectura (URE) irrecuperables esperadas en los discos de consumo,
se espera
que la reconstrucción de una matriz de 4TiB (es decir, una probabilidad superior al 50%) tenga al menos una URE. Debido a esto, RAID 5 ya no es aconsejado por la industria del almacenamiento.
RAID 6
Requiere 4 o más unidades físicas, y proporciona los beneficios de RAID 5 pero con seguridad contra el fallo de dos unidades. RAID 6 también usa striping, como RAID 5, pero almacena dos bloques de paridad distintos
distribuidos en cada disco miembro
. En el caso de que falle un disco, estos bloques de paridad se utilizan para reconstruir los datos en un disco de reemplazo. RAID 6 puede soportar la pérdida de dos discos miembros. La robustez frente a errores de lectura irrecuperables es algo mejor, porque la matriz todavía tiene bloques de paridad cuando se reconstruye desde una sola unidad fallida. Sin embargo, dada la sobrecarga, RAID 6 es costoso y en la mayoría de las configuraciones RAID 10 en el diseño far2 (ver más abajo) proporciona mejores beneficios de velocidad y robustez, y por lo tanto es preferible.
Niveles RAID anidados
RAID 1+0
RAID1+0 es un RAID anidado que combina dos de los niveles estándar de RAID para obtener rendimiento y redundancia adicional. Se le conoce comúnmente como
RAID10
, sin embargo, Linux MD RAID10 es ligeramente diferente de las capas RAID simples, ver más abajo.
RAID 10
RAID10 bajo Linux se basa en los conceptos de RAID1+0, sin embargo, implementa esto como una sola capa, con múltiples diseños posibles.
El diseño
near X
en los discos Y repite cada trozo X veces en franjas Y/2, pero no necesita X para dividir Y de manera uniforme. Los fragmentos se colocan en casi la misma ubicación en cada disco en el que se replican, de ahí el nombre. Puede funcionar con cualquier cantidad de discos, comenzando con 2. Near de 2 en 2 discos es equivalente a RAID1, near de 2 en 4 discos a RAID1+0.
El diseño
far X
en los discos Y está diseñado para ofrecer un rendimiento de lectura striped en una matriz replicada. Esto se logra dividiendo cada disco en dos secciones, por ejemplo, adelante y atrás, y lo que está escrito al principio del disco 1 se refleja al final del disco 2, y viceversa. Esto tiene el efecto de poder dividir las lecturas secuenciales, que es de donde RAID0 y RAID5 obtienen su rendimiento. El inconveniente es que la escritura secuencial tiene una penalización de rendimiento muy leve debido a la distancia que el disco necesita alcanzar hasta la otra sección del disco para almacenar la réplica. Sin embargo, RAID10 en el diseño de far 2 es preferible a RAID1+0
y
RAID5 en capas siempre que las velocidades de lectura sean preocupantes y la disponibilidad/redundancia sea crucial. Sin embargo, todavía no es un sustituto de las copias de seguridad. Vea la página de wikipedia para más información.
Advertencia
mdadm no puede cambiar la forma de las matrices en diseños de
far X
, lo que significa que una vez que se haya creado la matriz, no podrá realizar
mdadm --grow
. Por ejemplo, si tiene una matriz RAID10 de 4x1 TB y desea cambiar a discos de 2 TB, su capacidad utilizable seguirá siendo de 2 TB. Para tales casos de uso, adhiérase al diseño
near X
.
Comparación de niveles RAID
Nivel RAID
Redundancia de datos
Utilización de la unidad física
Rendimiento de lectura
Rendimiento de escritura
Unidades mínimas
0
No
100%
nX
Máxima
nX
Máxima
2
1
Sí
50%
Hasta nX  si se leen múltiples procesos, de lo contrario 1X
1X
2
5
Sí
67% - 94%
(n−1)X
Superior
(n−1)X
Superior
3
6
Sí
50% - 88%
(n−2)X
(n−2)X
4
10,far2
Sí
50%
nX
Superior;
a la par con RAID0 pero redundante
(n/2)X
2
10,near2
Sí
50%
Hasta nX  si se leen múltiples procesos, de lo contrario 1X
(n/2)X
2
* Donde
n
es el
standing
multiplicado por el número de discos dedicados.
Implementación
Los dispositivos RAID pueden gestionarse de diferentes maneras:
RAID por software
Esta es la implementación más fácil, ya que no se basa en firmware y software propietarios para ser utilizado. La matriz es administrada por el sistema operativo, ya sea:
por una capa de abstracción (por ejemplo,
mdadm
);
Nota
Este es el método que utilizaremos más adelante en esta guía.
por un gestor de volúmenes lógicos (por ejemplo,
LVM
);
por un componente de un sistema de archivos (por ejemplo,
ZFS
,
Btrfs
).
RAID por hardware
La matriz está gestionada directamente por una tarjeta de hardware dedicada instalada en el PC al que los discos se conectan directamente. La lógica RAID se ejecuta en un procesador de la placa base independientemente del
procesador del equipo (CPU)
. Aunque esta solución es independiente de cualquier sistema operativo, este último requiere un controlador para poder funcionar correctamente con la controladora de RAID por hardware. La matriz RAID, o bien se puede configurar a través de una opción de la interfaz rom o, según el fabricante, con una aplicación dedicada, cuando se ha instalado el sistema operativo. La configuración es transparente para el kernel de Linux: no ve los discos por separado.
FakeRAID
Este tipo de RAID es llamado propiamente BIOS o RAID integrado en la placa base, pero es falsamente anunciado como RAID por hardware. La matriz está gestionada por controladoras pseudoRAID donde la lógica RAID se implementa en una opción de rom o en el propio firmware
con un EFI SataDriver
[
enlace roto
2024-01-13]
(en el caso de
Unified Extensible Firmware Interface (Español)
), pero no son completas controladoras de RAID por hardware con
todas
las funciones RAID implementadas. Por lo tanto, este tipo de RAID a veces se llama fakeRAID.
dmraid
disponible en los
repositorios oficiales
, se utilizará para suplir a estas controladoras. Algunos ejemplos de controladoras FakeRAID son:
Intel Rapid Storage
, JMicron JMB36x RAID ROM, AMD RAID, ASMedia 106x y NVIDIA MediaShield.
¿Qué tipo de RAID tengo?
Dado que el RAID por software se implementa por el usuario, este tipo de RAID es fácilmente conocido por el usuario.
Sin embargo, discernir entre fakeRAID y RAID por hardware verdadero puede ser más difícil. Los fabricantes no suelen distinguir correctamente estos dos tipos de RAID y siempre es posible falsear la publicidad. La mejor solución, en estos casos, es ejecutar la orden
lspci
y mirar la salida para encontrar la controladora RAID. A continuación, realice una búsqueda para ver qué información puede definir dicha controladora RAID. Los controladores RAID por hardware aparecen en esta lista, pero las implementaciones de FakeRAID no. Además, los verdaderos controladores de RAID por hardware a menudo son bastante caros, por lo que si alguien personaliza el sistema, es muy probable que al elegir una configuración RAID por hardware haya un cambio muy notable en el precio del equipo.
Instalación
Instale
mdadm
disponible en los
repositorios oficiales
.
mdadm
se utiliza para la administración de RAID por software puro usando dispositivos de bloque plano: el hardware subyacente no ofrece ninguna lógica RAID, solo un suministro de discos.
mdadm
funcionará con cualquier colección de dispositivos de bloques. Incluso si son inusuales. Por ejemplo, se puede, pues, hacer un matriz RAID de una colección de memorias USB.
Preparar los dispositivos
Advertencia
Estos pasos borran todo el contenido de un dispositivo, por lo que escriba con cuidado.
Si el dispositivo está siendo reutilizado o  repuesto de una matriz existente, borre cualquier información de configuración RAID antigua:
# mdadm --misc --zero-superblock /dev/<unidad>
o, si se va a eliminar una partición particular de una unidad:
# mdadm --misc --zero-superblock /dev/<partición>
Nota
Hacer limpieza de un superbloque de partición no debe afectar a las otras particiones en el disco.
Debido a la naturaleza de la funcionalidad RAID, es muy difícil realizar un
borrado con seguridad del disco
completo en una matriz en funcionamiento. Considere si es útil hacerlo antes de crearla.
Particionar los dispositivos
Es recomendable particionar los discos que se utilizarán en la matriz. Como la mayoría de los usuarios  RAID seleccionan discos duros de >2 TB, es preferible y recomendable utilizar tablas de particionado GPT. Consulte
Partitioning (Español)
para obtener más información sobre la partición y las [[[Partitioning (Español)#Herramientas de particionado]] disposibles.
Nota
También es posible crear un RAID directamente en los discos sin formato (sin particiones), pero no se recomienda porque puede causar problemas al intercambiar un disco fallido.
Sugerencia
Al reemplazar un disco fallido de un RAID, el nuevo disco debe ser exactamente del mismo tamaño que el disco fallido o más grande; de lo contrario, el proceso de recreación de matriz no funcionará. Incluso los discos duros del mismo fabricante y modelo pueden tener pequeñas diferencias de tamaño. Al dejar un poco de espacio sin asignar al final del disco, se pueden compensar las diferencias de tamaño entre las unidades, lo que facilita la elección de un modelo de unidad de reemplazo. Por lo tanto, es una buena práctica dejar aproximadamente 100 MiB de espacio no asignado al final del disco.
Tabla de particiones GUID
Después de crear las particiones, su
GUID de tipo de partición
debe ser
A19D880F-05FC-4D3B-A006-743F0F84911E
(puede asignarse seleccionando el tipo de partición
Linux RAID
en
fdisk
o
FD00
en
gdisk
).
Si se emplea una matriz de discos más grande, considere asignar
etiquetas de sistemas de archivos
o
etiquetas de particiones
para que sea más fácil identificar un disco individual más tarde.
Se recomienda crear particiones que sean del mismo tamaño en cada uno de los dispositivos.
Master Boot Record
Para aquellos que creen particiones en discos duros con una tabla de particiones MBR, los
ID de tipos de particiones
disponibles para su uso son:
0xFD
para matrices raid autodetectadas (
Linux raid autodetect
en
fdisk
)
0xDA
para datos sin sistema de archivos (
Non-FS data
en
fdisk
)
Consulte
Linux Raid Wiki:Partition Types
para obtener más información.
Compilar la matriz
Utilice
mdadm
para compilar la matriz. Varios ejemplos se dan a continuación.
Advertencia
No basta con copiar/pegar los ejemplos siguientes; sustituya las opciones/letras correctas de la unidad.
Nota
Si se trata de una matriz RAID 1 que se pretende arrancar desde
Syslinux (Español)
una limitación en la v4.07 de syslinux requiere que el valor de los metadatos se ajuste a 1.0 en lugar de la opción predeterminada de 1.2.
Al crear una matriz desde un
medio de instalación de Arch
utilice la opción
--homehost=
myhostname
(o
--homehost=any
para tener siempre el mismo nombre independientemente del equipo) para establecer el
nombre del equipo
, de lo contrario, el nombre del host
archiso
se escribirá en los metadatos de la matriz.
Sugerencia
Puede especificar un nombre de dispositivo de raid personalizado utilizando la opción
--name=
MyRAIDName
o configurando la ruta del dispositivo de raid en
/dev/md/
MyRAIDName
. Udev creará enlaces simbólicos a las matrices de raid en
/dev/md/
usando ese nombre. Si
homehost
coincide con el
nombre del equipo
actual (o si homehost está configurado como
any
) el enlace será
/dev/md/
name
, si el nombre de host no coincide con él, el enlace será
/dev/md/
homehost
:
name
.
El siguiente ejemplo muestra la compilación de una matriz RAID 1 en el dispositivo 2:
# mdadm --create --verbose --level=1 --metadata=1.2 --raid-devices=2 /dev/md/MyRAID1Array /dev/sdb1 /dev/sdc1
El siguiente ejemplo muestra la compilación de una matriz RAID 5 con 4 dispositivos activos y 1 dispositivo de repuesto:
# mdadm --create --verbose --level=5 --metadata=1.2 --chunk=256 --raid-devices=4 /dev/md/MyRAID5Array /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1
Sugerencia
--chunk
se usa para cambiar el valor predeterminado del tamaño del fragmento. Consulte
Chunks: la clave oculta para el rendimiento RAID
para obtener más información sobre la optimización del tamaño del fragmento.
El siguiente ejemplo muestra la construcción de una matriz RAID10,far2 con 2 dispositivos:
# mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md/MyRAID10Array /dev/sdb1 /dev/sdc1
La matriz se crea en el dispositivo virtual
/dev/mdX
, ensamblada y lista para usar (en modo degradado). Se puede comenzar a usarla directamente al tiempo que mdadm resincroniza la matriz en segundo plano. Restaurar la paridad puede llevar mucho tiempo. Verifique el progreso con:
$ cat /proc/mdstat
Actualizar archivo de configuración
Por defecto, la mayoría de
mdadm.conf
está comentada y contiene solo lo siguiente:
/etc/mdadm.conf
...
DEVICE partitions
...
Esta directiva le dice a mdadm que examine los dispositivos a los que hace referencia
/proc/partitions
y que ensamble tantas matrices como sea posible. Esto está bien si realmente desea iniciar todos las matrices disponibles y está seguro de que no se encontrarán superbloques inesperados (como después de instalar un nuevo dispositivo de almacenamiento). Un enfoque más preciso es agregar explícitamente las matrices a
/etc/mdadm.conf
:
# mdadm --detail --scan >> /etc/mdadm.conf
Esto resulta en algo como lo siguiente:
/etc/mdadm.conf
...
DEVICE partitions
...
ARRAY /dev/md/MyRAID1Array metadata=1.2 name=pine:MyRAID1Array UUID=27664f0d:111e493d:4d810213:9f291abe
Esto también hace que mdadm examine los dispositivos a los que hace referencia
/proc/partitions
. Sin embargo, solo los dispositivos que tienen superbloques con un UUID de
27664…
se ensamblan en matrices activas.
Consulte
mdadm.conf(5)
para obtener más información.
Ensamblar la matriz
Una vez que el archivo de configuración se ha actualizado, la matriz puede ser ensamblada usando mdadm:
# mdadm --assemble --scan
Formatear RAID con un sistema de archivos
La matriz ahora se puede formatear con un sistema de archivos como cualquier otro disco, basta tener en cuenta que:
debido al gran tamaño del volumen, no todos los sistemas de archivos son adecuados (ver:
limitaciones de los sistema de archivos
);
el sistema de archivos debe apoyar su aumento y reducción mientras se está en línea (ver:
características de los sistemas de archivos
);
se debe calcular el «stride» y «stripe-width» correctos para un rendimiento óptimo.
Calcular el stride y stripe-width
Se requieren dos parámetros para optimizar la estructura del sistema de archivos para que se ajuste de manera óptima dentro de la estructura RAID subyacente: el
«stride»
y
«stripe-width»
. Estos se derivan del
tamaño del fragmento
(«
chunk
») de RAID , el
tamaño del bloque
del sistema de archivos, y el
número de «discos de datos»
.
El tamaño del fragmento (chunk) es una propiedad de la matriz RAID, decidida en el momento de su creación. El valor predeterminado actual de
mdadm
es 512 KiB. Se puede encontrar con
mdadm
:
# mdadm --detail /dev/mdX | grep 'tamaño del fragmento (chunk)'
El tamaño del bloque es una propiedad del sistema de archivos, decidido en
su
creación. El valor predeterminado para muchos sistemas de archivos, incluido ext4, es 4 KiB. Consulte
/etc/mke2fs.conf
para obtener detalles sobre ext4.
El número de «discos de datos» es el número mínimo de dispositivos necesarios en la matriz para reconstruirlo completamente sin pérdida de datos. Por ejemplo, este es N para una matriz raid0 de N dispositivos y N-1 para raid5.
Una vez que tenga estas tres cantidades, el «stride» y el «stripe-width» se pueden calcular utilizando las siguientes fórmulas:
stride = tamaño del fragmento / tamaño del bloque
stripe width = número de discos físicos de datos * stride
Ejemplo 1. RAID0
Ejemplo formateando con sistema de archivos ext4 con «stride» y «stripe-width» correctas:
Hipotética matriz RAID0 que se compone de 2 discos físicos.
El tamaño del fragmento es 64 KiB.
El tamaño del bloque es 4 KiB.
Stride = (tamaño fragmento (chunk)/tamaño bloque).
En este ejemplo, la matemática es (64/4) por lo que stride = 16.
Stripe-width = (número de discos físicos de
datos
* stride).
En este ejemplo, la matemática es (2*16) por lo que stripe-width = 32.
# mkfs.ext4 -v -L myarray -m 0.5 -b 4096 -E stride=16,stripe-width=32 /dev/md0
Ejemplo 2. RAID5
Ejemplo formateando con sistema de archivos ext4 con «stride» y «stripe-width» correctas:
Hipotética matriz RAID5 que se compone de 4 discos físicos; 3 discos de datos y 1 disco de paridad.
El tamaño fragmento (chunk) es 512 KiB.
El tamaño de bloque es 4 KiB.
Stride = (tamaño fragmento (chunk)/tamaño de bloque).
En este ejemplo, la matemática es (256/4) por lo que stride = 64.
Stripe-width = (número de discos físicos de
datos
* stride).
En este ejemplo, la matemática es (3*128) de modo que stripe-width = 384.
# mkfs.ext4 -v -L myarray -m 0.01 -b 4096 -E stride=128,stripe-width=384 /dev/md0
Para más información sobre «stride» y stripe-width, ver:
Matemáticas RAID
.
Nota
[del traductor]
Stride
: es el número de posicionamiento en la memoria entre los comienzos de uno y otro de los sucesivos elementos de la matriz, se puede traducir por «banda», «tira» o «zancada».
Stride-width
: es el tamaño o ancho de la zancada.
Chunk
: es la masa «atómica» más pequeña de datos que puede ser escrita en los dispositivos, lo podríamos traducir por «porción», «trozo» o «fragmento».
Example 3. RAID10,far2
Ejemplo de formato a ext4 con el «stripe-width» y «stride» correctos:
La matriz hipotética RAID10 se compone de 2 discos físicos. Debido a las propiedades de RAID10 con el diseño far2, ambos cuentan como discos de datos.
El tamaño del fragmento es de 512 KiB.
# mdadm --detail /dev/md0 | grep 'Chunk Size'
Chunk Size : 512K
El tamaño del bloque es de 4 KiB.
stride = tamaño de fragmento / tamaño de bloque.
En este ejemplo, la matemática es 512/4, por lo que stride = 128.
stripe width = número de discos físicos de
datos
* stride.
En este ejemplo, la matemática es 2*128, por lo que el «stripe-width» = 256.
# mkfs.ext4 -v -L myarray -m 0.01 -b 4096 -E stride=128,stripe-width=256 /dev/md0
Montar desde un CD live
Los usuarios que quieran montar la partición RAID desde un CD live, escriban:
# mdadm --assemble /dev/md<number> /dev/<disk1> /dev/<disk2> /dev/<disk3> /dev/<disk4>
Si su RAID 1, al que le falta una matriz de discos, se autodetectó  erróneamente como RAID 1 (según
mdadm --detail /dev/md<number>
) y se informó como inactivo (según
cat /proc/mdstat
), detenga primero la matriz:
# mdadm --stop /dev/md<number>
Instalar Arch Linux en RAID
Nota
La siguiente sección se aplica solo si el sistema de archivos raíz reside en la matriz. Los usuarios pueden saltarse esta sección si la matriz contiene una partición(s) de datos.
Se debe crear la matriz RAID entre los pasos de
particionar
y
formatear
del proceso de instalación. En lugar de formatear directamente una partición para que sea su sistema de archivos raíz, ello se hará sobre la matriz RAID.
Siga la sección
#Instalación
para crear la matriz RAID. Luego, continúe con el procedimiento de instalación hasta que se complete el paso pacstrap.
Al usar
arranque UEFI
, consulte también
EFI system partition (Español)#Partición ESP sobre RAID
.
Actualizar archivo de configuración
Nota
Esto debe hacerse fuera de chroot, de ahí el prefijo /mnt en la ruta de archivo.
Después de que el sistema base se haya instalado, el archivo de configuración por defecto,
mdadm.conf
, debe ser actualizado, así:
# mdadm --detail --scan >> /mnt/etc/mdadm.conf
Nota
Para evitar el fallo de
mdmonitor.service
en el arranque (activado de forma predeterminada), deberá descomentar
MAILADDR
y proporcionar una dirección de correo electrónico y/o aplicación para manejar notificación de problemas con su matriz en en la parte de abajo del archivo
mdadm.conf
. Vea
#Correos sobre eventos
.
Continuar con el proceso de instalación hasta que llegue al paso
crear un entorno inicial ramdisk
y, a continuación, siga en sección siguiente.
Configurar mkinitcpio
Nota
Esto debe hacerse en entorno chroot.
Añada
mdadm_udev
a la sección
HOOKS
de
mkinitcpio.conf
para añadir soporte para mdadm directamente en la imagen initramfs inicial:
/etc/mkinitcpio.conf
...
 HOOKS=(base udev autodetect keyboard modconf block
mdadm_udev
filesystems fsck)
...
Si usa el hook
mdadm_udev
con una matriz FakeRAID, se recomienda incluir
mdmon
en la matriz
BINARIES
:
/etc/mkinitcpio.conf
...
BINARIES=(
mdmon
)
...
Después
regenere la imagen initramfs
.
Configurar el gestor de arranque
Apunte el parámetro
root
al dispositivo asignado. 
Por ejemplo:
root=/dev/md/
MyRAIDArray
Si el arranque desde una partición RAID por software falla usando el método anterior de nodo de dispositivo del kernel, una forma alternativa es usar uno de los métodos de
Persistent block device naming (Español)
, por ejemplo:
root=LABEL=Root_Label
Véase también
GRUB (Español)#RAID
.
Mantenimiento de RAID
Depuración
Es una buena práctica para que los datos funcionen con normalidad
hacer una depuración
para comprobar y corregir los errores. Dependiendo del tamaño/configuración de la matriz, una depuración puede durar varias horas en completarse.
Para iniciar una depuración de datos:
# echo check > /sys/block/md0/md/sync_action
La operación de verificación escanea las unidades para los sectores defectuosos y los repara automáticamente. Si encuentra sectores no defectuosos que contienen datos erróneos (los datos de un sector no concuerdan con los datos que otro disco nos indica que debería tener, por ejemplo, el bloque de paridad + los demás bloques de datos, nos haría pensar que este bloque de datos es incorrecto), entonces no se toma ninguna acción, pero el evento se registra (ver más abajo). Este «no hacer nada», permite a los administradores inspeccionar los datos en el sector y los datos que se producirían mediante la reconstrucción de los sectores con la información redundante, y escoger los datos correctos a mantener.
Como con muchas tareas/artículos relativos a mdadm, el estado de la limpieza se puede consultar mediante la lectura de
/proc/mdstat
.
Ejemplo:
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1] 
md0 : active raid1 sdb1[0] sdc1[1]
      3906778112 blocks super 1.2 [2/2] [UU]
      [>....................]  check =  4.0% (158288320/3906778112) finish=386.5min speed=161604K/sec
      bitmap: 0/30 pages [0KB], 65536KB chunk
Para detener con seguridad una depuración de datos cuya ejecución está en curso:
# echo idle > /sys/block/md0/md/sync_action
Nota
Si se reinicia el sistema después que una depuración parcial haya sido suspendida, la depuración comenzará de nuevo.
Cuando la depuración se ha completado, los administradores pueden comprobar cuántos bloques (si los hay) se han marcado como erróneos:
# cat /sys/block/md0/md/mismatch_cnt
Notas generales sobre la depuración
Nota
Los usuarios pueden alternativamente aplicar echo
repair
a
/sys/block/md0/md/sync_action
, pero esto es poco aconsejable, ya que si se encuentra una falta de coincidencia en los datos, se actualizará automáticamente para mantener la coherencia. El peligro es que realmente no sabemos si se trata de una falta de  paridad o el bloque de datos es correcto (o cuál bloque de datos en caso de RAID1). Es una cuestión de azar si la operación recibe los datos correctos en lugar de los datos erróneos.
Es una buena idea configurar un trabajo cron como root para programar una limpieza periódica. Vea
raid-check
AUR
que puede ayudar con esto. Para realizar una limpieza periódica utilizando temporizadores systemd en lugar de cron. Consulte
raid-check-systemd
AUR
que contiene el mismo script junto con los archivos de unidad de temporizador systemd asociados.
Nota
Para las unidades de disco típicas, la limpieza puede tomar aproximadamente
seis segundos por gigabyte
(es decir, una hora cuarenta y cinco minutos por terabyte), así que planifique el inicio de su trabajo cron o temporizador adecuadamente.
Notas sobre la depuración de RAID1 y RAID10
Debido al hecho de que RAID1 y RAID10 escriben en el kernel sin búfer, una matriz puede tener cuentas desajustadas sin 0 incluso cuando la matriz es saludable. Estos recuentos sin 0 solo existirán en áreas de datos transitorios en los que no suponen un problema. Sin embargo, no podemos discernir la diferencia entre una cuenta sin 0 respecto de datos transitorios, con un recuento sin 0 que signifique un verdadero problema. Este hecho es una fuente de falsos positivos en matrices RAID1 y RAID10. Sin embargo, a pesar de ello se recomienda realizar depuraciones regularmente con el fin de detectar y corregir los sectores erróneos que pueden estar presentes en los dispositivos.
Extracción de dispositivos de una matriz
Se puede eliminar un dispositivo de la matriz después de marcarlo como defectuoso:
# mdadm --fail /dev/md0 /dev/sdxx
Ahora quítelo de la matriz:
# mdadm -r /dev/md0 /dev/sdxx
Retire el dispositivo de forma permanente (por ejemplo, para utilizarlo de forma individual a partir de ahora). Emita las dos órdenes descritas anteriormente, y luego:
# mdadm --zero-superblock /dev/sdxx
Advertencia
¡No emita esta orden en matrices lineales o RAID0 o se producirán pérdidas de datos!
La reutilización del disco eliminado sin poner a cero el superbloque provocará la pérdida de todos los datos en el próximo arranque. (Después de que mdadm intentará usarlo como parte de la matriz de raid).
Para dejar de usar una matriz:
desmontar la matriz de destino;
detener la matriz con:
mdadm --stop /dev/md0
;
repetir las tres órdenes descritas al principio de esta sección en cada dispositivo;
quitar la línea correspondiente de
/etc/mdadm.conf
.
Adición de un nuevo dispositivo a una matriz
La adición de nuevos dispositivos con mdadm se puede hacer en un sistema en funcionamiento con los dispositivos montados.
Particione el nuevo dispositivo usando el mismo diseño de uno de los que ya están en la matriz, como se mencionó anteriormente.
Ensamble la matriz RAID si no está ya ensamblada:
# mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
Añada el nuevo dispositivo de la matriz:
# mdadm --add /dev/md0 /dev/sdc1
Esto no debería tomar mucho tiempo para que mdadm lo haga.
Dependiendo del tipo de RAID (por ejemplo, con RAID1), mdadm puede agregar el dispositivo como repuesto sin sincronizar los datos. Puede aumentar la cantidad de discos que utiliza RAID utilizando
--grow
con la opción
--raid-devices
. Por ejemplo, para aumentar una matriz a cuatro discos:
# mdadm --grow /dev/md0 --raid-devices=4
Esto no debe llevarle mucho tiempo a mdadm. Una vez más, compruebe el progreso con:
# cat /proc/mdstat
Compruebe que el dispositivo se ha añadido, con la orden:
# mdadm --misc --detail /dev/md0
Nota
Para arrays RAID0, puede recibir el siguiente mensaje de error:
mdadm: add new device failed for /dev/sdc1 as 2: Invalid argument
Esto se debe a que los comandos anteriores agregarán el nuevo disco como «repuesto» pero RAID0 no tiene repuestos. Si desea agregar un dispositivo a una matriz RAID0, debe «agrandar» y «añadirß en la misma orden, como se muestra a continuación:
# mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc1
Incrementar tamaño de un volumen RAID
Si se instalan discos más grandes en una matriz RAID o se ha aumentado el tamaño de la partición, puede ser conveniente aumentar el tamaño del volumen RAID para llenar el espacio más grande disponible. Este proceso puede comenzar siguiendo primero las secciones anteriores relacionadas con el reemplazo de discos. Una vez que el volumen RAID se ha reconstruido en los discos más grandes, debe «agrandar» para llenar el espacio.
# mdadm --grow /dev/md0 --size=max
A continuación,  las particiones presentes en el volumen RAID
/dev/md0
puede que necesiten ser redimensionadas. Consulte
Partitioning (Español)
para más detalles. Finalmente, será necesario cambiar el tamaño del sistema de archivos en la partición mencionada anteriormente. Si la partición se realizó con
gparted
, esto se hará automáticamente. Si se utilizaron otras herramientas, desmonte y cambie el tamaño del sistema de archivos manualmente.
# umount /storage
# fsck.ext4 -f /dev/md0p1
# resize2fs /dev/md0p1
Cambiar los límites de velocidad de sincronización
La sincronización puede llevar un tiempo. Si la máquina no es necesaria para otras tareas, se puede aumentar el límite de velocidad.
# cat /proc/mdstat
Personalities : [raid1]
 md0 : active raid1 sda3[2] sdb3[1]
       155042219 blocks super 1.2 [2/1] [_U]
       [>....................]  recovery =  0.0% (77696/155042219) finish=265.8min speed=9712K/sec

 unused devices: <none>
Verifique el límite de velocidad actual.
# cat /proc/sys/dev/raid/speed_limit_min
1000
# cat /proc/sys/dev/raid/speed_limit_max
200000
Aumente los límites.
# echo 400000 >/proc/sys/dev/raid/speed_limit_min
# echo 400000 >/proc/sys/dev/raid/speed_limit_max
Luego revise la velocidad de sincronización y el tiempo estimado de finalización.
# cat /proc/mdstat
Personalities : [raid1]
 md0 : active raid1 sda3[2] sdb3[1]
       155042219 blocks super 1.2 [2/1] [_U]
       [>....................]  recovery =  1.3% (2136640/155042219) finish=158.2min speed=16102K/sec

 unused devices: <none>
Véase también
sysctl#MDADM
.
Monitorización
Una simple orden de una sola línea imprime el estado de los dispositivos RAID:
awk '/^md/ {printf "%s: ", $1}; /blocks/ {print $NF}' </proc/mdstat
md1: [UU]
md0: [UU]
Observar estado con mdstat
# watch -t 'cat /proc/mdstat'
O preferiblemente usando
tmux
# tmux split-window -l 12 "watch -t 'cat /proc/mdstat'"
Seguimiento Entrada/Salida con iotop
El paquete
iotop
muestra las estadísticas de entrada/salida para los procesos. Utilice esta orden para ver la Entrada/Salida para los hilos de raid.
# iotop -a -p $(sed 's, , -p ,g' <<<`pgrep "_raid|_resync|jbd2"`)
Seguimiento Entrada/Salida con iostat
La utilidad
iostat
del paquete
sysstat
muestra las estadísticas de entrada/salida para los dispositivos y las particiones.
iostat -dmy 1 /dev/md0
 iostat -dmy 1 # todo
Correos sobre eventos
Un servidor de correo SMTP (sendmail) o al menos un agente de correo electrónico (sSMTP/msmtp) es necesario para lograr esto. Tal vez la solución más simple es utilizar
dma
AUR
que es muy pequeño (instala 0,08 MiB) y no requiere instalación.
Editar
/etc/mdadm.conf
para definir la dirección de correo electrónico en la que se recibirán notificaciones.
Nota
Si utiliza dma como se mencionó anteriormente, los usuarios pueden simplemente enviar correos directamente al nombre de usuario en el equipo local, en lugar de a una dirección de correo electrónico externo.
Para probar la configuración:
# mdadm --monitor --scan --oneshot --test
mdadm incluye un servicio de systemd
mdmonitor.service
para llevar a cabo la tarea de control, por lo que en este punto, no tiene nada más que hacer. Si no configura un correo electrónico en
/etc/mdadm.conf
, dicho servicio fallará. Si no desea recibir correos sobre eventos mdadm, el fallo puede ser ignorado; si no desea recibir las notificaciones ni los mensajes acerca del error, puede
enmascarar
la unidad.
Método alternativo
Para evitar la instalación de un servidor de correo SMTP o un expedidor de correo electrónico, puede utilizar la herramienta
S-nail
(no se olvide de configurarla) ya presente en el sistema.
Cree un archivo llamado
/etc/mdadm_warning.sh
con:
/etc/mdadm_warning.sh
#!/bin/bash
event=$1
device=$2

echo " " | /usr/bin/mailx -s "$event on $device" '''destination@email.com'''
Y dele permisos de ejecución:
chmod +x /etc/mdadm_warning.sh
A continuación, agregue esto a mdadm.conf
PROGRAM /etc/mdadm_warning.sh
Puede probar y activar el uso de la misma como en el método anterior.
Solución de problemas
Error: «invalid raid superblock magic»
Si está obteniendo el error «invalid raid superblock magic» al reiniciar y tiene otros discos duros adicionales que sean los componentes de la matriz, verifique que el orden de los discos duros es el correcto. Durante la instalación, los dispositivos RAID pueden ser HDD, HDE y HDF, pero durante el arranque pueden ser hda, hdb y hdc. Ajuste su línea del kernel en consecuencia.
Error: «kernel: ataX.00: revalidation failed»
Si de repente (después del reinicio, al cambiar la configuración del BIOS) experimenta mensajes de error como:
Feb  9 08:15:46 hostserver kernel: ata8.00: revalidation failed (errno=-5)
no significa necesariamente que una unidad esté rota. A menudo se encuentran enlaces de pánico en la web que indican lo peor. En una palabra,
No Panic
(que no cunda el pánico). Tal vez acaba de cambiar la configuración de APIC o ACPI en la BIOS o los parámetros del kernel de algún modo. Cámbielos de nuevo y debería funcionar bien. Generalmente, cambiar ACPI y/o apagar ACPI debe ayudar.
Iniciar matrices en solo lectura
Cuando se inicia una matriz md, el superbloque será escrito, y puede iniciarse la resincronización. Para comenzar en solo lectura, establecer el módulo del kernel
md_mod
con el parámetro
start_ro
. Cuando se establece, las nuevas matrices vendrán activadas un modo «auto-ro», que desactiva todas las entradas/salidas internas (actualizaciones de superbloque, resincronización, recuperación) y se pone automáticamente en «rw» cuando llega la primera solicitud de escritura.
Nota
La matriz se puede establecer en modo «ro» usando
mdadm --readonly
antes que venga la primera solicitud de escritura, o se puede iniciar la resincronización sin una solicitud de escritura mediante
mdadm --readwrite
.
Para establecer el parámetro en el arranque, añadir
md_mod.start_ro=1
a la línea del kernel.
O establezca el parámetro al tiempo de cargar el módulo desde el archivo
/etc/modprobe.d/
o directamente desde
/sys/
:
# echo 1 > /sys/module/md_mod/parameters/start_ro
Recuperación de una unidad rota o ausente en el raid
Se puede obtener el error mencionado anteriormente también cuando una de las unidades se rompe por cualquier razón. En ese caso, tendrá que forzar a raid a encender con un disco más corto. Escriba esta orden (modificar cuando sea necesario):
# mdadm --manage /dev/md0 --run
Ahora debería ser capaz de montarla de nuevo con algo como esto (si es que lo tenía en fstab):
# mount /dev/md0
Ahora el raid debería estar funcionando de nuevo y disponible para su uso, sin embargo, con un disco corto. Después, debe particionar el disco de la manera como se ha descrito anteriormente en la sección para
preparar los dispositivos
. Una vez hecho esto puede agregar el nuevo disco a la matriz escribiendo:
# mdadm --manage --add /dev/md0 /dev/sdd1
Si escribe:
# cat /proc/mdstat
es probable que vea que el raid ya está activo y en reconstrucción.
También puede actualizar su configuración (ver:
#Actualizar archivo de configuración
).
Benchmarking
Vea
Wikipedia:es:Benchmark (informática)
.
Hay varias herramientas para la evaluación comparativa de un RAID. La mejora más notable es el aumento de la velocidad cuando varios subprocesos están leyendo desde el mismo volumen RAID.
Tiobench
es un programa que mide las mejoras de rendimiento mediante la medición completa de Entrada/Salida de los hilos del disco.
bonnie++
analiza el tipo de acceso a la base de datos para uno o más archivos, y la creación, lectura y borrado de archivos pequeños que puede simular el uso de programas como Squid, INN, o el formato de e-mail Maildir. El programa
ZCAV
pone a prueba el rendimiento de diferentes zonas de un disco duro sin necesidad de escribir ningún dato en el disco.
hdparm
NO
debería ser utilizado para comparar un RAID, ya que proporciona resultados muy inconsistentes.
Véase también
Linux Software RAID
(thomas-krenn.com)
Linux RAID wiki entry
[
enlace roto
2024-10-12]
on The Linux Kernel Archives
How Bitmaps Work
Chapter 15: Redundant Array of Independent Disks (RAID)
[
enlace roto
2024-07-30]
of Red Hat Enterprise Linux 6 Documentation
Linux-RAID FAQ
on the Linux Documentation Project
BAARF
(Archive.org) including
Why should I not use RAID 5?
(Archive.org) by Art S. Kagel
Introduction to RAID
,
Nested-RAID: RAID-5 and RAID-6 Based Configurations
,
Intro to Nested-RAID: RAID-01 and RAID-10
, and
Nested-RAID: The Triple Lindy
in Linux Magazine
HowTo: Speed Up Linux Software Raid Building And Re-syncing
Wikipedia:Non-RAID drive architectures
mdadm
mdadm source code
Software RAID on Linux with mdadm
in Linux Magazine
Wikipedia - mdadm
Hilos del foro
Raid Performance Improvements with bitmaps
GRUB and GRUB2
Can't install grub2 on software RAID
Use RAID metadata 1.2 in boot and root partition
RAID con encriptación
Linux/Fedora: Encrypt /home and swap over RAID with dm-crypt
by Justin Wells