| « Wacom, /dev/event y X | Más granizo en Bilbao » |
Bueno, hoy he terminado el último paso relacionado con particiones que tenía pensado para los discos duros: migrar root a un RAID 1 de tres discos diferentes.
¡A ver cuál se atreve a fallar ahora! ...o sea, esperemos que ninguno (esperemos).

Por el camino me he dado cuenta de que -mira tú qué cosas- el kernel no encuentra el initrd del raid si no tiene compilados los drivers de raid. Obvio, ya lo sé, pero me ha costado mover /boot a otra partición y recrear initrd ![]()
Al menos el resultado parece alentador: más de 50MB/sec en lectura por dd, que no está nada mal. Podría estar mejor, como los 90MB/sec de fin de disco del RAID 0 para swap... pero aún así, nada mal.
| inicio disco | fin disco | |
| RAM | 317.46MB/sec | N/A |
| raid 1 | 51.24MB/sec | 40.56MB/sec |
| raid 0 | N/A | 93.89MB/sec |
| hdb | 50.12MB/sec | 29.11MB/sec |
| sda | 64.30MB/sec | 43.19MB/sec |
| sdb | 43.56MB/sec | 37.87MB/sec |
Los pasos a seguir, en el post ampliado.
Follow up:
ADVERTENCIA: esto borrará IRREMEDIABLEMENTE cualquier dato que pudiese haber en las particiones donde se crea el RAID.
Hágase bajo la responsabilidad de cada uno.
Los pasos básicamente son los siguientes:
mdadm. Por ejemplo: mdadm -C /dev/md0 -n 3 -l 1 /dev/hdb1 /dev/sda1 /dev/sdb1raid1, por ejemplo: modprobe raid1.
# cat /proc/mdstat
md0 : active raid1 hdb1[0] sdb1[2] sda1[1]
9775424 blocks [3/3] [UUU]dd la partición a pelo (teniendo en cuenta tamaños, claro). Por ejemplo: dd if=/dev/hda7 of=/dev/md0/etc/fstab para poner /dev/md0 como unidad raíz, quedando algo como:
/dev/md0 / ext3 defaults 1 1/boot/initrd-2.6.16-1mdk.img o parecido. En todo caso, será el definido en /etc/lilo.conf o en la configuración de grub, por ejemplo en /boot/grub/menu.lst.initrd existe la utilidad llamada mkinitrd, que se encarga de autodetectar los módulos que hacen falta. Sin embargo, no es omnisciente. En este caso he tenido que ponerle a mano los módulos de SATA (una SiI3112 integrada en placa), una cosa como:
mkinitrd -f --initrdfs=cramfs initrd-2.6.16-1mdk_r.img 2.6.16-1mdk --preload=scsi_mod --preload=libata --preload=sata_sil --preload=sd_mod
mount -o loop initrd-2.6.16-3mdk_r.img _ y comprobar que en el linuxrc figuran unas líneas parecidas a estas:
mkdir /dev/.udevdb
mkdevices /dev
echo Activating md devices
mknod /dev/md0 b 9 0
mknod /dev/md/0 b 9 0
raidautorun /dev/md0
echo Creating root device
mkrootdev /dev/root/etc/lilo.conf para arrancar con el nuevo initrd, desde el dispositivo de RAID, con algo parecido a:
image=/boot/vmlinuz-2.6.16-1mdk
label="2.6.16-1_r"
root=/dev/md0
initrd=/boot/initrd-2.6.16-1mdk_r.img
append="nodevfs splash=silent inotify=on panic=30"
vga=788
restrictedlilo y no debería dar error.fdisk -o la herramienta de gestión de particiones preferida- cambiamos el tipo de partición a las particiones que van a formar el RAID a fd - Linux raid autodetect. El resultado deseado es una cosa como:
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/hdb1 1 1217 9775521 fd Linux raid autodetect
/dev/sda1 1 1217 9775521 fd Linux raid autodetect
/dev/sdb1 1 1217 9775521 fd Linux raid autodetectAhora, al arrancar, elegimos la opción "2.6.16-1_r" y durante el arranque debería decir algo como:
md: raid1 personality registered for level 1
md: md0 stopped.
md: bind<sda1>
md: bind<sdb1>
md: bind<hdb1>
raid1: raid set md0 active with 3 out of 3 mirrors
Antes de eso, es posible que salgan mensajes de md: Autodetecting RAID arrays. con un resultado fallido si no están compilados los módulos necesarios dentro del kernel. Se pueden ignorar perfectmente siempre que al final aparezca lo de "md0 active with 3 out of 3" (o los que sean en cada caso).
Recordemos también que estos mensajes se pueden ver después del arranque con dmesg | less.
La única complicación futura aparecerá al actualizar el kernel, que posiblemente haya que volver a crear el initrd correspondiente si hay que agregarle módulos a mano. Un inconveniente menor a cambio de la seguridad del RAID.
De paso, al hacerlo, he descubierto que tenía en /lib basura vieja, en versiones no compatibles. Por ejemplo las tls de 2.3.6, incompatibles con el ld-linux.so de 2.4.0. Menuda gracia, arrancar y ver cómo init salta con un precioso error de "no se puede cargar librería" seguido de un "reboot en 30 segundos" (cortesía de la opción de kernel "panic=30"). Por lo visto al reinstalar los RPMs de rpm -qf /etc/init.d/* para que el prcsys no se liase loop-errors (ya sé, parece que ha quedado algo mezclado el init.d con tanto cpio pacá y pallá), algún script ejecutó ldconfig, y la armó. Menos mal que tenía copia de todo y pude pasar un ld.so.cache que funcionaba para poder arrancar y descubrir al culpable, pero ya le vale. Supongo que es el precio de usar Cooker... habrá que montar un script que revise la basurilla que va quedando fuera del control de rpm, para evitar estas cosas.
| Lun | Mar | Mié | Jue | Vie | Sáb | Dom |
|---|---|---|---|---|---|---|
| << < | > >> | |||||
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
powered by
+
photos powered by

Nikon Coolpix 7600
+

Nokia 3650
Por cortesía de NokiaGame 2002

Esta obra está bajo una licencia Creative Commons salvo donde se especifique explícitamente otra licencia.