Simulación de un fallo de disco del RAID 5
Actualmente tenemos lo siguiente:
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
/dev/md5:
Version : 00.90
Creation Time : Wed Oct 14 15:00:32 2009
Raid Level : raid5
Array Size : 33543168 (31.99 GiB 34.35 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 5
Total Devices : 6
Preferred Minor : 5
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Fri Oct 16 18:49:57 2009
State : active
Active Devices : 5
Working Devices : 6
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
UUID : bf20037d:ef9e0b48:486d5076:93b1ee12 (local to host debxen)
Events : 0.11240
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
2 8 65 2 active sync /dev/sde1
3 8 81 3 active sync /dev/sdf1
4 8 113 4 active sync /dev/sdh1
5 8 97 - spare /dev/sdg1
En el RAID he creado un bitmap. Esto disminuye el rendimiento sobre un 10% (variable) pero disminuye el tiempo de resincronización de los discos, que puede ser bastante largo. Lo añadí con:
debxen:~# mdadm --grow --bitmap=internal /dev/md5
Vamos a hacer que falle el disco sdh1
debxen:~# mdadm --manage --fail /dev/md5 /dev/sdh1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: set /dev/sdh1 faulty in /dev/md5
Y ahora podemos ver como el hot spare entra en funcionamiento y se empieza a reconstruir el array sobre el. El RAID entra en modo degradado y en resicronización. Si no tuviéramos hot spare, el RAID entraría en modo degradado a la espera de que cambiáramos el disco defectuoso. En este momento y hasta que se sincronice el disco hot spare somos vulnerables. Si falla otro disco se pierden todos los datos pero si no tuviéramos hot spare estaríamos más tiempo vulnerables ya que habría que cambiar el disco, etc.
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
/dev/md5:
Version : 00.90
Creation Time : Wed Oct 14 15:00:32 2009
Raid Level : raid5
Array Size : 33543168 (31.99 GiB 34.35 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 5
Total Devices : 6
Preferred Minor : 5
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sat Oct 17 11:02:56 2009
State : active, degraded, recovering
Active Devices : 4
Working Devices : 5
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
Rebuild Status : 25% complete
UUID : bf20037d:ef9e0b48:486d5076:93b1ee12 (local to host debxen)
Events : 0.11258
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
2 8 65 2 active sync /dev/sde1
3 8 81 3 active sync /dev/sdf1
6 8 97 4 spare rebuilding /dev/sdg1
5 8 113 - faulty spare /dev/sdh1
You have new mail in /var/mail/root
debxen:~# mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/root": 2 messages 2 new
>N 1 root@debxen Wed Oct 14 15:00 27/822 DegradedArray event on /dev/md5:debxen
N 2 root@debxen Sat Oct 17 10:57 30/920 Fail event on /dev/md5:debxen
Vemos que se nos han enviado un par de correos electrónicos avisando del fallo, gracias a un script de Debian que usa el comando mdadm con --monitor.
Además en el log /var/log/syslog tenemos las siguientes líneas, entre otras:
Oct 17 10:57:33 debxen kernel: [75299.594160] raid5: Disk failure on sdh1, disabling device.
Oct 17 10:57:33 debxen kernel: [75299.594160] raid5: Operation continuing on 4 devices.
Oct 17 10:57:34 debxen mdadm[3955]: Fail event detected on md device /dev/md5, component device /dev/sdh1
Oct 17 10:57:34 debxen mdadm[3955]: RebuildStarted event detected on md device /dev/md5
Oct 17 10:57:34 debxen mdadm[3955]: SpareActive event detected on md device /dev/md5, component device /dev/sdh1
Donde podemos ver los eventos que se van produciendo. Estas lineas no son consecutivas. Después de un rato obtenemos
Oct 17 11:19:53 debxen mdadm[3955]: SpareActive event detected on md device /dev/md5, component device /dev/sdg1
Vemos que ha tardado unos 22 minutos en reconstruirse. Este tiempo con 5 discos de 8 G con unos 32 G de espacio y unos 9 G de datos.... imaginaos un RAID con discos de 500 G ... quizá merece la pena el bitmap si hay un fallo. Obviamente esto es una simulación y los discos en realidad son ficheros en el mismo disco, por tanto, el tiempo es de suponer que será menor con discos reales, pero nos hacemos una idea.
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
/dev/md5:
Version : 00.90
Creation Time : Wed Oct 14 15:00:32 2009
Raid Level : raid5
Array Size : 33543168 (31.99 GiB 34.35 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 5
Total Devices : 6
Preferred Minor : 5
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sat Oct 17 11:42:26 2009
State : active
Active Devices : 5
Working Devices : 5
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : bf20037d:ef9e0b48:486d5076:93b1ee12 (local to host debxen)
Events : 0.11314
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
2 8 65 2 active sync /dev/sde1
3 8 81 3 active sync /dev/sdf1
4 8 97 4 active sync /dev/sdg1
5 8 113 - faulty spare /dev/sdh1
Y como vemos hemos sobrevivido al fallo de un disco del sistema, todo seguía funcionando, a menos rendimiento eso sí, pero todo sigue correcto. Tener un RAID quita mucho peso de encima en cuanto a fallos de disco.
Para dejarlo todo igual, lo primero es eliminar el disco con el falló.
debxen:~# mdadm --manage --remove /dev/md5 /dev/sdh1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: hot removed /dev/sdh1
debxen:~# mdadm --manage --fail /dev/md5 /dev/sdg1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: set /dev/sdg1 faulty in /dev/md5
debxen:~# mdadm --manage --remove /dev/md5 /dev/sdg1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: hot removed /dev/sdg1
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
/dev/md5:
Version : 00.90
Creation Time : Wed Oct 14 15:00:32 2009
Raid Level : raid5
Array Size : 33543168 (31.99 GiB 34.35 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 5
Total Devices : 4
Preferred Minor : 5
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Oct 19 12:28:54 2009
State : active, degraded
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : bf20037d:ef9e0b48:486d5076:93b1ee12 (local to host debxen)
Events : 0.11324
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
2 8 65 2 active sync /dev/sde1
3 8 81 3 active sync /dev/sdf1
4 0 0 4 removed
Ahora agregamos los discos al array, sdg y sdh de nuevo. Para dejarlo como antes, como vemos tenemos un hueco en el espacio del array, por lo tanto, el disco que metamos ahora irá a ese hueco y los siguientes serán hot spare. Para dejarlo como estaba, añadimos primero sdh1 y después sdg1 como hot spare.
debxen:~# mdadm --manage --add /dev/md5 /dev/sdh1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: re-added /dev/sdh1
debxen:~# mdadm --manage --add /dev/md5 /dev/sdg1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: re-added /dev/sdg1
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
/dev/md5:
Version : 00.90
Creation Time : Wed Oct 14 15:00:32 2009
Raid Level : raid5
Array Size : 33543168 (31.99 GiB 34.35 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 5
Total Devices : 6
Preferred Minor : 5
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Oct 19 12:44:35 2009
State : active, degraded, recovering
Active Devices : 4
Working Devices : 6
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 64K
Rebuild Status : 10% complete
UUID : bf20037d:ef9e0b48:486d5076:93b1ee12 (local to host debxen)
Events : 0.11379
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
2 8 65 2 active sync /dev/sde1
3 8 81 3 active sync /dev/sdf1
6 8 113 4 spare rebuilding /dev/sdh1
5 8 97 - spare /dev/sdg1
Una vez resincronizado, estará todo correcto. Personalmente no he visto una disminución significativa del tiempo de resincronización usando un bitmap. Si alguien puede explicar en los comentarios como funciona o para que sirve el bitmap en el RAID será bienvenido dicho comentario.
Por otro lado podemos monitorizar el servicio de RAID con /etc/init.d/mdadm, que ya estará en funcionamiento. Para poner otra monitorización nosotros podemos usar el comando:
# mdadm --monitor --scan --daemonise --mail=usuario@midominio.com /dev/md5 &
Si tenemos más dispositivos RAID (mdN) podemos ponerlos todos seguidos para monitorizarlos a todos a la vez. Si añadimos --program= programa ejecutará el programa que le digamos cuando detecte un fallo.
Parar un RAID con LVM2
Para parar un array con LVM. Debemos desmontar los sistemas de ficheros, parar LVM y, por último, parar el array:
debxen:~# umount /xvmachines
debxen:~# umount /backup
debxen:~# /etc/init.d/lvm2 stop
Shutting down LVM Volume Groups 0 logical volume(s) in volume group "VG00" now active
debxen:~# mdadm --manage --stop /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
mdadm: stopped /dev/md5
debxen:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices:
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
mdadm: md device /dev/md5 does not appear to be active.
Iniciar un RAID con LVM2
Primero montamos el RAID, después iniciamos el LVM2 y, por último, montamos los sistemas de ficheros.
Con --assemble (montar), es importante poner los discos en el orden que estaban ya que los primeros son miembros del array y el último es el hot spare.
debxen:~# mdadm --stop /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
mdadm: stopped /dev/md5
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
mdadm: md device /dev/md5 does not appear to be active.
debxen:~# mdadm --examine --scan
mdadm: metadata format 00.90 unknown, ignored.
ARRAY /dev/md5 level=raid5 num-devices=5 UUID=bf20037d:ef9e0b48:486d5076:93b1ee12
spares=1
debxen:/~# mdadm --assemble /dev/md5 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdh1
/dev/sdg1
mdadm: metadata format 00.90 unknown, ignored.
mdadm: /dev/md5 has been started with 5 drives and 1 spare.
debxen:~# mdadm --detail /dev/md5
mdadm: metadata format 00.90 unknown, ignored.
/dev/md5:
Version : 00.90
Creation Time : Wed Oct 14 15:00:32 2009
Raid Level : raid5
Array Size : 33543168 (31.99 GiB 34.35 GB)
Used Dev Size : 8385792 (8.00 GiB 8.59 GB)
Raid Devices : 5
Total Devices : 6
Preferred Minor : 5
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Oct 19 19:11:28 2009
State : active
Active Devices : 5
Working Devices : 6
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
UUID : bf20037d:ef9e0b48:486d5076:93b1ee12 (local to host debxen)
Events : 0.11446
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
2 8 65 2 active sync /dev/sde1
3 8 81 3 active sync /dev/sdf1
4 8 113 4 active sync /dev/sdh1
5 8 97 - spare /dev/sdg1
debxen:~# /etc/init.d/lvm2 start
Setting up LVM Volume Groups Reading all physical volumes. This may take a while...
/dev/cdrom: open failed: Sistema de ficheros de sólo lectura
Attempt to close device '/dev/cdrom' which is not open.
Found volume group "VG00" using metadata type lvm2
2 logical volume(s) in volume group "VG00" now active
debxen:~# mount /xvmachines
debxen:~# mount /backup
debxen:~# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/sda1 7,5G 1,3G 5,9G 18% /
tmpfs 129M 0 129M 0% /lib/init/rw
udev 10M 1,2M 8,9M 12% /dev
tmpfs 129M 0 129M 0% /dev/shm
/dev/mapper/VG00-xvmachines
15G 2,3G 13G 16% /xvmachines
/dev/mapper/VG00-backup
15G 33M 15G 1% /backup
debxen:/xvmachines# xm create xenvm01.cfg
Using config file "/etc/xen/xenvm01.cfg".
Started domain xenvm01 (id=2)
debxen:/xvmachines# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdc1[0] sdg1[5](S) sdh1[4] sdf1[3] sde1[2] sdd1[1]
33543168 blocks level 5, 64k chunk, algorithm 2 [5/5] [UUUUU]
bitmap: 1/128 pages [4KB], 32KB chunk
Y como vemos, todo correcto.


Escribe un comentario