Guía de tecnologías

Crear arreglos RAID y mover datos a RAID en Linux

6 min read Almacenamiento Actualizado 28 Sep 2025
Configurar RAID y migrar datos en Linux
Configurar RAID y migrar datos en Linux

4 Crear nuestros arreglos RAID

Ahora vamos a crear los arreglos RAID /dev/md0 y /dev/md1. /dev/sdb1 se añadirá a /dev/md0 y /dev/sdb2 a /dev/md1. /dev/sda1 y /dev/sda2 no pueden añadirse ahora (porque el sistema se está ejecutando sobre ellas), por lo que usamos el placeholder missing en los siguientes dos comandos:

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1  
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

El comando

cat /proc/mdstat

debería mostrar ahora que tiene dos arreglos RAID degradados ([U] o [U] significa que un arreglo está degradado mientras que [UU] significa que el arreglo está OK):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sdb2[1]  
      5036288 blocks [2/1] [_U]  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

A continuación creamos un sistema de ficheros (ext3) en nuestro arreglo RAID no LVM /dev/md0:

mkfs.ext3 /dev/md0

Ahora pasamos a nuestro arreglo RAID para LVM: /dev/md1. Para prepararlo para LVM ejecutamos:

pvcreate /dev/md1

Luego añadimos /dev/md1 al grupo de volúmenes VolGroup00:

vgextend VolGroup00 /dev/md1

La salida de

pvdisplay

debería ser similar a esta:

[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/sda2  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.34 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               op2n3N-rck1-Pywc-9wTY-EUxQ-KUcr-2YeRJ0  
  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.25 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               153  
  Allocated PE          0  
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg  
  
[root@server1 ~]#

La salida de

vgdisplay

debe ser similar a la siguiente:

[root@server1 ~]# vgdisplay  
  --- Volume group ---  
  VG Name               VolGroup00  
  System ID  
  Format                lvm2  
  Metadata Areas        2  
  Metadata Sequence No  4  
  VG Access             read/write  
  VG Status             resizable  
  MAX LV                0  
  Cur LV                2  
  Open LV               2  
  Max PV                0  
  Cur PV                2  
  Act PV                2  
  VG Size               9.56 GB  
  PE Size               32.00 MB  
  Total PE              306  
  Alloc PE / Size       152 / 4.75 GB  
  Free  PE / Size       154 / 4.81 GB  
  VG UUID               jJj1DQ-SvKY-6hdr-3MMS-8NOd-pb3l-lS7TA1  
  
[root@server1 ~]#

A continuación creamos /etc/mdadm.conf así:

mdadm --examine --scan > /etc/mdadm.conf

Mostramos el contenido del fichero:

cat /etc/mdadm.conf

En el archivo ahora debe ver detalles sobre nuestros dos arreglos RAID (degradados):

| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=7d2bf9c3:7cd9df21:f782dab8:9212d7cb ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d93a2387:6355b5c5:25ed3e50:2a0e4f96 |

A continuación modificamos /etc/fstab. Reemplazar LABEL=/boot por /dev/md0 para que el archivo quede así:

vi /etc/fstab

| /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 /dev/md0 /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 |

A continuación reemplace /dev/sda1 por /dev/md0 en /etc/mtab:

vi /etc/mtab

| /dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 devpts /dev/pts devpts rw,gid=5,mode=620 0 0 /dev/md0 /boot ext3 rw 0 0 tmpfs /dev/shm tmpfs rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0 |

Ahora llegamos al cargador de arranque GRUB. Abra /boot/grub/menu.lst y añada fallback=1 justo después de default=0:

vi /boot/grub/menu.lst

| [...] default=0 fallback=1 [...] |

Esto hace que si el primer kernel falla en arrancar, se intente arrancar el kernel #2.

En el mismo fichero, vaya al final, donde encontrará entradas de kernel (stanzas). Copie la primera y péguela antes de la primera entrada existente; reemplace root (hd0,0) por root (hd1,0):

| [...] title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img |

El archivo completo debería parecerse a esto:

| # 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/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img |

root (hd1,0) se refiere a /dev/sdb, que ya forma parte de nuestros arreglos RAID. Reiniciaremos el sistema en unos minutos; el sistema intentará arrancar desde los arreglos RAID (aun degradados); si falla, arrancará desde /dev/sda gracias a fallback=1.

A continuación ajustamos el ramdisk a la nueva situación:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig  
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

5 Mover nuestros datos a los arreglos RAID

Ahora que hemos modificado todos los ficheros de configuración, podemos copiar el contenido de /dev/sda a /dev/sdb (incluyendo los cambios de configuración realizados).

Para mover el contenido de la partición LVM /dev/sda2 a nuestro arreglo LVM /dev/md1 usamos el comando pvmove:

pvmove /dev/sda2 /dev/md1

Esto puede tardar; tenga paciencia.

Después eliminamos /dev/sda2 del grupo de volúmenes VolGroup00…

vgreduce VolGroup00 /dev/sda2

… y decimos al sistema que no use /dev/sda2 más para LVM:

pvremove /dev/sda2

La salida de

pvdisplay

debería ahora ser la siguiente:

[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.25 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg  
  
[root@server1 ~]#

A continuación cambiamos el tipo de partición de /dev/sda2 a Linux raid autodetect y añadimos /dev/sda2 al arreglo /dev/md1:

fdisk /dev/sda

[root@server1 ~]# fdisk /dev/sda

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): <- 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 ~]#

mdadm --add /dev/md1 /dev/sda2

Ahora mire

cat /proc/mdstat

… y debería ver que el arreglo RAID /dev/md1 se está sincronizando:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda2[2] sdb2[1]  
      5036288 blocks [2/1] [_U]  
      [=====>...............]  recovery = 28.8% (1454272/5036288) finish=2.8min speed=21132K/sec  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

(Puede ejecutar

watch cat /proc/mdstat

para obtener una salida continua del proceso. Para salir de watch, pulse CTRL+C.)

Espere hasta que la sincronización haya terminado (la salida debería entonces ser así):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda2[0] sdb2[1]  
      5036288 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

Ahora montemos /dev/md0:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

Ahora debería encontrar el arreglo en la salida de

mount
[root@server1 ~]# mount  
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)  
proc on /proc type proc (rw)  
sysfs on /sys type sysfs (rw)  
devpts on /dev/pts type devpts (rw,gid=5,mode=620)  
/dev/md0 on /boot type ext3 (rw)  
tmpfs on /dev/shm type tmpfs (rw)  
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)  
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
[root@server1 ~]#

Ahora copiamos el contenido de /dev/sda1 a /dev/md0 (montado en /mnt/md0):

cd /boot  
cp -dpRx . /mnt/md0

Verificación y comprobaciones (rápidas)

  • Compruebe /proc/mdstat para ver el estado de sincronización: cat /proc/mdstat.
  • Asegúrese de que /etc/fstab y /etc/mtab apunten a /dev/md0 para /boot.
  • Confirme que /etc/mdadm.conf contiene las entradas ARRAY para /dev/md0 y /dev/md1.
  • Verifique vgdisplay y pvdisplay para confirmar que el PV /dev/md1 está en VolGroup00.

Important: haga copia de seguridad de /boot y de la configuración del LVM antes de cambiar tablas de partición o mover PVs.

Lista de verificación antes del reinicio (playbook mínimo)

Para el administrador: siga estos pasos en orden y verifique cada punto:

  1. Confirmar que /dev/md1 muestra [UU] o está sincronizándose correctamente.
  2. /etc/fstab contiene /dev/md0 para /boot.
  3. /etc/mtab contiene /dev/md0 para /boot.
  4. /boot/grub/menu.lst contiene fallback=1 y una entrada con root (hd1,0).
  5. El initrd nuevo fue creado: /boot/initrd-uname -r.img existe.
  6. Backup: copiar /boot a /root/boot-backup antes del reinicio.
  7. Plan de rollback: acceso físico o consola remota disponible si el sistema no arranca.

