logo linux

La historia de RAID en Linux

Alan Cox es uno de los principales desarrolladores del kernel y en un mensaje de hace unos días, explica por qué RAID es diferente en Linux. Además da bastante luz al asunto de Lenovo que salió hace unos días. Si tienes curiosidad sobre cómo ha evolucionado RAID en general desde que nació y de cómo se ha integrado en Linux en particular, sigue leyendo.

RAID (Redundant Array of Independent Disks) es el sistema con el que es posible usar varias unidades de almacenamiento que, según la configuración, puede ofrecer como resultado una mayor velocidad, fiabilidad o ambos. A continuación podéis leer cómo se ha desarrollado esta tecnología en Linux según Cox:

«Los modelos sin soporte dependerán de los proveedores de Linux sacando nuevos kernel y controladores para dar soporte a funciones de RAID en SSD».

Está bien ver que la prensa tecnológica comprueba la veracidad de los comentarios de compañías así como de la prensa política comprueba la veracidad de lo que dicen los políticos. Estoy leyendo esto en una caja de un SSD RAID1. Ha tenido un SSD RAID 1 unos años.

Linux ha tenido soporte para RAID en SSD desde hace años, de hecho está soportado desde el momento en el que podías enchufar un SSD en un ordenador con Linux.

El RAID de Linux es muy diferente a la experiencia de Windows por una serie de razones técnicas e históricas.

En la época de DOS, los procesadores eran relativamente lentos, el ancho de banda de la memoria y especialmente el ancho de banda de entrada y salida estaba limitado y sólo tenías un núcleo.

Desde entonces ha nacido una gama de productos que ponen algo como un i960 a bastantes controladoras RLL, SCSI y el posterior IDE en una placa, junto a un poco de RAM y se hizo el RAID y otras cosas chulas. En ese contexto funcionaron y fueron más rápidos de lo que RAID por software podía ser. Cada fabricante lo hacía diferente, cada uno tenía su propio firmware y naturalmente cambiar esos discos a otra controladora lo rompía todo.

Rápidamente, estas placas  se volvieron menos efectivas conforme el bus PCI solucionó el problema del ancho de banda y los procesadores se hicieron más rápidos y nació MMX e instrucciones similares. En la época del Pentium II, básicamente eran un chiste excepto por algunas placas muy rápidas e incluso esas eran dudosas comparadas con usar sistemas multiprocesador. La ley de Moore volvió a ganar.

Los fabricantes de RAID respondieron de dos formas: algunos de ellos se fueron al tope de gama para hacer cotroladoras de gama alta para grandes empresas, pero perseguidas por procesadores más rápidos, buses más rápidos y cada vez más núcleos, todos ellos se unieron en una o dos compañías y la mayoría desaparecieron.

Los otros empezaron a hacer RAID por software añadiendo soporte en la BIOS para arrancar desde sus tarjetas ‘RAID’ y trasladaron su firmware a los controladores instalados en el PC. Esto se describió como una solución barata (‘fakeraid’) pero los bancos de pruebas normalmente mostraban lo contrario.

Con el fin de mantener sus beneficios incluso cuando estaban usando el mismo chip e incluso la misma placa que la controladora IDE más mugrienta, barata y de peor gama, ellos bloquearon el firmware para unos identificadores PCI concretos. En algunos casos la gente incluso solía soldar los jumpers en las tarjetas IDE para usar un controlador RAID en Windows, en vez de comprar la tarjeta cara con el jumper ya listo.

Hoy es poco más o menos lo mismo excepto que la mayoría de fabricantes de ordenadores incluyen su software RAID de forma gratuita pero todavía atado a sus productos.

La historia del RAID en Linux es diferente porque, a diferencia de Microsoft, la decisión se tomó para integrar el software RAID de una forma adecuada en el sistema operativo.

A los controladores de RAID para Linux (md) no les importa que estés haciendo RAID con cualquier disco. No tiene sentido pero puedes hacer RAID con disquetes e incluso con ramdisks. En realidad, los RAID con disquetes fueron útiles en los primeros días: era el único medio conectable en caliente que tenía todo el mundo para hacer pruebas.

Como RAID es sencillamente una parte del núcleo del sistema operativo, puedes hacer volúmenes RAID con dos controladores de distintos fabricantes o sobre controladoras de gama baja a pesar de los esfuerzos para bloquearlas. Es incluso agnóstico en cuando al bus y cualquiera que haya rescatado alguna vez volúmenes RAID quitádolo de un servidor y conectadolo en un caddy USB, lo apreciará.

Cuando se añadió la gestión de volúmenes a Linux (el controladores dm), también se añadió de una forma abstraída y sabe cómo dividir los discos y presentar las rodajas de estos en todo tipo de órdenes. Esto permitió que los controladores RAID de Linux fueran usados para gestionar las mismas interfaces que los fabricantes solían usar en sus productos propietarios para Windows. Algunos fabricantes contribuyeron a ese soporte, otros se hicieron con ingeniería inversa y resultó más fácil de lo esperado porque muchos de ellos parecía usar el mismo esquema con sólo unos pocos cambios (quizás habían comprado la licencia del mismo firmware). Esto es lo que hace la herramienta dmraid.

Conforme fue pasando el tiempo, las capas RAID en el kernel también crecieron con nuevas funciones como ser capaces de usar pequeñas unidades rápidas (como una RAM con batería o un rápido SSD) para lidiar con un dispositivo más lento, para hacer cifrado e incluso para emular dispositivos que fallan para depurar errores.

Hay bastante magia en encontrar volúmenes, ensamblarlos y también hacer el trabajo de la instalación. Ese es un gran trabajo que hicieron las distribuciones que, aunque invisible, no debe ser olvidado.

Hoy mucho hardware de PC todavía tiene este legado de extraña rivalidad de controladores por el hecho de que Windows no integrara el soporte de RAID en su momento. A las controladoras estándar AHCI a menudo se les puede dar varios identificadores PCI para que el controlador del fabricante correcto se pueda iniciar en Windows. Es por ello que hay una gran lista de identificadores en el controlador AHCI y por eso que seguimos añadiéndolos cuando encontramos nuevos. Sospecho que NVMe irá por el mismo camino.

A algunos fabricantes orientados a Windows no les gusta el hecho de que hagamos las cosas de la forma correcta y todavía les damos soporte a sus cosas, pero desde una perspectiva técnica y arquitectónica, lo que hace Linux (y lo que de hecho hacen la mayoría de sistemas que no son PC) es lo correcto para el usuario.

Si escribes un controlador para un disco, lo más probable es que ya tengas soporte para RAID en Linux porque está bien diseñado.

Si necesitas mover un disco o una controladora de una máquina a otra , sencillamente funciona porque está bien diseñado.

Nunca he llegado a saber por qué Microsoft no integró RAID en Windows cuando esto hubiera tenido sentido. Posiblemente no queriendo pisarle el pie a sus partners, quizás preocupado por las cuestiones antimonopolistas de la época.

El texto original se puede leer en la página de Google+ de Alan Cox.