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!
17 comentarios: