View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Actualizar a RAID en un PC linux

Actualizar a RAID en un PC linux


Las siguientes instrucciones han sido probadas en seraphim (que es un Debian GNU/Linux 3.0 "woody").

El RAID es un sistema para utilizar varios discos duros en paralelo. Aquí se explica cómo instalr software RAID-1, que es para que la información que se guarda esté duplicada en dos discos duros, de manera que si falla uno, siga funcionando, y cuando se pueda, reponer el que ha fallado y reconstruirlo automáticamente.

En caso de que falle un disco, ver Sustituir un disco RAID roto (cuando el otro todavia funciona)
Acciones a realizar en caso de que un disco falle: (sin probar)
  1. Reponer el disco duro roto (se mira cuál es con un "cat /proc/mdstat"), poniendo el que sobrevivió como hda (¿seguro? He dicho que así para que el ordenador arranque, pero no sé si lo haría; hay que hacer una prueba...).
  2. hacer una copia de las tablas de partición del que sobrevivió según el punto 3 y luego
  3. añadir dichas particiones usando
    # mdadm --zero-superblock /dev/part-rota
    # mdadm --add /dev/md-a-usar /dev/part-rota
    # watch "cat /proc/mdstat"
  4. habría que ejecutar "lilo" para que ponga el sector de arranque en el nuevo disco.
Más información aquí


La información proviene fundamentalmente de este how-to

Suposiciones:
ElementoConfiguración
/dev/hdaAntiguo disco
/dev/hdcDisco virgen
/dev/hda1partición arranque (/boot), ext2
/dev/hda6partición raíz (/), xfs

Tabla de contenidos




1. Preparación hardware


Hay que meter un segundo HDD en el ordenador, del mismo tipo y tamaño.

Si el ordenador sólo va a tener de dispositivos IDE los discos duros, la manera de ponerlos que da mayor rendimiento es cada uno en una controladora distinta, ambos como maestros.

En el caso de seraphim, se han puesto los dos en la misma controladora ya que hay una grabadora IDE instalada, y mi esperiencia me dice que es mejor porner los discos duros en controladoras diferentes de los lectores de CD-ROMs y similares (ya que con algunas combinaciones de marcas de HDD y de lectores de CD-ROMs, los dispositivos se pegan y obtienes cuelgues sin razón aparente; mejor no arriesgarse y tener algo menos de velocidad pero con una máquina estable).


2. Instalar un núcleo que soporte RAID y las utilidades correspondientes


  1. Primero instalas un núcleo moderno que soporte raid (se ve con un "cat /proc/mdstat", pero cuidado, porque el 2.4.18-bf2.4-xfs lo tiene roto; aconsejo instalar éste (un 2.4.25 compilado para i386): linux-kernel-image2.tar.bz2)

  2. Luego instalas el mdadm [administrador de raid] (NOTA: es más moderno y cómodo de usar que las antguas raidtools).

    # apt-get install mdadm



3. Particionado del segundo HDD


Atención. Esta parte es peligrosa (bueno, realmente todas lo son a partir de aquí); asegúrate de que tienes hecho un backup de los datos, no sea que algo vaya mal...

Copias las particiones de un disco a otro y las configuras:

  1. Copias las particiones al nuevo disco duro

    # sfdisk -d /dev/hda | sfdisk /dev/hdc

  2. Con el cfdisk, cambias el tipo de las particiones ("FS Type" según cfdisk) que vas a tener en RAID a FD ("linux raid autodetect", es decir, software raid)

    # cfdisk /dev/hdc

  3. En el cfdisk salvas y sales

  4. REBOOT del ordenador (para evitar problemas es recomendable hacerlo siempre que modificas tablas de partición)

    # shutdown -r now



4. Creación de los volúmenes RAID


A continuación vamos a generar un volúmen raid-1 con dos elementos, diciendo que el primero está missing (será el de las particiones de /dev/hda) y el segundo es el recién particionado hdc. Más adelante ya añadiremos las de /dev/hda.

