Guía de tecnologías

Configurar RAID1 y GRUB en /dev/hda (Mandriva 2008.0)

4 min read Linux Actualizado 17 Oct 2025
RAID1 y GRUB en /dev/hda (Mandriva)
RAID1 y GRUB en /dev/hda (Mandriva)

Preparación de /dev/hda

Comprueba primero que los dispositivos md están activos y montados:

df -h
[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/md2              4.4G  757M  3.4G  18% /  
/dev/md0              167M  9.0M  150M   6% /boot  
[root@server1 ~]#

El estado de los arreglos RAID lo muestra /proc/mdstat:

cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hdb5[1]  
      417536 blocks [2/1] [_U]  
  
md0 : active raid1 hdb1[1]  
      176576 blocks [2/1] [_U]  
  
md2 : active raid1 hdb6[1]  
      4642688 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Ahora cambia el tipo de las particiones 1, 5 y 6 de /dev/hda a “Linux raid autodetect” (código hex fd) usando fdisk:

fdisk /dev/hda

Ejemplo de sesión interactiva de fdisk (se muestran las entradas que hay que introducir):

[root@server1 ~]# fdisk /dev/hda  
  
Command (m for help): <-- t  
Partition number (1-6): <-- 1  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 1 to fd (Linux raid autodetect)  
  
Command (m for help): <-- t  
Partition number (1-6): <-- 5  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 5 to fd (Linux raid autodetect)  
  
Command (m for help): <-- t  
Partition number (1-6): <-- 6  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 6 to fd (Linux raid autodetect)  
  
Command (m for help): <-- w  
The partition table has been altered!  
  
Calling ioctl() to re-read partition table.  
Syncing disks.  
[root@server1 ~]#

Después, añade las particiones de /dev/hda a los arreglos RAID correspondientes:

mdadm --add /dev/md0 /dev/hda1
mdadm --add /dev/md1 /dev/hda5
mdadm --add /dev/md2 /dev/hda6

Comprueba de nuevo /proc/mdstat para ver la sincronización en curso:

cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hda5[2] hdb5[1]  
      417536 blocks [2/1] [_U]  
        resync=DELAYED  
  
md0 : active raid1 hda1[0] hdb1[1]  
      176576 blocks [2/2] [UU]  
  
md2 : active raid1 hda6[2] hdb6[1]  
      4642688 blocks [2/1] [_U]  
      [======>..............]  recovery = 34.4% (1597504/4642688) finish=1.0min speed=50349K/sec  
  
unused devices:   
[root@server1 ~]#

Consejo: usa watch cat /proc/mdstat para ver la sincronización en tiempo real. Para salir de watch, pulsa CTRL+C.

Espera hasta que la sincronización termine y todos los arreglos muestren [UU]:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 hda5[0] hdb5[1]  
      417536 blocks [2/2] [UU]  
  
md0 : active raid1 hda1[0] hdb1[1]  
      176576 blocks [2/2] [UU]  
  
md2 : active raid1 hda6[0] hdb6[1]  
      4642688 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

A continuación, actualiza /etc/mdadm.conf para reflejar la nueva configuración:

cp -f /etc/mdadm.conf_orig /etc/mdadm.conf
mdadm --examine --scan >> /etc/mdadm.conf

/etc/mdadm.conf debería contener ahora entradas ARRAY para cada md. Un ejemplo (archivo de configuración con comentarios) puede verse más abajo:

| # mdadm configuration file # # mdadm will function properly without the use of a configuration file, # but this file is useful for keeping track of arrays and member disks. # In general, a mdadm.conf file is created, and updated, after arrays # are created. This is the opposite behavior of /etc/raidtab which is # created prior to array construction. # # # the config file takes two types of lines: # # DEVICE lines specify a list of devices of where to look for # potential member disks # # ARRAY lines specify information about how to identify arrays so # so that they can be activated # # You can have more than one device line and use wild cards. The first # example includes SCSI the first partition of SCSI disks /dev/sdb, # /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second # line looks for array slices on IDE disks. # #DEVICE /dev/sd[bcdjkl]1 #DEVICE /dev/hda1 /dev/hdb1 # # If you mount devfs on /dev, then a suitable way to list all devices is: #DEVICE /dev/discs/*/* # # # # ARRAY lines specify an array to assemble and a method of identification. # Arrays can currently be identified by using a UUID, superblock minor number, # or a listing of devices. # # super-minor is usually the minor number of the metadevice # UUID is the Universally Unique Identifier for the array # Each can be obtained using # # mdadm -D # #ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371 #ARRAY /dev/md1 super-minor=1 #ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1 # # ARRAY lines can also specify a "spare-group" for each array. mdadm --monitor # will then move a spare between arrays in a spare-group if one array has a failed # drive but no spare #ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1 #ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1 # # When used in --follow (aka --monitor) mode, mdadm needs a # mail address and/or a program. This can be given with "mailaddr" # and "program" lines to that monitoring can be started using # mdadm --follow --scan & echo $! > /var/run/mdadm # If the lines are not found, mdadm will exit quietly #MAILADDR [email protected] #PROGRAM /usr/sbin/handle-mdadm-events ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6b4f013f:6fe18719:5904a9bd:70e9cee6 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=63194e2e:c656857a:3237a906:0616f49e ARRAY /dev/md2 level=raid1 num-devices=2 UUID=edec7105:62700dc0:643e9917:176563a7 |

Preparación de GRUB (Parte 2)

Queremos que el sistema pueda arrancar aunque falle /dev/hdb. Edita /boot/grub/menu.lst y duplica la primera entrada del kernel: copia la estrofa que usa (hd1,0) y pégala cambiando hd1 por hd0. Comenta las otras estrofas para que el menú quede con la primera opción apuntando al disco principal y la segunda al disco alternativo.

vi /boot/grub/menu.lst

Ejemplo de menú resultante:

| timeout 10 color black/cyan yellow/cyan default 0 fallback 1 title linux kernel (hd1,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2 resume=/dev/md1 initrd (hd1,0)/initrd.img title linux kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2 resume=/dev/md1 initrd (hd0,0)/initrd.img #title linux #kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/hda6 resume=/dev/hda5 #initrd (hd0,0)/initrd.img #title failsafe #kernel (hd0,0)/vmlinuz BOOT_IMAGE=failsafe root=/dev/hda6 failsafe #initrd (hd0,0)/initrd.img |

Después actualiza el ramdisk y reinicia:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
reboot

Si todo está bien configurado, el sistema debería arrancar sin problemas desde el arreglo RAID y será capaz de iniciarse aun si uno de los discos IDE falla.

Criterios de aceptación

  • Los dispositivos /dev/md0, /dev/md1 y /dev/md2 están presentes y montados según corresponda.
  • /proc/mdstat muestra los arreglos con [UU] (ambos miembros activos).
  • /etc/mdadm.conf contiene líneas ARRAY para cada md.
  • El menú de GRUB incluye entradas para (hd1,0) y (hd0,0) y el sistema arranca después del reinicio.

Lista de verificación rápida (para ejecutar)

  • [ ] Verificar salida de df -h y cat /proc/mdstat.
  • [ ] Cambiar tipo de partición a fd en /dev/hda con fdisk.
  • [ ] Ejecutar mdadm --add para cada partición y comprobar sincronización.
  • [ ] Actualizar /etc/mdadm.conf con mdadm --examine --scan.
  • [ ] Modificar /boot/grub/menu.lst para incluir la entrada desde hd0.
  • Regenerar initrd y reiniciar.

Runbook: si el sistema no arranca

  1. Arranca desde un medio de rescate (live CD o modo rescue del instalador).
  2. Monta la partición raíz y /boot del arreglo (ej.: mount /dev/md2 /mnt y mount /dev/md0 /mnt/boot).
  3. Chroot al sistema (chroot /mnt) si es necesario.
  4. Comprueba /etc/mdadm.conf y que los md estén ensamblados (mdadm --assemble --scan).
  5. Reinstala GRUB en los MBRs de ambos discos si procede (por ejemplo: grub-install /dev/hda y grub-install /dev/hdb).
  6. Regenera initrd (mkinitrd) y reinicia.

Nota: los comandos exactos de reinstalación de GRUB dependen de la versión de GRUB instalada (GRUB Legacy vs GRUB2).

Alternativas y cuándo no aplicar este procedimiento

  • Si usas GRUB2, la configuración y los comandos son distintos (grub.cfg, update-grub, grub-install con parámetros actuales).
  • En sistemas con LVM sobre RAID o configuraciones más modernas, la topología de arranque puede requerir pasos adicionales (instalar el cargador en cada disco, actualizar fstab/UUIDs, etc.).
  • Para servidores en producción, programa una ventana de mantenimiento y realiza backups antes de tocar particiones y arranques.

Mini-metodología (heurística)

  1. Verificar estado actual (md y montajes).
  2. Cambiar tipos de partición sin destruir datos.
  3. Añadir miembros al RAID y monitorizar la resync.
  4. Actualizar configuraciones persistentes (mdadm.conf, GRUB).
  5. Probar reinicio controlado.

Casos de prueba / aceptación

  • Simular fallo de hdb: usar mdadm --fail /dev/mdX /dev/hdbY y comprobar que el sistema sigue funcionando y que el arreglo entra en modo degradado.
  • Después, añadir la pieza fallida de nuevo con mdadm --add y comprobar la resync completa.
  • Reiniciar y desconectar físicamente (si es seguro y planificado) un disco para validar el arranque desde el otro.

Resumen

  • Cambia las particiones de /dev/hda a tipo fd y añádelas a los arreglos RAID.
  • Espera a la sincronización, actualiza /etc/mdadm.conf y ajusta /boot/grub/menu.lst para soportar arranque desde ambos discos.
  • Regenera initrd y reinicia; verifica que el sistema arranca correctamente.

Importante: haz respaldos y, si trabajas de forma remota, ten una consola de emergencia disponible antes de modificar el MBR o las entradas de arranque.

Autor
Edición

Materiales similares

NET::ERR_CERT_AUTHORITY_INVALID en Windows 10
Windows, Seguridad

NET::ERR_CERT_AUTHORITY_INVALID en Windows 10

Aprende inglés con IA: 10 apps principales
Idiomas

Aprende inglés con IA: 10 apps principales

Subtítulos en Final Cut Pro: guía práctica
Edición de Video

Subtítulos en Final Cut Pro: guía práctica

Instalar BIKA LIMS Inkosi en Ubuntu en 15 min
Guía técnica

Instalar BIKA LIMS Inkosi en Ubuntu en 15 min

Maximiza la batería de tu iPhone con iOS
Tecnología

Maximiza la batería de tu iPhone con iOS

Solución al error 0x800F0909 en paquetes de idioma
Windows

Solución al error 0x800F0909 en paquetes de idioma