sábado 17 de marzo de 2007

Raid 1 en Linux

   Siguiendo el artículo anterior del servidor NAS para casa, aquí cuento todo lo que hice para configurar y probar el raid 1 en debian y las conclusiones finales a las que llegué. Este pequeño tutorial lo he hecho en una máquina virtual VMware por lo cómodo que es probar e instalar todo. El disco de sistema es hda con una única partición y los discos con los que se creará el raid 1 serán hdb y hdc. Muestro en rojo lo que he introducido en los diferentes menús.
  • Particionar los dos discos duros. El sistema de archivos debe ser Linux raid auto.
    shian:~# fdisk /dev/hdb
    Command (m for help): p

    Disk /dev/hdb: 1073 MB, 1073741824 bytes
    16 heads, 63 sectors/track, 2080 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes

    Device Boot Start End Blocks Id System

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-2080, default 1):INTRO
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-2080, default 2080):INTRO
    Using default value 2080

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    Changed system type of partition 1 to fd (Linux raid autodetect)

    Command (m for help): p

    Disk /dev/hdb: 1073 MB, 1073741824 bytes
    16 heads, 63 sectors/track, 2080 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes

    Device Boot Start End Blocks Id System
    /dev/hdb1 1 2080 1048288+ fd Linux raid autodetect

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.
  • Repetimos los pasos para /dev/hdc.
  • Creamos el raid 1 con las dos particiones que acabamos de crear. En las opciones indicamos que el tipo de raid será 1 (mirror), que deseamos utilizar dos discos y que el nuevo dispositivo raid será /dev/md0.
    shian:~# mdadm --create /dev/md0 --verbose --level=1 --raid-devices=2 /dev/hdb1 /dev/hdc1
    mdadm: size set to 1048192K
    mdadm: array /dev/md0 started.

    NOTA: Si ya hemos usado el disco anteriormente para otro raid, es necesario reiniciar el superbloque para que se borre la información existente, puesto que sino, la creación puede fallar:
    shian:~# mdadm --zero-superblock /dev/sdXX
  • El raid 1 se está creando en segundo plano. En función del tamaño de los discos tardará más o menos. Se puede ver el estado en el archivo /proc/mdstat:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus1/target0/lun0/part1[1] ide/host0/bus0/target1/lun0/part1[0]
    1048192 blocks [2/2] [UU]
    [===========>.........] resync = 58.2% (611196/1048192) finish=0.0min speed=101866K/sec
    unused devices: <none>
  • El porcentaje va subiendo hasta que finalmente el dispositivo está listo:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus1/target0/lun0/part1[1] ide/host0/bus0/target1/lun0/part1[0]
    1048192 blocks [2/2] [UU]

    unused devices: <none>
  • A partir de este momento para cualquier manipulación que deseemos hacer del raid debemos utilizar /dev/md0 y no /dev/hdb1 ni /dev/hdc1.
  • Formateamos el raid
    shian:~# mkfs.ext3 /dev/md0
    mke2fs 1.37 (21-Mar-2005)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131072 inodes, 262048 blocks
    13102 blocks (5.00%) reserved for the super user
    First data block=0
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376

    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 22 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.
  • Creamos el punto de montaje, añadimos la entrada correspondiente para que el raid se monte cuando se arranca la máquina y lo montamos:
    shian:~# mkdir /mnt/raid

    shian:~# echo "/dev/md0 /mnt/raid ext3 defaults 0 1" >> /etc/fstab

    shian:~# mount /mnt/raid

    shian:~# df -h /dev/md0
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 1008M 17M 941M 2% /mnt/raid
  • Aquí ya habríamos terminado la instalación del raid y podríamos utilizarlo, aunque tal y como está configurado y montado sólo tendría permisos el usuario root.

  •    A partir de aquí, lo que yo hice inicialmente fue simular que un disco duro se estropeaba y al arrancar la máquina quería montar el raid sólo con el otro disco y utilizarlo normalmente. Además, después de simular con la máquina virtual que añadía un nuevo disco duro, quería añadirlo al raid para volver a tener de nuevo la redundancia. Después de leer muchos tutoriales y foros no había manera de que funcionase. Si reiniciaba la máquina sin un disco del raid, éste no se montaba y no podía acceder a los datos. Además, el dispositivo /dev/md0 no era reconocido, por lo que era como si el raid no existiese!. Finalmente, encontré en un pequeño tutorial la solución a mis problemas.

  • Es necesario indicarle al sistema operativo cómo acceder a ese dispositivo raid para que sea capaz de utilizarlo. Esto que puede parecer tan obvio no venía en ningún tutorial ni en ninguna ayuda de las que consulté.
    shian:/# cd /etc/mdadm
    shian:/etc/mdadm# cp mdadm.conf mdadm.conf.`date +%y%m%d`
    shian:/etc/mdadm# echo "DEVICE partitions" > mdadm.conf
    shian:/etc/mdadm# mdadm --detail --scan >> mdadm.conf
    shian:/etc/mdadm#
    shian:/etc/mdadm# cat mdadm.conf
    DEVICE partitions
    ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a48e6816:ea6e7f37:6cc50cdb:6fead399
    devices=/dev/hdb1,/dev/hdc1
  • Ahora ya podemos reiniciar la máquina y el raid arrancará y se montará automáticamente en el arranque.
  • Podemos probar a parar el dispositivo y a levantarlo de nuevo:
    shian:/etc/mdadm# umount /mnt/raid
    shian:/etc/mdadm# mdadm --stop /dev/md0
    shian:/etc/mdadm# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    unused devices: <none>

    shian:/etc/mdadm# mdadm --assemble /dev/md0 /dev/hdb1 /dev/hdc1
    mdadm: /dev/md0 has been started with 2 drives.
    shian:/etc/mdadm# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus0/target1/lun0/part1[0] ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/2] [UU]

    unused devices: <none>

  •    Ahora sí, vamos a probar si realmente el podemos recuperar la información y el sistema funciona correctamente en caso de caída de un dispositivo. Además, veremos cómo reemplazar el disco defectuoso y recuperar de nuevo el raid 1 con los dos discos.
  • Creamos un archivo aleatorio de 25MB en el raid montando previamente de nuevo el raid:
    shian:/# mount /dev/md0 /mnt/raid
    shian:/# dd if=/dev/urandom of=/mnt/raid/random1 count=51200
    51200+0 records in
    51200+0 records out
    26214400 bytes transferred in 7.829523 seconds (3348148 bytes/sec)
  • Calculamos su CRC y lo apuntamos. Posteriormente nos servirá para comprobar que todo es correcto:
    shian:/# cksum /mnt/raid/random1
    1652310020 26214400 /mnt/raid/random1
  • Vamos a simular un fallo en uno de los dispositivos. Para ello apagamos el sistema, desconectamos uno de los discos duros (en este caso /dev/hdb) y arrancamos de nuevo.
  • Una vez arrancado de nuevo el sistema, si examinamos con detalle los mensajes de arranque encontraremos algo como lo siguiente. Como se puede ver el sistema ha detectado un disco falla y al no haber un disco de repuesto (spare) levanta el raid en modo degradado con un sólo disco. Podremos seguir utilizando el raid con total normalidad pero si este disco también fallase, perderíamos irremediablemente todos los datos.
    md: bind
    md: ide/host0/bus1/target0/lun0/part1's event counter: 00000006
    md0: former device hdb1 is unavailable, removing from array!
    md: raid1 personality registered as nr 3
    md0: max total readahead window set to 124k
    md0: 1 data-disks, max readahead per data-disk: 124k
    raid1: device ide/host0/bus1/target0/lun0/part1 operational as mirror 1
    raid1: md0, not all disks are operational -- trying to recover array
    raid1: raid set md0 active with 1 out of 2 mirrors
    md: updating md0 RAID superblock on device
    md: ide/host0/bus1/target0/lun0/part1 [events: 00000007]<6>(write) ide/host0/bus1/target0/lun0/part1's sb offset: 1048192
    md: recovery thread got woken up ...
    md0: no spare disk to reconstruct array! -- continuing in degraded mode
    md: recovery thread finished ...
  • En el archivo /proc/mdstat podemos ver el estado del raid. Ahora mismo se encuentra funcionando sólo con un dispositivo de dos posibles y nos indica que el que ha fallado es el primero de ellos:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/1] [_U]

    unused devices: <none>
  • No obstante el raid está montado y el filesystem es accesible:
    shian:~# df -h /dev/md0
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 1008M 42M 916M 5% /mnt/raid
  • Ahora marcamos el disco /dev/hdb1 como fallo para proceder a cambiarlo:
    shian:~# mdadm --manage /dev/md0 --fail /dev/hdb1
    mdadm: set /dev/hdb1 faulty in /dev/md0

  •    Apagamos la máquina y cambiamos el disco duro defectuoso por uno nuevo. En el caso de VMware basta con crear un nuevo dispositivo de tipo disco duro. Además, este disco duro nuevo que añadimos va a ser de mayor tamaño que el anterior. Idealmente en un raid 1 los dos discos duros deben tener el mismo tamaño, pero linux nos proporciona la suficiente flexibilidad para que esto no sea así.

  • En el arranque de la máquina vemos que el raid sigue arrancando pero en modo degradado. Lo que vamos a hacer es crear la tabla de particiones del nuevo disco duro exáctamente igual que la del disco duro que aún funciona y que forma parte del raid:
    shian:~# sfdisk -d /dev/hdc | sfdisk /dev/hdb
    Checking that no-one is using this disk right now ...
    OK

    Disk /dev/hdb: 4161 cylinders, 16 heads, 63 sectors/track

    sfdisk: ERROR: sector 0 does not have an msdos signature
    /dev/hdb: unrecognized partition table type
    Old situation:
    No partitions found
    New situation:
    Units = sectors of 512 bytes, counting from 0

    Device Boot Start End #sectors Id System
    /dev/hdb1 63 2096639 2096577 fd Linux raid autodetect
    /dev/hdb2 0 - 0 0 Empty
    /dev/hdb3 0 - 0 0 Empty
    /dev/hdb4 0 - 0 0 Empty
    Warning: no primary partition is marked bootable (active)
    This does not matter for LILO, but the DOS MBR will not boot this disk.
    Successfully wrote the new partition table

    Re-reading the partition table ...

    If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
    to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
    (See fdisk(8).)
  • Como este nuevo disco duro es mayor que el anterior, podemos crear una partición /dev/hdb2 y formatearla para utilizarla sin problemas.
    shian:~# fdisk /dev/hdb

    The number of cylinders for this disk is set to 4161.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (2081-4161, default 2081):INTRO
    Using default value 2081
    Last cylinder or +size or +sizeM or +sizeK (2081-4161, default 4161):INTRO
    Using default value 4161

    Command (m for help): p

    Disk /dev/hdb: 2147 MB, 2147483648 bytes
    16 heads, 63 sectors/track, 4161 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes

    Device Boot Start End Blocks Id System
    /dev/hdb1 1 2080 1048288+ fd Linux raid autodetect
    /dev/hdb2 2081 4161 1048824 83 Linux

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

    shian:~# mkfs.ext3 /dev/hdb2
    mke2fs 1.37 (21-Mar-2005)
    warning: 62 blocks unused.

    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131328 inodes, 262144 blocks
    13110 blocks (5.00%) reserved for the super user
    First data block=0
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16416 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376

    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 30 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.

    shian:~# mkdir /mnt/tmp

    shian:~# mount /dev/hdb2 /mnt/tmp
  • Ahora vamos a reconstruir el raid:
    shian:~# mdadm --manage /dev/md0 --add /dev/hdb1
    mdadm: hot added /dev/hdb1
  • En este instante el raid 1 se está reconstruyendo. Toda la información del disco existente (/dev/hdc1) se está escribiendo en el nuevo disco (/dev/hdb1) para reconstruir el mirror y tener de nuevo la redundancia. Podemos comprobar el estado en el archivo /proc/mdstat:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus0/target1/lun0/part1[2] ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/1] [_U]
    [=======>.............] recovery = 39.5% (415488/1048192) finish=0.1min speed=69248K/sec
    unused devices: <none>
  • Finalmente, después de un tiempo tenemos el raid recuperado:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus0/target1/lun0/part1[0] ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/2] [UU]

    unused devices: <none>
  • Si no nos fiamos de que todo esté correcto (yo tengo que verlo para creerlo), podemos hacer lo siguiente para comprobar que la recuperación se ha realizado satisfactoriamente. Lo que vamos a hacer es desmontar el raid, montar únicamente el nuevo dispositivo /dev/hdb1 y comprobar el CRC del archivo que generamos anteriormente para comprobar que la recuperación ha sido correcta.
    shian:~# umount /mnt/raid
    shian:~# mount /dev/hdb1 /mnt/raid
    shian:~# cksum /mnt/raid/random1
    1652310020 26214400 /mnt/raid/random1
  • Y listo!. El raid se ha recuperado correctamente y toda nuestra información está a salvo. Es importante dejarlo todo como estaba antes de utilizarlo puesto que ahora mismo en /mnt/raid se encuentra montado de manera temporal sólo un dispositivo del raid y no éste completo. Si ahora hiciéramos algún cambio, creásemos archivos,... perderíamos todos esos datos en cuanto montásemos de nuevo el raid. Mejor lo dejamos todo como estaba:
    shian:~# umount /mnt/raid/
    shian:~# mount /mnt/raid/
    shian:~# df -h /mnt/raid/
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 1008M 42M 916M 5% /mnt/raid
  • Si ahora reiniciamos la máquina vemos que el raid arranca correctamente con los dos discos de nuevo:
    md: ide/host0/bus0/target1/lun0/part1's event counter: 0000000c
    md: ide/host0/bus1/target0/lun0/part1's event counter: 0000000c
    md: raid1 personality registered as nr 3
    md0: max total readahead window set to 124k
    md0: 1 data-disks, max readahead per data-disk: 124k
    raid1: device ide/host0/bus0/target1/lun0/part1 operational as mirror 0
    raid1: device ide/host0/bus1/target0/lun0/part1 operational as mirror 1
    raid1: raid set md0 active with 2 out of 2 mirrors
    md: updating md0 RAID superblock on device
    md: ide/host0/bus0/target1/lun0/part1 [events: 0000000d]<6>(write) ide/host0/bus0/target1/lun0/part1's sb offset: 1048192
    md: ide/host0/bus1/target0/lun0/part1 [events: 0000000d]<6>(write) ide/host0/bus1/target0/lun0/part1's sb offset: 1048192

  •    Hemos visto una manera bastante sencilla y fiable de tener nuestros datos importantes a buen recaudo. No obstante este sistema raid no sirve de nada sin una buena política de backups, puesto que no protege del borrado accidental de archivos.

       Después de haber probado FreeNAS y el Raid en Debian puedo sacar en claro lo siguiente:
  • FreeNAS es mucho más sencillo y fácil de configurar, pero no ofrece toda la flexibilidad que linux. Por ejemplo, con FreeNAS no es posible crear un raid con dos discos de distinto tamaño y aprovechar el espacio restante. En linux eso no supone ningún problema. Simplemente hay que tener claro que los datos de esa nueva partición no tendrán respaldo, por lo que no se debe utilizar para almacenar información importante.
  • FreeNAS todavía es una versión beta y aunque parece muy robusta y hay mucha gente que la está utilizando (sólo hay que echar un vistazo a sus foros), los desarrolladores indican que no se debería utilizar en entornos de producción. Por contra, el raid por software en linux se lleva utilizando desde hace bastante tiempo.
  • Si tengo algún problema con FreeNAS será más complicado encontrar soporte. Sólo tendría el foro para preguntar. Si tengo un problema con linux tengo a mano a Alex que seguro está encantado de echarme una mano ;-)
  • Al utilizar un sistema linux "estandar" podemos montar un apache, scripts de monitorización del raid, avisos por correo electrónico,... cualquier cosa que se nos ocurra. Con FreeNAS esto sería muy complicado de hacer.

  •    Ahora ya sólo me queda cambiar mi actual Duron 1200Mhz (algo que voy a hacer en las próximas semanas) puesto que ya está algo viejo y cada vez lo noto más lento y utilizarlo como servidor NAS-Debian en casa.

       El siguiente capítulo será la configuración de Samba para compartir los nuevos dispositivos creados con una máquina windows así como la gestión de los distintos permisos de usuario.

       

    51 comments:

    Gura dijo...

    Como dije en /., deberías probar Openfiler.

    Mojito dijo...

    Hola!

    el howto está muy bien, pero quería preguntarte si tienes idea de como hacer RAID1 del disco de sistema, y que si se peta hda, al reiniciar arranque automáticamente de hdb, esto es, que dos discos duros de igual tamaño sean una imagen exacta uno del otro, y que si uno falla, el sistema arranque desde el otro.

    Gracias, un saludo :-)

    Iván dijo...

    Hola.
    Me apunto lo de Openfiler para hacer alguna prueba. Ya contaré qué tal va.

    Sobre el raid1 del disco de sistema, hay bastantes turoriales sobre cómo hacerlo. No es complicado y cuando estaba preparando este howto lei alguno por encima. Busca un poco que seguro que encuentras alguno muy sencillo.

    Saludos, Iván.

    Anónimo dijo...

    El RAID por software de linux solo trabaja sobre particiones y no sobre discos completos, asi que cuando se instala el cargador del kernel (grub o lilo) hay que hacerlo en los N discos que se vayan a usar en el arreglo de manera que cuando falte el disco que tiene el cargador, cualquiera de los demas tome su lugar.
    Con grub es una tarea trivial segun pude comprobar.

    Manolo dijo...

    Curradísimo el manual. No solo es crear el raid, sino administrarlo, probarlo, gestionar fallos...todo muy clarito y 100% útil, incluso los comandos por sí solos (algunos no los conocía ;)).

    ¡Gracias!

    Iván dijo...

    Hola Manolo,

    gracias por los comentarios. Me alegro de que te haya gustado el tutorial.

    Saludos, Iván.

    Anónimo dijo...

    Excelente y clarísimo. Muchas gracias por el tutorial y la información. Me lo guardo como un 'must have'.

    Iván dijo...

    Muchas gracias por los comentarios. De verdad que se agradece mucho el feedback después de publicar un artículo.

    Saludos, Iván.

    Arturo dijo...

    Sólo quería, como ya han hecho algunos, felicitarte por este howto y agradecerte que te lo hayas currado de esa manera. Me ha resultado muy útil ya que tenía un raid montado y recientemente se me ha ido un disco del raid y, entre el poco tiempo que tengo y que no hay demasiada información al respecto me estaba volviendo loco. Además aprovecho los 120gb de sobra XD


    De nuevo gracias.
    Arturo.

    Iván dijo...

    Gracias por el comentario Arturo, de verdad. Además me alegro de que te haya sido útil y hayas podido recuperar el raid y además aprovechar el espacio de sobra. Como ya han comentado por aquí, linux trata los raids a nivel de partición, por lo que se pueden hacer todo tipo de combinaciones.

    Saludos, Iván.

    Anónimo dijo...

    Hola, gracias por el howto. Quería comentar porque me pareció un poco injusta tu comparación de FreeNAS con el RAID en Linux ya que al utilizar Debian estás utilizando una distribución completa y FreeNAS es una versión muuuy reducida de FreeBSD. Lo más correcto debería ser comparar "FreeBSD y Debian como NAS" o "FreeNAS y 'Inserte nombre de proyecto similar para Linux'"

    Iván dijo...

    Hola,

    tienes razón, eso ya lo ha comentado alguien (no sé si aquí o en barrapunto). Lo que ocurre es que de linux sé más que de FreeBSD y no conozco ningún proyecto de NAS basado en linux.
    De todas formas FreeNAS me ha gustado mucho y lo seguiré de cerca.

    Saludos, Iván.

    otero dijo...

    Un articulo realmente útil para cualquiera que administre sistemas linux. ¡ Felicidades !

    Super Coco dijo...

    ¡Se me había escapado esta entrada! ¡Con lo curradísima que está! ¡Interesantísimo!

    Yo en cambio vivo en el filo de la navaja. Tengo los dos discos del ordenador con absolutamente todo en RAID0 a nivel de placa (NForce4) y gestionado en Linux por el dmraid y el Device-Mapper del kernel. Espero que mis backups sean fiables ;-)

    Iván dijo...

    Hola Super coco,

    más te vale que sean fiables porque como se te vaya un disco del raid0... ya sabes, todo perdido. Realmente compensa la mejora de la velocidad con el riesgo que ello conlleva?. Sé que hay gente (como tú) que sabe lo que es un raid0 y los riesgos, pero creo que cada vez se está poniendo más de moda y mucha gente no sabe lo que supone que se vaya un disco de un raid0.
    En fin, cada uno verá...

    Saludos, Iván.

    Super Coco dijo...

    Hola Iván

    Conozco y comprendo muy bien los riesgos de un RAID 0, pero realmente sí se nota, es prácticamente el doble:

    # hdparm -tT /dev/mapper/nvidia_bdehcbaa

    /dev/mapper/nvidia_bdehcbaa:
    Timing cached reads: 1290 MB in 2.00 seconds = 645.41 MB/sec
    Timing buffered disk reads: 342 MB in 3.01 seconds = 113.70 MB/sec

    ¡Y si haces algo de edición de vídeo (aunque sea pasar películas caseras a DVD) la diferencia es muy apreciable! Eso sí, hago contínuamente rsync's de los datos del RAID a un disco externo. Total, que tengo que tener igual de capacidad de backup que en el RAID para disfrutar de esa velocidad extra :-)

    Iván dijo...

    Parece que me estás leyendo el pensamiento. Dentro de poco tengo pensado meterme con la edición de video (qué programa me recomiendas para linux?) y también quiero sincronizar (tengo que buscar información de rsync o lo que sea) la información del raid a disco externo para hacer los backups.

    A ver cuando posteas algo de esto en tu blog ;-)

    Saludos, Iván.

    Super Coco dijo...

    > qué programa me recomiendas para linux?

    Me temo que no puedo responderte, ya que yo me pegué la panzada de pasar todas las películas caseras a DVD (con sus menús, transiciones, música de fondo, etc) usando el Pinnacle Studio en Windows. Necesariamente lo tuve que hacer así porque cuando estuve con esto (hace casi dos años) la partición muy grande donde me cabían las películas la tenía en NTFS sin poder cambiarla y por entonces no había NTFS-3G :-)

    El que tiene mucha fama es el Cinelerra, pero no lo he probado.

    Respecto al rsync, sí, ya tenía en la cabeza escribir al respecto, pero hay que encontrar el hueco :D

    Hector dijo...

    Hola Ivan,
    Muy bueno el tuto.
    Respecto a edicion de video en Linux hasta ahora lo mejor es Cinelerra, como te dijeron

    hector

    Iván dijo...

    Gracias Héctor, me alegro de que te guste.

    Respecto a la edición de video en linux, en cuanto tenga un rato me pondré a probar.

    Saludos, Iván.

    Anónimo dijo...

    muy bueno el howto soy nuevo en esto y la verdad que fue muy facil crear el raid y probarlo con esta explicacion. excelente!!! y desde ya gracias por publicarlo

    Iván dijo...

    Hola Anónimo,

    muchas gracias a ti por el comentario, me alegro de que te haya resultado útil el tutorial y le puedes sacar partido.

    Saludos, Iván.

    Anónimo dijo...

    Hola,

    Acabo de leer tu tutorial, y es muy bueno ya que es claro y cuenta los pasos completos que vas dando. Sobre todo con la degeneración profesional que suele haber obviando muchas cosas que los neofitos no saben. Es la primera vez que entro en tu blog, pero voy a leerte más.
    Gracias por el tutorial que me ha ahorrado unas cuantas horas de lectura.

    Iván dijo...

    Hola Anónimo,

    muchas gracias por tu comentario!. Pues si me lees más, ya irás viendo que suelo detallar todos los pasos de lo que hago en todos los post. De todas formas, para cualquier duda siempre estoy disponible para ayudar.

    Me alegro de que te guste el blog y de que el tutorial te haya resultado útil.

    Saludos, Iván.

    showman dijo...

    Me pueden mandar mail a mi correo si me pueden ayudar.
    showmanchoyin@gmail.com

    Mi problema es que tengo un raid 1 con la raiz en lvm - vg0 y parece todo funcionar bien, Pero al retirar cualquiera de los dos discos el grub aparece peron no arranca el sistema, al reconectar el disco vuelve todo a funcionar.....

    Como puedo resolver esto?

    Iván dijo...

    Lo siento showman pero con eso no te puedo ayudar. La configuración que planteas no la he probado. He hecho alguna cosita con LVM pero no junto con raid-1 para el filesystem /.

    Saludos y suerte, Iván.

    showman dijo...

    Hola iván.
    Nada este fin de semana formatee los discos y empece de nuevo.
    SDA1 255Mb raid 1 boot
    SDA2 3Gb Swap
    SDA3 40G raid1 raiz
    En SDB las mismas particiones, esta vez lo hice sin LVM y me pasa lo mismo, el grub funciona aparece el cargador en los dos discos, pero si retiro no de los dos el sistema ya no bootea y me aparece una mini shell con un par de comando...

    Esto es lo que me aparece y no arranca.
    Loading, please wait…
    mdadm: No devices listed in conf file were found.
    Stdin: error 0

    Iván dijo...

    Hola Showman,

    he estado buscando un poco y he encontrado este tutorial, mira a ver si te sirve.
    Debes tener en cuenta que si quieres hacer un raid 1 que incluye la partición raíz /, hay que hacer unos pasos adicionales para que el grub se entere. En mi caso, sólo utilizo el raid 1 para partición de datos, por lo que no tengo tu pequeño problemita.
    Espero que puedas solucionar tu problema.

    Saludos, Iván.

    showman dijo...

    joeeeeee... el problema tiene que estar en la imagen del kernel de ubuntu o en el intrd (un bug del mdadm de ubuntu alternate), porque he instalado un suse sobre raid y funciona a las mil maravillas y sin hacer ninguna configuración.

    Iván dijo...

    Pues a lo mejor sí que es un bug. Has probado a mirar en launchpad a ver si está dado de alta?. Yo es que el raid lo tengo montado en una Debian Etch.

    Saludos, Iván.

    showman dijo...

    ¿El raid que tienes con la debian lo hicistes con el instalador del sistema o despues con el mdadm?
    ¿Que version del mdadm tienes?
    mdadm -V

    Y el el listado de bug sobre mdadm hay porlo que se ve muchos bug reportados.

    Iván dijo...

    Hola showman,

    el raid lo hice después de tener el sistema instalado. Primero instalé normalmente y luego lo creé a mano siguiendo mi propio artículo ;-).

    La versión es:
    shian:~# mdadm -V
    mdadm - v2.5.6 - 9 November 2006

    Saludos, Iván.

    RuBiCK dijo...

    Yo estaba buscando un método para partiendo con dos HDD, uno de ellos con el SO y otro vacio, hacer mirror por hardware mediante las herramientras de la controladora (smart array) y me he encontrado con tu artículo que me ha servidor para duplicar el disco duro mediante el export/import la tabla de partiones.

    Gracias

    Iván dijo...

    Hola RuBiCK,

    Me alegro de que aunque no sea el artículo del raid (puesto que tú lo querías hacer por hadrware), te haya servido algo de él.

    Gracias por la visita y por el comentario.

    Saludos, Iván.

    Maximiliano dijo...

    Hola,
    Yo ya tengo un Linux instalado y quisiera poder crear un RAID 1, del sistema que tengo instalado, no un raid solo de datos, sino uno que me incluya mi instalacion actual, ¿se puede hacer eso?

    Iván dijo...

    Hola Maximiliano,

    sí es posible hacerlo aunque este tutorial no te servirá porque está pensado sólo para datos. Me apunto te sugerencia para hacer un tutorial sobre esto porque ya lo habéis pedido algunos lectores en los comentarios.

    Saludos, Iván.

    Maximiliano dijo...

    Gracias por tu respuesta Ivan.
    Sabes de algun tutorial en donde se explique o que deberia tener en cuenta para poder intentar hacerlo.

    Iván dijo...

    Gracias a ti Maximiliano por tu comentario. Una de las cosas que debes tener en cuenta es que tienes que configurar grub para que arranque desde cualquiera de los 2 discos del raid. El resto es "sencillo", sólo tienes que crear las particiones iguales (incluida la de swap) en ambos discos.

    Saludos, Iván.

    Javier Ros Moreno dijo...

    Hola Iván, antes de todo felicitarte por la ayuda que prestas a los que empezamos o jugueteamos con linux. A los profanos :D.

    Yo hace 8 años que dejé de darle al Linux y ahora he vuelto con ganas. Tengo un equipo con el que hago las pruebas, es un P4 con 512Mb de RAM (va sobrao), le he instalado 3 discos duros, uno de 120gb, otro de 60gb y otro de 80gb.

    Aquí empieza el juego.

    Quería montar un raid con redundancia, estuve dándole vueltas al tema y al final he optado por lo siguiente:

    Al disco de 60Gb le he hecho una partición de 19gb ext3 para el sistema, otra de 1 para el swap y he dejado libres 40Gb. hda1, hda2 y hda3.

    Luego he montado un Raid0 entre el hda3 y el hdd1 (el de 80Gb) por lo que me ha resultado un md0 de 120Gb.

    Bien, acabo de iniciar un Raid1 (md1) entre el md0 (raid0 entre hda3 y hdd1) y el hdc1 (de 120Gb).

    De hecho está al 27%, que crees que pasará?

    Los pasos que he seguido son:

    1) Establecer las particiones sin formato y con raid autodetected.
    /dev/hda3 Linux raid autodetected
    /dev/hdc1 Linux raid autodetected
    /dev/hdd1 Linux raid autodetected

    2) mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/hda3 /dev/hdd1

    md0: active raid0 hdd1[1] hda3[0]
    118663936 blocks 64k chunks

    3) mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/md0 /dev/hdd1

    md1: active raid1 hdc1[1] md0[0]
    118663936 blocks [2/2] [UU]
    [=====>...............] resync = 27.4% (32531584/118663872) finish=62.5min speed=22930K/sec

    Al ver el avance me he quedado de piedra, pero por otro lado, ... ¿por qué no?

    Bueno, te lo comentaba por que creo que es curioso y me gustaría saber que piensas.

    Un saludo y muchas gracias por tu ayuda incondicional.

    Javier Ros Moreno dijo...

    Esta mañana, antes de venir al trabajo, he mirado que tal había ido.

    En principio se ha creado bien, le he dado formato a /dev/md1 con ext3 y lo he montado en /media/raid.

    Lo único malo es que me ha dicho que no tengo permisos para escribir, cuando vuelva a casa investigaré a ver que pasa.

    Saludos,

    Iván dijo...

    Hola Javier,

    te estaba respondiendo a tu comentario anterior y he visto el nuevo así que te contesto a ambos.
    Lo primero darte las gracias por el comentario y por compartir tu experiencia con todos.

    Sobre la creación del raid (por cierto, extraño raid 1 con un disco y un raid 0), la verdad es que tarda un rato. En mi caso, para el raid 1 de 60GB estuvo algo más de 1 hora, pero es normal. Mientras que el /proc/mdstat te indique que el raid está activo es que funciona bien.

    Sobre los permisos para escribir revisa con cuidado cómo los has asignado al grupo y a others. También ten en cuenta para qué vas a usar el raid y quien quieres que sea el owner de ese filesystem (puede que no te interese que sea root).

    Para cualquier duda ya sabes donde estoy.

    Saludos y muchas gracias, Iván.

    Javier Ros Moreno dijo...

    "(por cierto, extraño raid 1 con un disco y un raid 0)"

    A eso me refería, lo que me dejó de piedra fue el hecho de que me dejara montar un raid sobre otro raid, eso es lo curioso.

    Según lo que pienso, si falla el disco grande tengo el Raid0, si falla alguno de los dos discos del Raid0, pierdo el Raid0 pero tengo el Disco grande. El peor de los casos sería que fallara el disco donde tengo el arranque (hda), si es así tendría que instalar linux en otro disco y montar el disco grande para recuperar los datos.

    Según la teoría creo que así debería ser.

    No deja de ser extraño y curioso, pero no he visto ningún impedimento.

    Saludos,

    Iván dijo...

    Javier,

    una de las grandes ventajas de linux es que puedes hacer esas combinaciones e incluso otras "más enrevesadas". Es relativamente común tener Raid 1+0 ó 0+1 con 4 discos, pero también puedes tener un Raid 1 + LVM para redimensionar las particiones de manera dinámica.

    Si vas a usar esa máquina para algo que no sea "cacharrear" no te recomiendo la configuración de discos que has elegido. Ten en cuenta que si falla el disco grande tienes más posibilidades de que falle cualquiera de los pequeños del raid0 y se perdería todo. Depende mucho de cómo quieras organizar los discos y el espacio que necesites tener con mirror, pero dale otra pensada.
    Te cuento mi caso del servidor de backup. Tengo discos de 30, 60 y 120GB.
    - El disco de 30GB -> Sistema operativo, swap y el resto para datos "no críticos".
    - El disco de 60GB y "medio" del de 120GB para el Raid1.
    - Los 60GB que me sobran del de 120GB para datos "no críticos".

    Saludos, Iván.

    Javier Ros Moreno dijo...

    De momento, Iván, solo estoy "cacharreando", como tú bien has dicho. Tocando esto y lo otro para volver a relacionarme con linux, ver las nuevas cosas que trae (son 8 años sin Linux) y tal. Esta tarde he montado un raid5 con 8 particiones de 30Gb, ya ves :), trasteando.

    La idea que tengo para hacer en un futuro próximo, un par de meses, es montarme un raid1 entre dos discos de 500Gb, soy aficionado a la fotografía y tengo cientos de miles de fotos, algunas de ellas son TIFFs de 150Mb (incluyen capas de photoshop), así que necesito mucho espacio, me resulta muy incomodo sacar copias de seguridad en DVD que luego a los años pierdes o se rompen.

    Bueno, un placer el hablar contigo y leer tu blog.

    Un saludo "makina" ;)

    Iván dijo...

    Hola Javier,

    para trastear te recomiendo mejor una máquina virtual de VMware o similares, es más cómodo y añadir discos es tan sencillo como apagar la máquina y editarla para poner más :-P.
    Por cierto, el raid 5 sólo está recomendado para un máximo de 7 discos, aunque como dices que estás cacharreando...

    Uffff, 500GB en raid 1. Yo de momento me tengo que conformar con 60.

    El placer es mío por que leas mi blog y compartas tus experiencias con todos. Sois los que publicáis comentarios los que enriquecéis el contenido del blog.

    Saludos, Iván.

    Jesús dijo...

    Hola Iván, prometí que iba a postear y aquí estoy ....

    En el paso

    "No obstante el raid está montado y el filesystem es accesible:"

    en le que simulas la caida del RAID1 quitando uno de los dos discos duros, comprobaste que el fichero seguia existía despues de reinicar la maquina?

    En mi caso, lo he comprobado y el archivo no existe ... no se si he realizado algún paso mal.

    Gracias

    Iván dijo...

    Hola Jesús,

    sí, claro que comprobé que el archivo estaba y el filesystem se montaba correctamente.
    Se monta el raid en tu caso al reiniciar la máquina?. En el dmesg ves el mensaje indicando que el raid está listo pero sólo con un disco?.

    Saludos, Iván.

    Jesús dijo...

    Hola Iván,

    si, todo eso está comprobado. Lo reconoce bien y está bien montado. Creo que el problema viene a la hora de crear el ficero de prueba. En el punto "Creamos un archivo aleatorio de 25MB en el raid:" sin tener montado el sistema raid ( /mnt/raid), ya que en el punto anterior se desmontó para hacer una prueba.Debido a esto, el archivo se crea bien, pero una vez que reinicias el sistema ( quitando uno de los discos duros) ves que lo ha montado bien, el filesystem es correcto, pero que te te creado el directorio lost+found en el lugar donde está el fichero; al menos eso me ha pasado a mi ...

    Lo he solucionado montando la particion de raid "justo" antes de crear el archivo, y con eso ya me funciona.

    Saludos

    Iván dijo...

    Hola Jesus,

    he estado revisando los pasos del tutorial y el fichero de prueba se crea con el raid levantado, pero como tu dices no está montado (ya lo he corregido). Muchas gracias por el detalle.
    Como dices, al reiniciar se monta el raid y obviamente el archivo ya no está disponible.

    Saludos, Iván.

    Jose Antonio dijo...

    Excelente tutorial, acabamos de instalar el RAID en un Hewlett Packard Proliant Pentium D en un par de discos SATA de 160Gb, con Debian Etch y funciono de una y sin problemas.

    Gracias

    Iván dijo...

    Gracias por tu comentario Jose Antonio, me alegro de que el artículo te haya sido de utilidad.

    Saludos, Iván.