jueves, 2 de octubre de 2008

Ampliando un raid 1 en linux

   Resulta que el raid 1 que monté en mi servidor de backup estaba al 96% de sus escasos 60GB. De hecho, la última vez que lancé el backup se me llenó y tuve que estar borrando archivos y arreglando el estropicio a mano.
shian:~# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/md0 56G 50G 2,6G 96% /mnt/raid

   Así, me decidí por un par de discos de 320GB y el pasado fin de semana estuve haciendo el cambio. El proceso es muy sencillo y no tiene ningún truco ni paso especial que haya que realizar. Como ya he puesto varios tutoriales sobre el raid 1, lo único que voy a comentar son los pasos que seguí por si alguien necesita ampliar el suyo pero sin mucho detalle. Para información adicional os remito al artículo original del raid 1 en linux.
  • Conectar los discos y particionarlos.
    shian:~# fdisk -l

    Disk /dev/hdf: 320.0 GB, 320072933376 bytes
    255 heads, 63 sectors/track, 38913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/hdf doesn't contain a valid partition table

    Disk /dev/hdh: 320.0 GB, 320072933376 bytes
    255 heads, 63 sectors/track, 38913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/hdh doesn't contain a valid partition table
  • Crear el nuevo dispositivo del raid. Como el raid anterior era /dev/md0, este nuevo será /dev/md1. Armarse de paciencia mientras dura la creación del raid. En mi caso fueron más de 2 horas.
    shian:~# mdadm --create /dev/md1 --verbose --level=1 --raid-devices=2 /dev/hdf1 /dev/hdh1
    mdadm: size set to 312568576K
    mdadm: array /dev/md1 started.

    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    md1 : active raid1 hdh1[1] hdf1[0]
    312568576 blocks [2/2] [UU]
    [>....................] resync = 0.0% (182272/312568576) finish=142.7min speed=36454K/sec
  • Formatear el raid y montarlo en un nuevo directorio. Fijaos en el tamaño disponible para datos. De los 294GB teóricos, sólo 279GB están disponibles, el resto están reservados para los metadatos e información necesaria del raid 1.
    shian:~# mkfs.ext3 /dev/md1

    shian:~# mkdir /mnt/raid_new
    shian:~# mount /dev/md1 /mnt/raid_new/

    shian:~# df -h
    S.ficheros Tamaño Usado Disp Uso% Montado en
    /dev/md0 56G 50G 2,6G 96% /mnt/raid
    /dev/md1 294G 191M 279G 1% /mnt/raid_new
  • Copiar todos los datos del antiguo raid al nuevo. Es necesario asegurarse de que no hay ningún proceso en ejecución que pueda modificar los datos mientras los copiamos. En casa es sencillo, pero en entornos con más usuarios habría que denegar las conexiones entrantes o restringirlas de alguna forma.
    shian:~# cp -a /mnt/raid /mnt/raid_new

    shian:~# df -h
    S.ficheros Tamaño Usado Disp Uso% Montado en
    /dev/md0 56G 50G 2,6G 96% /mnt/raid
    /dev/md1 294G 50G 230G 17% /mnt/raid_new
  • Como paso final, es necesario actualizar los archivos /etc/fstab y /etc/mdadm/mdadm.conf con la información del nuevo raid y eliminar las entradas correspondientes al antiguo.

  •    Una vez hecho lo anterior podemos apagar la máquina, desconectar los discos duros antiguos y arrancar de nuevo. Si todo ha ido bien, el sistema debería arrancar sin mostrar ningún error y en el mismo punto de montaje deberíamos tener disponible el nuevo raid. Ahora ya sólo nos queda empezar a llenar de nuevo el raid y dentro de dos o tres años repetir el tutorial pero esta vez con discos duros de un par de teras... ;-).

    4 comentarios:

    Mauri dijo...

    Me encantan todos tus artículos y los veo muy interesantes, lo primero felicitarte por tu blog.

    También quería preguntarte una cosilla, hace tiempo que quiero montarme un raid en casa que aun estoy decidiendo si montar un RAID0 con un buen backup por la velocidad o un RAID1 pero ... ¿por qué tu RAID es lógico en vez de usar uno físico que ahora todas las placas o casi todas llevan incluida controladora de RAID?

    Iván dijo...

    Hola Mauri,

    me alegro de que te parezca interesante el blog y los temas que trato. Gracias!.

    Respecto a tu preguntas:
    - Como bien dices, con Raid0 ganas velocidad pero necesitas un backup actualizado muy frecuentemente porque si se te estropea un disco lo pierdes todo. Con el Raid1 ganas seguridad a costa de un rendimiento similar al que tendrías con un único disco.
    - Utilizo un raid por software en lugar de uno por hardware (la placa base de mi servidor lo permite aunque sea algo antigua) porque tengo mucho más control sobre él. Además, en el caso de que se me estropeara la placa base, seguramente necesitaría otra exáctamente igual para poder utlizar mis discos. En mi caso, podría conectar esos discos duros a cualquier ordenador con linux y funcionarían sin problemas.
    Además, los raid "hardware" de la mayoría de las placas base no son hardware 100%, sino que también son parte software y necesitas drivers. En este artículo está todo muy bien explicado.

    Saludos, Iván.

    FErArg dijo...

    Hola, el título no es correcto, ya que no amplias un RAID, sino que agregas discos nuevos y creas un RAID nuevo.

    Iván dijo...

    Hola FErArg,

    tienes razón, lo que hago es crear uno nuevo, copiar los datos y quitar el antiguo. Para ampliarlo tendría que haber usado LVM como ya comenté en su momento.

    Saludos, Iván.

    Publicar un comentario