Se hace a nivel de particiones, por lo que ejecutamos un "mdadm --create" para cada partición.

 # mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/hdc1
 # mdadm --create /dev/md6 --level=1 --raid-disks=2 missing /dev/hdc6

Los números del dispositivo md no tienen por qué coincidir con los de las particiones de los discos, pero causa menos confusión si se hace así, usando el mismo número que el de la partición sobre la que se hace el raid.

Nota: si eso no funciona, hay que resetear el superblock, con un "madm --zero-superblock /dev/hdc1"

5. Formatear las particiones del disco duro virgen


Ahora que ya tenemos las particiones metidas en el RAID, formateamos las particiones usando los dispositivos del RAID:

 # mkfs.ext2 /dev/md1
 # mkfs.xfs /dev/md6


6. Montado temporal de las nuevas particiones


Para montar las particiones que hemos metido en el raid, hacemos unos directorios en el raiz y las montamos ahí. Cuidado con equivocarse; lo hay que usar son los dispositivos raid /dev/mdX que acabamos de formatear:

 # cd /
 # mkdir /raid /raid/md1 /raid/md6
 # mount -t ext2 /dev/md1 /raid/md1
 # mount -t xfs /dev/md6 /raid/md6

7. Copia de datos


Copiamos los datos a las nuevas particiones

 # cd /boot
 # cp -ax . /raid/md1
 # cd /
 # cp -ax / /raid/md6

NOTA: Si hacemos modificaciones en el /dev/hdaX, podemos volver a copiar pero con un "cp -aux / /raid/md6" (por ejemplo), que sólo copia los ficheros que hayan cambiado y tardará menos...


8. Primer cambio del fstab


Antes de continuar, vamos a comprobar que el driver software raid es capaz de montar las particiones en el arranque (es decir, que funciona bien). En este paso me falló el raid usando el kernel 2.4.18-bf2.4-xfs, y por eso cambié al 2.4.25, que funcionó perfectamente ;-).

En /dev/hda editamos el /etc/fstab, añadiendo las líneas
 /dev/md1        /raid/md1        ext2        defaults        0       0
 /dev/md6        /raid/md6        xfs        defaults        0       0

Salvamos, salimos y hacemos un REBOOT:

 # shutdown -r now

Una vez que arranque, comprueba con un "mount" que ha montado las particiones en /raid


9. Primer cambio del lilo y segundo cambio de fstab


Vamos a comprobar que es capaz de arrancar usando la nueva partición. Realmente este paso no lo hice bien, ya que no usé lo de "hacer un sólo arranque en el lilo con esta configuración", sino lo puse directamente (al fin y al cabo, si falla, siempre puedo arrancar desde disquette, que para eso me he tenido que molestar en hacer un kernel menor que 1440kB ;-). NOTA: El disquette está en mi puesto el cajón de abajo al fondo, con el nombre "Linux 2.4.25 (kernel) con raid support".

Monta en /boot la partición de arranque de RAID:
 # umount /raid/md1
 # mount -t ext2 /dev/md1 /boot

Edita en /dev/hda el /etc/lilo.conf:
 boot=/dev/hda
 image=/vmlinuz
    label=RAID
    read-only
    root=/dev/md6


Y compruebas el lilo.conf con:
 # lilo -tv

NOTA: No lo he probado, pero para hacerlo "de forma cautelosa", puedes hacer que los cambios sean para un sólo arranque usando "lilo -v -r" o un "lilo -v -R RAID" (no me ha quedado muy claro cuál de los dos habría que usar, parece que el primero). En mi caso, simplemente he hecho (cuidado, que si falla, necesitarás acceso físico a la máquina para arrancar desde disquette):
 # lilo

Por último modifica en /dev/md6 el /etc/fstab para que monte como raíz y boot las particiones del RAID:
 /dev/md1        /boot        ext2        defaults        0       0
 /dev/md6        /        xfs        defaults        0       0
 #/dev/hda1        /boot        ext2        defaults        0       0
 #/dev/hda6        /        xfs        defaults        0       0


Copiamos el lilolconf que hemos usado a la partición de RAID, y hacemos un REBOOT del ordenador (cruzando los dedos...):
 # cp /etc/lilo.conf /raid/md6/etc
 # umount /boot
 # shutdown -r now

Y ahora tienes que esperar que arranque ;-). Si no arranca es que algo ha ido mal O:-).

Compruebas con un "mount" que realmente están montados "/dev/md1 en /boot" y "/dev/md6 en /".


10. Preparar hda y meterlo en el RAID


Ahora que parece que todo funciona en las particiones que hay en el RAID, es el momento de meter el antiguo disco duro en el RAID.

NOTA: si todavía tienes cosas que copiar de /dev/hdaX al RAID, esta es tu última oportunidad para montar las particiones de /dev/hdaX y copiar esas cosas al RAID (recuerda que para actualizar la copia, puedes usar un "cp -aux origen destino", pero cuidado de no sobreescribir el nuevo fstab...).

Primero cambiamos el tipo de las particiones para que sean del tipo de "software raid":

  1. Con el cfdisk, cambias en el /dev/hda el tipo (Type) de las particiones que vas a tener en RAID a FD ("software raid")

    # cfdisk /dev/hda

  2. En el cfdisk salvas y sales


NOTA: Si en el fdist/cfdisk, al dar a la opción "write", sale un error diciendo que necesita reiniciar para releer las particiones, entonces reinicia antes del siguiente paso haciendo un "shutdown -r now".

Añades las particiones del primer disco al volumen RAID:
 # mdadm --add /dev/md1 /dev/hda1
 # mdadm --add /dev/md6 /dev/hda6

Ahora miras que realmente está haciendo el hotadd del hda y esperas a que termine, con un:
 # watch "cat /proc/mdstat"

Una vez que ha terminado, sales con un control+c del watch.


11. Segundo cambio de lilo


Ahora vamos a cambiar en el lilo el arranque para que use el RAID. Eso lo descimos poniendo el boot en una partición del raid (en este caso, en el /boot) y usando la sentencia raid-extra-boot para pedirle que haga copias de dicho sector de arranque en el MBR de ambos discos duros.

Edita el lilo.conf:
 boot=/dev/md1
 raid-extra-boot=/dev/hda,/dev/hdc
 image=/vmlinuz
    label=RAID
    read-only
    root=/dev/md6


Y ahora volverías hacer lo del "lilo -tv" para probar que el lilo está bien editado luego volver a instalar el lilo (si quieres una primera vez tempralmente con un "lilo -r" y al rearrancar hacerlo normal, o directamente hacerlo normal, con los riesgos que eso conlleva (que no son muchos tienes acceso al equipo):
 # lilo

Y ahora otra vez rearrancar para comprobar que todo está bien:
 # shutdown -r now

Si el ordenador arranca correctamente (y en el mount no hay nada raro), es que ya tienes RAID :-)

12. Notas finales


El proceso seguido es bastante seguro, sobre todo si los rearranques del lilo los haces con las opciones de "-r" o "-R nombreimagen" (NOTA: ten en cuenta que yo no he usado tales opciones, o sea que no sé su alcance real).

Además se puede aprovechar que se copian todos los datos para cambiar de sistema de archivos las particiones. Unos consejos:
Sistema de archivosNotas
xfs Úsalo si vas a escribir en la partición archivos muy grandes o vas a usarla como fuente para grabar CDs
ext3Úsalo si requieres tener un journaling con data=ordered, que es menos eficiente pero te asegura que no se perderán datos, al contrario que el journaling normal que sólo te asegura la integridad del disco

Y esto es todo. Que disfrutes de tu nuevo sistema con RAID-1 (software raid-1; mirroring) ;-)

Attachs:

linux-kernel-image2.tar.bz2