Tag Archives: lvm2

Recuperar Disco de Raid5

Como ya hemos montado un sistema con Debian Lenny, Raid5 y LVM2 vamos a ver ahora cómo tenemos que proceder si uno de los discos duros falla. Para los ejemplos he construido con VirtualBox un sistema basado en el del ejemplo del post anterior, pero con discos de 10MB, es válido para los propositos de este post, si los discos son más grande lo único que afecta es que las acciones de formateo y reconstrucción serán más largos. Dicho esto vamos al lío.

Dejamos la entrada con esta configuración de Raid:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid5 sda[0] sdb[3] sdc[2] sdd[1]
30528 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
unused devices:

La cadena de Us mayúsculas indica el estado del Raid, todas las Us implica todos los discos. Vamos a suponer que falla sdd. En ese caso veríamos algo así:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid5 sda[0] sdb[3] sdc[2] sdd[1]
30528 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUU_]
unused devices:

Mostrando que falta un disco. Para reemplazarlo, seguimos estos pasos

  1. Parar el raid
  2. # mdadm --stop /dev/md0
  3. Marcar el disco que ha fallado
  4. # mdadm --manage /dev/md0 --fail /dev/sdd
  5. Eliminar el disco del raid.
  6. # mdadm --manage /dev/md0 --remove /dev/sdd
  7. Apagar el equipo y reemplazar el disco
  8. Agregar el disco al raid
  9. # mdadm --manage /dev/md0 --add /dev/sdd
  10. Listo.

Ahora podemos ir mirando /proc/mdstat para ver el progreso de la reconstrucción que tardará más o menos en función del tamaño. Podemos usar uno de los comandos aparecidos en este Blog, así:

# watch cat /proc/mdstat

Cuando halla finalizado, podemos montar el dispositivo, recordamos que estaba bajo LVM pero este no se ha enterado de nada.

Se Equivocó

Hoy realizaba una nueva instalación de un servidor con una Debian Lenny, instalación desde DVD. Esta máquina hará las veces de Servidor de Directorio para la LAN. Tiene su miga. Partiendo de la base que si un Linux falla, es culpa del administrador (o sea, yo), voy a contar lo que pasó.

En esta instalación el punto más importante estaba en el particionado del disco, el plan era tener la / en raid1 y luego una DAS de 8 Teras en raid5 con LVM2 para /home. Bien, el proceso de instalación avanzó sin problemas hasta la edición del particionado del disco. Físicamente tenemos dos discos sata de 500 GB y el dispositivo /dev/sdc que es la DAS en acceso en bruto, el dispositivo se monta a través de /dev/mapper/datos.

Entonces cuando llegué a este punto de la instalación, el programa me presentó todas estas cosas, tomé sda y creé una partición primaria al final del disco de 490GB, nació sda1, hice lo mismo con sdb, y también nació sdb1, puse los 10GB sobrantes de sda para /boot, ya sda2 y los 10GB de sdb para swap, sdb2. Elegí entonces sda1 y sdb1 y los seleccioné para formar el raid1, nació md0. Posteriormente, le dije que el volumen lógico lo montara en /home. Hasta aquí todo bien.

La instalación prosiguió y al momento de reiniciar e iniciar la nueva instalación… error!! fsck me comenta que la partición /dev/sda2 no tiene una tabla de particiones válida.

CLARO QUE NO es una partición swap, pero es que ahora sda2 no es swap, por alguna razón al reiniciar, el que era /dev/sdc, o sea, el DAS físico había cambiado a /dev/sda! y las líneas en /etc/fstab ya no valían. No todas, al menos. Una vez corregido el inconveniente, reinicié y ya no intentaba checar trozos de disco sin partición.

Aun no entiendo por qué cambió el orden de los dispositivos, cae un mito sobre el poder de Linux, no me esperaba algo de este calibre. Otra cosa que he visto es que también nombra a las particiones en el orden en la que aparecen, no en el orden en el que están físicamente en el disco.

Solucionado el problema, pude irme a casa satisfecho, mañana empezaré la instalación y configuración del nuevo servidor. Pero yo no tuve la culpa!

Debian Lenny Con Raid5 y LVM2

Tras instalar Lenny en la máquina nueva que ha llegado a la escuela, vamos a construir un buen sistema para albergar las copias de seguridad

El raid5 usa división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros del conjunto. El RAID 5 ha logrado popularidad gracias a su bajo coste de redundancia. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad. “Wikipedia Dixit”.

Para ello hemos usado la herramienta mdadm de la siguiente manera:

Primero creamos un nuevo dispositivo en /dev:

mknod /dev/md0 b 0 9

Hemos llamado md (multi disk) aunque podemos usar el nombre que queramos, b es que el dispositivo es de bloques y los enteros son los valores máximo y mínimo.

Después creamos el raid5 sobre el nuevo dispositivo.

mdadm --create /dev/md0 --level=raid5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

Se verifica que está todo en orden:

cat /proc/mdstat

Cuya salida debe ser:

md0 : active raid5 sdb[0] sde[3] sdd[2] sdc[1]
2930284224 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] 

Podemos ver más detalles en el comando:

mdadm --detail /dev/md0

Que nos informará del estado del raid así:

/dev/md0:
Version : 00.90
Creation Time : Mon Mar 30 09:55:23 2009
Raid Level : raid5
Array Size : 2930284224 (2794.54 GiB 3000.61 GB)
Used Dev Size : 976761408 (931.51 GiB 1000.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue Mar 31 09:34:29 2009
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

UUID : e09fdc34:442bd85d:86b20519:591dba3f
Events : 0.82

Number   Major   Minor   RaidDevice State
0       8       16        0      active sync   /dev/sdb
1       8       32        1      active sync   /dev/sdc
2       8       48        2      active sync   /dev/sdd
3       8       64        3      active sync   /dev/sde

Ya tenemos una unidad raid5 de aproximadamente 3 TB. Pero si algo sabemos los administradores de nuestros sistemas es que tienden a crecer y mucho. Por eso, hemos optado por añadir el dispositivo raid a un volumen lógico con LVM2.

Para ello hacemos lo siguiente:

Primero creamos un volumen físico

pvcreate /dev/md0

Segundo, creamos un grupo de volúmenes llamado data (nombre libre):

vgcreate data /dev/md0

Después obtenemos la capacidad que otorga el volumen:

vgdisplay | grep -i "total pe"

Que nos dirá:

Total PE              715401

Así se crea un volumen lógico dentro del grupo de volumenes

lvcreate -n home -l 715401 data

El volumen lógico lo hemos llamado home porque albergará las carpetas de usuarios del sistema.

Se crea el sistema de ficheros al gusto, en mi caso me gusta extendida 3:

mkfs.ext3 /dev/mapper/data-home

Nos queda añadirlo a fstab para que se monte al iniciar el sistema.

dev/mapper/data-home   /home       ext3    defaults,noatime    0   2

Con esto hemos construido una solución completamente profesional para el almacenamiento de datos, copias de seguridad de los PC’s de mis usuarios, y todo ello con software libre. Es importante destacar, que la partición / está fuera del raid, en una próxima entrega explicaré como actuar en caso que la raiz esté en raid, ya que en este caso necesitamos generar un disco ram con los módulos necesarios para el raid.

El porque de usar un volumen lógico en lugar de formatear directamente el raid es sencillo, si se acaba el espacio (que seguro que pasará) se pinchan más discos y se añaden al volumen. Los usuarios siempre verán un sólo disco sin pararse a pensar cuántos discos están almacenados por detrás.