Debian RAID
En mi despacho en casa dispongo de un servidor Debian Linux que hace multitud de tareas. Desde conexión a internet con cortafuegos (iptables), servidor de ficheros (samba), backups (backuppc), gestión de la red (bind, dhcp), copias de seguridad entre servidores (rsync), descargas p2p (mldonkey) y muchas más cosas que seguro que me olvido ahora mismo.
Se trata de un simple PC, concretamente mi antiguo PC ahora que tengo mi flamante Athlon. Dispone de un disco duro de 160G pero que esta muy justo y ya lo he tenido que cambiar una vez porque petó (yperdí los datos tuve que recurrir a las copias de seguridad, que le vamos a hacer).
Por eso he optado por reinstalar el sistema con mayor capacidad y, sobre todo, fiabilidad. He comprado 3 discos duros de 300G y la idea es montarlo todo sobre RAID.
Antes de ponerme con el servidor, he pillado un PC que había por aquí y lo he utilizado para hacer pruebas (con los 3 discos intentar instalar un Debian).
Tras muchas búsquedas por internet parece que lo de poner un RAID para todas las partes del sistema, especialmente el arranque, no es fácil. Más aún ya que yo quiero RAID 5 para disponer de 600G efectivos de capacidad.
Bien, la configuración que me ha quedado finalmente es la siguiente:
Todos los discos con estas 3 particiones:
¿Cual es el problema de instalar y arrancar sobre RAID?
El problema está básicamente en que habitualmente el kernel carga los módulos de RAID (md, raid1, raid5) como eso... módulos. Por tanto, ha de leerlos de disco... círculo vicioso. Hay dos soluciones posibles: compilar un kernel con soporte incluido de RAID o crear un ramdisk con los módulos para que se pueda cargar.
Otro problema es que tanto la imagen del kernel como el ramdisk estan en /boot así que ... ¿como vamos a poner eso en RAID?
La respuesta es que en realidad no podemos... Sin embargo, tanto LILO como GRUB tienen soporte básico para RAID1 porque en realidad un RAID1 hace que todos los discos tengan lo mismo. De ahí que /boot sea un RAID1 y no un RAID5. Y sí, RAID1 no es exclusivo de 2 discos... puedes hacerlo sobre el número de discos que quieras.
Así que lanzando el Debian Installer simplemente hemos de particionar manualmente los discos con, según mi ejemplo, las tres particiones iguales en los tres discos. Luego, generamos los 3 dispositivos md y les asignamos los sistemas de ficheros correspondientes.
Con esto ya tenemos la redundancia que queríamos. Sin embargo, el gestor de arranque (en mi caso GRUB) sólo está instalado en el MBR del primer disco. Eso hace que si falla el primer disco, no podamos arrancar el sistema. Para solucionar esto nada más sencillo que marcar los otros MBR con el grub. Simplemente al arrancar el sistema normalmente entramos en el prompt de grub (ejecutando 'grub' como root) y ejecutamos los siguientes comandos:
Lo primero es comprobar el estado en /proc/mdstat o con la orden
mdadm -QD /dev/mdX
Y para añadir las particiones que nos falten:
mdadm --manage -a /dev/md2 /dev/hda3
¡Suerte con vuestros intentos!
Se trata de un simple PC, concretamente mi antiguo PC ahora que tengo mi flamante Athlon. Dispone de un disco duro de 160G pero que esta muy justo y ya lo he tenido que cambiar una vez porque petó (y
Por eso he optado por reinstalar el sistema con mayor capacidad y, sobre todo, fiabilidad. He comprado 3 discos duros de 300G y la idea es montarlo todo sobre RAID.
Antes de ponerme con el servidor, he pillado un PC que había por aquí y lo he utilizado para hacer pruebas (con los 3 discos intentar instalar un Debian).
Tras muchas búsquedas por internet parece que lo de poner un RAID para todas las partes del sistema, especialmente el arranque, no es fácil. Más aún ya que yo quiero RAID 5 para disponer de 600G efectivos de capacidad.
Bien, la configuración que me ha quedado finalmente es la siguiente:
Todos los discos con estas 3 particiones:
- 100M
- 500M
- resto (unos 298G)
- /dev/md0 en RAID1 con las tres particiones de 100M para /boot (100M)
- /dev/md1 en RAID5 con las tres particiones de 500M para swap (1G)
- /dev/md2 en RAID5 con las tres particiones de 298G para / (597G)
¿Cual es el problema de instalar y arrancar sobre RAID?
El problema está básicamente en que habitualmente el kernel carga los módulos de RAID (md, raid1, raid5) como eso... módulos. Por tanto, ha de leerlos de disco... círculo vicioso. Hay dos soluciones posibles: compilar un kernel con soporte incluido de RAID o crear un ramdisk con los módulos para que se pueda cargar.
Otro problema es que tanto la imagen del kernel como el ramdisk estan en /boot así que ... ¿como vamos a poner eso en RAID?
La respuesta es que en realidad no podemos... Sin embargo, tanto LILO como GRUB tienen soporte básico para RAID1 porque en realidad un RAID1 hace que todos los discos tengan lo mismo. De ahí que /boot sea un RAID1 y no un RAID5. Y sí, RAID1 no es exclusivo de 2 discos... puedes hacerlo sobre el número de discos que quieras.
Así que lanzando el Debian Installer simplemente hemos de particionar manualmente los discos con, según mi ejemplo, las tres particiones iguales en los tres discos. Luego, generamos los 3 dispositivos md y les asignamos los sistemas de ficheros correspondientes.
Con esto ya tenemos la redundancia que queríamos. Sin embargo, el gestor de arranque (en mi caso GRUB) sólo está instalado en el MBR del primer disco. Eso hace que si falla el primer disco, no podamos arrancar el sistema. Para solucionar esto nada más sencillo que marcar los otros MBR con el grub. Simplemente al arrancar el sistema normalmente entramos en el prompt de grub (ejecutando 'grub' como root) y ejecutamos los siguientes comandos:
- root (hd1,0)
- setup (hd1)
- root (hd2,0)
- setup (hd2)
- quit
Lo primero es comprobar el estado en /proc/mdstat o con la orden
mdadm -QD /dev/mdX
Y para añadir las particiones que nos falten:
mdadm --manage -a /dev/md2 /dev/hda3
¡Suerte con vuestros intentos!




12 Comentarios:
Muy interesante el post, llevo un tiempo pensando en crear algún sistema RAID para casa (malas experiencias con los hd's, que cada vez aguantan menos... ¬¬) y cuando tenga un hueco a ponerlo :D.
salu2.
Hola,
Para la swap no hace falta que crees un RAID. Para mi entender no tiene mucho sentido, ya que estas duplicando información temporal.
Y lo más importante si en el archivo fstab le añades las 3 particiones con la misma prioridad. El kernel ya se las apaña el solito para balancear la escitrura/lectura
Kampa,
Yo creo que si hace falta un RAID para el SWAP. Al menos uno que provea redundancia. Estoy de acuerdo que un RAID 0 no es necesario, para conseguir un efecto similar se puede hacer tal como tu dices (añadir con la misma prioridad).
Sin embargo, añadira el swap como RAID 5 lo veo muy útil. Si te peta un disco el swap ni se entera. De la otra manera el swap de la partición que esté en el disco corrupto fallará.
Eso puede provocar que el proceso que tenga información paginada sobre ese swap probablemente fallará, o quizás pueda provocar la inestabilidad general del sistema y colgarlo todo.
Así que un RAID 5 para swap me parece no sólo acertado sino necesario en un sistema que tenga RAID para el resto de sistemas de ficheros.
Por otro lado, ¿que pierdes?
Un apuntito, si yo tengo un raid1 con hardware(compuesto por 2 discos) como puedo hacer para que el grub si instale en los dos i asi si uno falla poder arrancar el sistema ?
Hay solucion ?am
Amigo, super bueno tu articulo, me ayudo mucho con el tema del boot, ya que no me funcionaba de ninguna manera, y ahora tengo la maquina corriendo, el asunto es que cuandod esconecto un disco, no logra partir,
No te ha sucedido eso?
saludos y un abarzo desde chile.
Manuel
Pues en referencia a como configurar el GRUB para que arranque aunque falle el disco primario, echad un vistazo a esta entrada: http://www.sargue.net/2006/08/y-fall-un-disco.html
He encontrado este enlace que nos puede aclarar algunas cosas:
http://bulma.net/body.phtml?nIdNoticia=1863
Espero que os sea útil.
He encontrado este enlace que nos puede aclarar algunas cosas:
http://bulma.net/body.phtml?nIdNoticia=1863
Espero que os sea útil.
Ese artículo está anticuado, habla de las 'raidtools' cuando el mecanismo actual es el mdadm mucho más evolucionado.
Se supone que el Swap deberia tener la mayor velocidad posible ya que "reemplaza" a memoria ponerlo es RAID 5 (y encima por software) la peor de las combinaciones.
Un raid es para dar disponibilidad a los datos, NO a los servicios o Servidores. Saludos
Claro, mucho mejor poner la partición de swap directamente en uno de los discos sin pasar por RAID. Así, cuando ese disco falle el sistema leerá datos corruptos del swap (que recordemos son programas además de datos) y con suerte sólo se colgará toda la máquina.
Por supuesto como tu dices sólo nos interesa la velocidad, es por eso que los servidores habituales de producción jamás montan RAID 1, sino que tienen todos discos SCSI de 15k rpm montados en RAID 0... y a volar!
Excelente articulo, simplemente lo mejor de lo mejor en lo que al tema RAID se refiere, ya que en google es bien dificil conseguir esta información.Muchas Gracias!!!
Publicar un comentario en la entrada
<< Inicio