RAID (II)

En la entrada anterior, expliqué muy por encima los beneficios de utilizar RAID para aumentar la fiabilidad, capacidad y rendimiento de nuestro sistema. En esta entrada, voy a explicar algunos de los niveles RAID y los comandos utilizados en linux para instalar un RAID por software.

Me voy a limitar a copiar algunos de los datos de Wikipedia puesto que están perfectamente explicados:

Un RAID 0 (también llamado conjunto dividido, volumen dividido, volumen seccionado) distribuye los datos equitativamente entre dos o más discos sin información de paridad que proporcione redundancia. RAID 0 no era uno de los niveles iniciales y no es redundante, por lo tanto, hay que tener cuidado al utilizar este nivel.

Un RAID 1 crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos. Esto resulta útil cuando el rendimiento en lectura es más importante que la capacidad. Un conjunto RAID 1 sólo puede ser tan grande como el más pequeño de sus discos. Un RAID 1 clásico consiste en dos discos en espejo, lo que incrementa exponencialmente la fiabilidad respecto a un solo disco. El rendimiento de lectura se incrementa aproximadamente como múltiplo lineal del número del copias; es decir, un RAID 1 puede estar leyendo simultáneamente dos datos diferentes en dos discos diferentes, por lo que su rendimiento se duplica.

Un RAID 2 usa división a nivel de bits con un disco de paridad dedicado y usa un código de Hamming para la corrección de errores. El RAID 2 se usa rara vez en la práctica.

Un RAID 3 divide los datos a nivel de bytes en lugar de a nivel de bloques . Los discos son sincronizados por la controladora para funcionar al unísono. Éste nivel RAID actualmente no se usa. Permite tasas de transferencias extremadamente altas. Teóricamente, necesitaría 39 discos en un sistema informático moderno: 32 se usarían para almacenar los bits individuales que forman cada palabra y 7 se usarían para la corrección de errores.

Un RAID 4 usa división a nivel de bloques con un disco de paridad dedicado. Necesita un mínimo de 3 discos físicos. Es parecido al RAID 3 excepto porque divide a nivel de bloques en lugar de a nivel de bytes. Esto permite que cada miembro del conjunto funcione independientemente cuando se solicita un único bloque.

Un RAID 5 (también llamado distribuido con paridad) es una división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros del conjunto. El RAID 5 ha logrado popularidad gracias a su bajo coste de redundancia. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad. RAID 5 necesitará un mínimo de 3 discos para ser implementado.

Un RAID 6 amplía el nivel RAID 5 añadiendo otro bloque de paridad, por lo que divide los datos a nivel de bloques y distribuye los dos bloques de paridad entre todos los miembros del conjunto. El RAID 6 no era uno de los niveles RAID originales.

Existen igualmente niveles RAID propietarios y podemos anidarlos, pero ese tema se escapa del objetivo de esta entrada.

Una vez que hayamos decidido el nivel RAID que queremos utilizar y tengamos todo el hardware instalado, procederemos a su configuración. Para configurar un RAID por software en linux utilizamos mdadm. En Ubuntu Server por ejemplo, viene instalado por defecto, pero en su versión desktop, tendremos que instalarlo con la orden:

apt-get install mdadm

El uso de mdadm sin llevar unas mínimas precauciones es muy peligroso porque podemos destruir todos los datos de los discos, por lo tanto recomiendo hacer prácticas y pruebas en una maquina virtual antes.

Algunos ejemplos de uso:

mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdc /dev/sdb

nos crearía un RAID nivel 1 con dos discos, /dev/sdc y /dev/sdb

mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdc missing

nos crearía un RAID nivel 1 con un solo disco, /dev/sdc está pensado para montar un RAID degradado y poder añadirle mas discos en un futuro.
El comando anterior no debemos utilizarlo con discos que ya formaban parte de una array anteriormente si no queremos perder los datos de estos. Si lo que queremos hacer es montar un array con estos discos para recuperar su información, debemos utilizarlo con –assemble.

mdadm –assemble –scan

que escanearía todos los discos en busca de arrays y los montaría automáticamente. Si lo que deseamos en montar el array pero sin tener todos los discos, por ejemplo para recuperar los datos, podemos utilizar:

mdadm –assemble /dev/md0 /dev/sda1
mdadm -R /dev/md0

para ver los detalles de un array:

mdadm –detail /dev/md0

nos muestra información sobre el array de discos. En este caso el md0

Para añadir mas discos a un array, utilizamos –add:

mdadm –add /dev/md1 /dev/sdd

que nos agregaría el disco /dev/sdd al array /dev/md1

si por el contrario, lo que queremos es eliminar discos de un array porque han fallado, podemos usar fail y remove.

mdadm –manage /dev/md0 –remove /dev/sdd

que nos eliminaría el disco /dev/sdd del array /dev/md0

En una tercera entrega, pondremos un ejemplo, paso por paso de como crear un array de discos, particionarlo, eliminar alguno de sus discos que ha fallado y poner un nuevo disco.

 

, , ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *