Preparar /dev/sda y GRUB para RAID1 en CentOS 5.3
Este artículo explica cómo cambiar los tipos de partición de /dev/sda a “Linux raid autodetect”, añadir las particiones a los arreglos RAID existentes, verificar la sincronización y actualizar GRUB para que el sistema pueda arrancar desde cualquiera de los discos en un RAID1. Incluye comprobaciones, comandos exactos y listas de verificación para administración y recuperación.
Resumen rápido
- Cambiar el tipo de partición a fd (Linux raid autodetect) con fdisk.
- Añadir /dev/sda1, /dev/sda2 y /dev/sda3 a /dev/md0, /dev/md1 y /dev/md2 respectivamente con mdadm –add.
- Verificar sincronización con cat /proc/mdstat y watch.
- Regenerar /etc/mdadm.conf y actualizar los registros de arranque en /boot/grub/menu.lst; recrear initrd y reiniciar.
7 Preparar /dev/sda
Si todo ha ido bien, deberías encontrar /dev/md0 y /dev/md2 en la salida de:
df -h
[root@server1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 9.2G 1.1G 7.7G 12% /
/dev/md0 190M 14M 167M 8% /boot
tmpfs 252M 0 252M 0% /dev/shm
[root@server1 ~]#
La salida de:
cat /proc/mdstat
debería ser similar a lo siguiente:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1]
200704 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
522048 blocks [2/1] [_U]
md2 : active raid1 sdb3[1]
9759360 blocks [2/1] [_U]
unused devices:
[root@server1 ~]#
Ahora debemos cambiar el tipo de partición de nuestras tres particiones en /dev/sda a “Linux raid autodetect”:
fdisk /dev/sda
[root@server1 ~]# fdisk /dev/sda
The number of cylinders for this disk is set to 1305.
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): <-- t
Partition number (1-4): <-- 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-4): <-- 2
Hex code (type L to list codes): <-- fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): <-- t
Partition number (1-4): <-- 3
Hex code (type L to list codes): <-- fd
Changed system type of partition 3 to fd (Linux raid autodetect)
Command (m for help): <-- w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@server1 ~]#
Nota: fdisk te avisa que la tabla de particiones se recargará al próximo reinicio si el kernel está utilizando la tabla antigua. Esto es normal cuando particiones están montadas o en uso.
Ahora añadimos /dev/sda1, /dev/sda2 y /dev/sda3 a los arreglos RAID correspondientes:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3
A continuación, consulta el estado con:
cat /proc/mdstat
Deberías ver que los arreglos RAID están sincronizándose:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
200704 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
522048 blocks [2/2] [UU]
md2 : active raid1 sda3[2] sdb3[1]
9759360 blocks [2/1] [_U]
[====>................] recovery = 22.8% (2232576/9759360) finish=2.4min speed=50816K/sec
unused devices:
[root@server1 ~]#
(Puedes ejecutar:
watch cat /proc/mdstat
para ver la salida en tiempo real. Para salir de watch, presiona CTRL+C.)
Espera hasta que la sincronización termine (la salida debería quedar así):
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
200704 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
522048 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
9759360 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
Actualizar /etc/mdadm.conf
Ajusta /etc/mdadm.conf a la nueva configuración:
mdadm --examine --scan > /etc/mdadm.conf
/etc/mdadm.conf debería verse ahora algo así:
| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=78d582f0:940fabb5:f1c1092a:04a55452 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8db8f7e1:f2a64674:d22afece:4a539aa7 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=1baf282d:17c58efd:a8de6947:b0af9792
|
Asegúrate de revisar el archivo y, si lo deseas, conservar comentarios útiles o añadir una nota con fecha sobre la modificación.
8 Preparar GRUB (Parte 2)
Casi hemos terminado. Debemos modificar /boot/grub/menu.lst. Actualmente está configurado para arrancar desde /dev/sdb (hd1,0). Queremos que el sistema pueda arrancar también si /dev/sdb falla. Para ello, copia el primer bloque (stanza) del kernel que contiene hd1, pégalo debajo y reemplaza hd1 por hd0. Además comenta todas las demás entradas de kernel para que quede de la siguiente manera:
vi /boot/grub/menu.lst
| # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-128.el5) root (hd1,0) kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2 initrd /initrd-2.6.18-128.el5.img title CentOS (2.6.18-128.el5) root (hd0,0) kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2 initrd /initrd-2.6.18-128.el5.img #title CentOS (2.6.18-128.el5) # root (hd0,0) # kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ # initrd /initrd-2.6.18-128.el5.img
|
Después, actualiza tu ramdisk:
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
Y reinicia el sistema:
reboot
Debería arrancar sin problemas.
¡Eso es todo! Has configurado con éxito RAID1 por software en un sistema CentOS 5.3 en caliente.
Notas importantes
- Haz estas operaciones con acceso físico o consola remota que permita recuperación (iLO, DRAC, IPMI).
- No desmontes discos ni borres particiones sin tener respaldo completo.
- Si el sistema usa LVM, consulta cómo interactúa LVM con mdadm antes de modificar particiones.
Criterios de aceptación
- /proc/mdstat muestra [UU] para md0, md1 y md2.
- /etc/mdadm.conf contiene las líneas ARRAY para md0, md1 y md2.
- El grub menu contiene una entrada con root (hd0,0) apuntando al mismo kernel que (hd1,0).
- El sistema arranca correctamente tras reboot con ambos discos conectados y tras desconectar temporalmente uno de los discos (prueba de fallo)
Lista de verificación operativa (para el administrador)
- Hacer snapshot o backup antes de empezar.
- Confirmar estado actual de md con cat /proc/mdstat.
- Cambiar tipos de partición en /dev/sda a fd con fdisk.
- Añadir particiones a MD con mdadm –add.
- Monitorizar sincronización (watch cat /proc/mdstat).
- Regenerar /etc/mdadm.conf y revisar.
- Actualizar /boot/grub/menu.lst para incluir hd0.
- Regenerar initrd y reiniciar.
- Probar arranque fallando intencionadamente un disco.
En qué escenarios esto puede fallar (contraejemplos)
- Si el kernel está demasiado antiguo o la versión de mdadm no gestiona bien ciertos metadatos, la adición puede fallar.
- Si hay errores físicos en /dev/sda (sectores defectuosos), la reconstrucción puede no completarse.
- Si se usan tablas GPT en lugar de MBR y herramientas antiguas, los pasos con fdisk pueden no ser adecuados.
Enfoques alternativos
- Usar parted en lugar de fdisk si trabajas con tablas GPT o con discos grandes.
- Usar una imagen de arranque (rescue ISO) para modificar la tabla de particiones si la tabla no se recarga mientras el sistema está en uso.
- Considerar migración a mdadm con metadata 1.2 y GRUB2 en sistemas modernos.
Modelo mental / Heurística
Piensa en RAID1 como una «copia espejo activa»: cada bloque escrito en md2 debe existir en ambos discos. Al añadir una segunda copia, mdadm sincroniza bloques faltantes leyendo del miembro existente y escribiendo al nuevo. Mientras la sincronización esté en curso, el arreglo es redundante pero con menor margen de fallo hasta que termine.
Mini-metodología (pasos resumidos)
- Verificar arreglos actuales.
- Cambiar tipos de partición a fd en /dev/sda.
- Añadir nuevas particiones con mdadm –add.
- Esperar sincronización completa.
- Actualizar /etc/mdadm.conf.
- Ajustar /boot/grub/menu.lst para permitir arranque desde hd0.
- Regenerar initrd y reiniciar.
- Probar tolerancia a fallos.
Lista de comprobaciones por rol
- Operaciones / SRE: verificar integridad RAID y realizar pruebas de fallo programadas.
- Backup / Respaldo: asegurarse de que hay copias externas antes de tocar particiones.
- Seguridad: registrar cambios en CMDB y controlar acceso a la consola.
Resumen final
Configurar RAID1 en caliente implica cambiar tipos de partición a “Linux raid autodetect”, añadir las particiones al arreglo, esperar la sincronización, actualizar mdadm.conf y adaptar el cargador de arranque para que ambos discos puedan iniciar el sistema. Siempre realiza backups y prueba el arranque simulado tras completar los cambios.
Materiales similares

NisSrv.exe: validar y desactivar con seguridad

Reparar Snipping Tool roto en Windows 11

Eliminar fotos del iPhone sin borrarlas en iCloud

Integrar SFTP en el Explorador de Windows

Mover fotos de Facebook a Google+ con Move2Picasa