Criterios de aceptación

  • El sistema arranca correctamente desde el RAID cuando se reinicia (o, en caso de fallo, desde el fallback).
  • /boot está montado desde /dev/md0 y contiene todos los kernels e initrds necesarios.
  • Los volúmenes lógicos y puntos de montaje del LVM están intactos y accesibles.
  • pvdisplay y vgdisplay muestran /dev/md1 como parte del grupo de volúmenes con espacio esperado.

Escenarios en los que este procedimiento puede fallar (y soluciones rápidas)

  • Error al relectura de la tabla de particiones (error 16): el kernel usa la tabla antigua hasta el reinicio. Solución: planifique un reinicio fuera de horas, o use partprobe si el sistema lo soporta.
  • GRUB no encuentra /boot en RAID tras reiniciar: arranque desde el CD/USB de rescate, monte /boot y compare los ficheros; reinstale grub si es necesario en ambos discos.
  • Sincronización lenta: compruebe la carga I/O y la prioridad de rescate (mdadm admite ajustar speed_limit_min/max).

Alternativas y consideraciones

  • Alternativa a RAID1: RAID10 si dispone de más discos y necesita mejor rendimiento. Requiere reorganizar particiones.
  • Si no desea LVM, puede mantener todo en particiones RAID sin PV/VG/LV.
  • Para sistemas más nuevos considere usar GRUB2 y device-mapper de forma nativa.

Lista de verificación por roles

  • Administrador de sistemas: validar sincronización RAID, actualizar GRUB, reiniciar y verificar arranque.
  • Responsable de backups: garantizar copia de seguridad de /boot y snapshots del LVM antes del pvmove.
  • Soporte en sitio: disponibilidad para acceso físico si el sistema no arranca.

Pequeña guía de recuperación rápida

  1. Si el sistema no arranca, usar consola remota o media de rescate.
  2. Compruebe /boot en ambas unidades: mount /dev/sdb1 /mnt y verifique ficheros.
  3. Reinstale GRUB en ambos discos: grub-install /dev/sda && grub-install /dev/sdb.
  4. Arranque y verifique /proc/mdstat y vgdisplay.

Mini-diagrama de decisión (mermaid)

graph TD
  A[¿Tiene 2 discos?] -->|Sí| B[Usar RAID1]
  A -->|No| C[Usar backup + disco único]
  B --> D[Crear mdadm y pvcreate]
  D --> E[vgextend + pvmove]
  E --> F[Actualizar GRUB y initrd]
  F --> G[Reiniciar y verificar]
  G --> H{Arranca correctamente?}
  H -->|Sí| I[Fin]
  H -->|No| J[Recuperación desde rescate]

Resumen

  • Cree los arreglos RAID con mdadm usando missing para los discos en uso.
  • Prepare /dev/md1 para LVM y treslade las PVs con pvmove.
  • Actualice /etc/mdadm.conf, /etc/fstab, /etc/mtab y GRUB para que apunten al RAID.
  • Copie /boot a /dev/md0, regenere initrd y pruebe el reinicio con fallback.

Notas: planifique ventanas de mantenimiento, haga respaldos y tenga acceso físico como plan de contingencia.

Autor
Edición

Materiales similares

Desactivar notificaciones de macOS High Sierra
Soporte Mac

Desactivar notificaciones de macOS High Sierra

Crear pósters impactantes: 6 pasos prácticos
Diseño Gráfico

Crear pósters impactantes: 6 pasos prácticos

Ver contador de 'No me gusta' en YouTube
Tutorial

Ver contador de 'No me gusta' en YouTube

Convertir Spotify a MP3 sin premium — TuneFab
Streaming

Convertir Spotify a MP3 sin premium — TuneFab

Configurar RAID y migrar datos en Linux
Almacenamiento

Configurar RAID y migrar datos en Linux

Cómo crear una app en 2023 – Guía paso a paso
Desarrollo

Cómo crear una app en 2023 – Guía paso a paso