Como utilizar una controladora LSI Logic SAS 1064e con Ubuntu/Debian

¿No habían pasado los tiempos de los Winmodem?, yo pensaba que si, que todo eso estaba solucionado, hasta que me he enfrentado al reciclaje de un servidor, quitando Windows y instalando una distro de Linux y me encuentro con los RAID-Software. Os cuento lo sucedido:

Imagen: www.kerneltrap.org

Imagen: www.kerneltrap.org

Uno tan feliz, mete el CD de Ubuntu, y se encuentra que: ¡¡¡¡No detecta ningún disco!!!!!. Este ordenador monta una placa Intel s5000spl, con una controladora “LSI Logic SAS 1064e“, que es algo parecido a los clásicos Winmodems, donde tiene una mezcla entre firmware y software que nos vuelve locos si no usamos un sistema operativo soportado.
A esta controladora, inicialmente le montamos un RAID 10 con 4 discos (el RAID 10 no nos quedo más remedio, ya que otra gracia de la placa es que si quieres RAID 5 tienes que poner 100 euros en la mesa, y en el bolsillo de Intel, para que te den una especie de jumper que habilita usar RAID 5 en la placa) y confiamos que funcione… Obviamente no pasó así.
Joder, a buscar los malditos drivers, y te encuentras algo muy molesto: Sólo soporta RedHat o Suse. ¿Lo qué?… La liamos.

Bueno, resignado, busco el código fuente del driver (que te lo dan eso si) y veo que se puede compilar el módulo para el Kernel, pero que tiene un problema: el código fuente del driver no funciona directamente en el Kernel de Ubuntu/Debian. Aparte, si usas un driver precompilado, NO puedes actualizar el Kernel, ya que tendrías que volver a adaptar otra vez el driver… trabajo de chinos.

Total, me rasgo las vestiduras. A la mierda, RAID por software… pero, ¿como leches hago para que se vean los discos?. Tras investigar, encontré un montón de información y vi que la controladora si estaba soportada, pero que a mucha gente no le funcionaba. ¿Pero por qué no funciona?.
Bueno, tras otro rastreo por los foros de ayuda de Ubuntu y el Bug Tracker de la distro , leo que al parecer la parte hardware si esta soportada, pero la parte que montan software no, ya que es propietaria.

Bueno, pues a la mierda con la parte software y todo arreglado. Simplemente hay que ir a la bios y en el apartado de “Mass Storage“, deshabilitar la “SW Raid“. Entonces, al instalar te apareceran los discos SIN el Raid que tenga configurado la controladora. Y ya tranquilamente puedes montar tu software-raid sobre linux, y ahora si podremos montar un RAID 5 como dios manda.

Otra batalla ganada.

Please follow and like us:

Como recuperar un Raid0 tras un fallo de disco en Ubuntu

Hoy me he enfrentado a este problema. Uno de nuestros servidores de respaldo (al menos no era un principal) ha muerto. Tras mirar que ocurría, sencillamente que el raid no existía, nos hemos dado cuenta de que un disco duro había pasado a mejor vida. Obviamente, al ser un Raid0 se pierde toda la información (por lo que hay que tener un respaldo, ya sea en otro equipo, o mediante otro raid), y en nuestro caso, este servidor era el respaldo de otro, por lo que simplemente hay que recuperarlo y volver a sincronizar con el principal.

Antes de nada, recordaros un gran blog que habla mucho sobre estos temas y muchos más, como es el blog de Iván López, que merece ser leído ya que ha hecho cosas muchos más complejas que esto, y del cual saco mucha información que vas a leer más adelante.

¿Como vimos el fallo?. La verdad que fue sencillo ya que tuvimos un apagón y el servidor no se recuperó bien, mediante el comando podemos ver el desastre:

more /proc/mdadm

Todos los discos que forman el raid se encuentran con una (S) a su lado (son discos spare) y falta uno. En nuestro caso, teniamos 7 discos, y solo salian 6.

sudo mount

Y nos encontramos que el raid no esta montado… bueno, toca buscar el disco duro roto. Un buen método es mirar el dmesg y ver cual da error, en nuestro caso no quedaba claro (la bios de la máquina marcaba el disco como conectado, pero luego linux no era capaz de mostrarlo), se fue desconectando uno a uno cada disco hasta que le encontramos. Se substituyo por uno de igual capacidad, ya que no es recomendable mezclar capacidades en Raid0.

Bien, pues substituimos el disco duro que esta averiado por el nuevo, pero este no está preparado para formar parte de un raid, por lo que lo conectamos y arrancamos la máquina (obviamente no montará el raid) y abrimos Gparted (en su defecto lo instalas). Le creas una nueva tabla de particiones, lo formateas a capacidad completa con el tipo de ficheros “sin formato”. Aplicamos y luego nos vamos al menú de “Partición > marcas” (no recuerdo exactamente como se dice en castellano, en ingles es “flags”, ya que mi servidor esta en inglés) y marcamos sólo “raid” de todas las opciones que nos aparecen. Aceptamos y el disco duro ya está preparado para ser parte de un raid.

Ahora tocaba eliminar todo rastro del antiguo raid, primero en los discos anteriores:

# Se tiene que parar o dará un error de que está en uso.
# Si se tienen dudas mirar en /proc/mdadm
sudo mdadm --stop /dev/md0
# Si incluyes el disco duro nuevo, este dará un error
#  no importará sigue adelante
sudo mdadm --zero-superbloc /dev/sd[a-g]1

Ya tenemos los discos impolutos y listos para volver a montar, pero antes hay que eliminar cualquier configuración de la existencia de raid en “/etc/mdadm/mdadm.conf” eliminando cualquier linea del tipo:

ARRAY /dev/md0 level=raid0 num-devices=7 UUID=1803e03e:db1868b2:d2508c3c:95c11b58

Aunque esto último no es obligatorio, ya que se va a reescribir unos pasos mas adelante, nos vendrá muy bien por si necesitamos un reinicio en la máquina, y así el sistema no tratará de montar de nuevo el raid con el fallo de disco.

Tras esto, ya podemos volver a crear nuestro raid:

sudo mdadm --create --auto=yes --verbose /dev/md0 --level=0 --raid-disks=7 /dev/sd[a-g]1

Ojo, que el parámetro auto del comando mdadm es muy interesante, ya que crea, si no existiera, el dispositivo md0, dentro del directorio “/dev“. Si has hecho un reinicio seguramente no tengas dicho dispositivo ya que se elimina si no esta en uso.

Bien, comprobamos que todo funciona, formateando la nueva partición:

sudo mkfs.ext3 -v /dev/md0

Con un simple:

sudo mount -a

remontamos el sistema de ficheros, y podemos acceder al raid. Perfecto.

Ahora queda el paso final, y es volver a crear el fichero /etc/mdadm/mdadm.conf:

cd /etc/mdadm
sudo cp mdadm.conf mdadm.conf.`date +%y%m%d`
sudo sh -c 'echo "DEVICE partitions" > ./mdadm.conf'
sudo sh -c 'mdadm --detail --scan >> ./mdadm.conf'

Testeamos que todo este bien:

more ./mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid0 num-devices=7 UUID=bed08171:06afc57d:9c8da9aa:858c4c7d

Y ahora solo queda sincronizar el contenido, en mi caso con un rsync que va a tardar al menos unas 6 horas en sincronizar mediante una gigalan directa entre servidores, pero puedes hacerlo como sea, como por ejemplo discos duros externos, y ya tu raid vuelve a funcionar tras el susto del fallo del disco.

Actualización: Aveces, si usamos en el fichero “/etc/mdadm/mdadm.conf” la linea “DEVICES partitions“, al reiniciar no funcionan correctamente los raid, y cuando se realiza un “mdadm –examine /dev/sdxx” nos encontramos que tienen un diferente UUID que no cuadra ni con el fichero “mdadm.conf“.

Para evitar esto, la única solución que he logrado, gracias a esta entrada de la web de Ubuntu-es, encontrar es eliminar la entrada de los “DEVICES” y poner en el fichero “mdadm.conf“:

# Obviamente pon los devices que use tu raid
ARRAY /dev/md0 level=raid0 num-devices=3 metadata=00.90 UUID=e1fbf1e6:da616113:e368bf24:bd0fce41 devices=/dev/sda2,/dev/sdb1,/dev/sdc1

Al añadir al final los “devices” los monta correctamente, y sin hacer cosas raras. Según leo, no es muy recomendable (no se porqué) pero hace que al menos en mis maquinas no falle.

Please follow and like us: