GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo usar mdadm para crear un espejo de software sobre dispositivos multirruta

El problema

La herramienta mdadm se usó para crear un espejo RAID de software usando dos dispositivos de mapeo de dispositivos de múltiples rutas:

# /sbin/mdadm /dev/md0 --create --verbose --level=1 --raid-devices=2 /dev/mapper/ocrp1 /dev/mapper/ocrmirrorp1

Luego se confirmó la configuración:

# /sbin/mdadm --detail /dev/md0
...
  Number   Major   Minor   RaidDevice State
    0     253        2        0      active sync   /dev/dm-2
    1     253        3        1      active sync   /dev/dm-3

Dado que se muestran los nombres reales de los dispositivos de múltiples rutas (/dev/dm-N), también se verifican las asignaciones de los nombres más amigables (/dev/mapped/ocrp1):

# /bin/ls -l /dev/mpath/
lrwxrwxrwx 1 root root 7 Apr 23 11:15 ocrp1 -> ../dm-2
lrwxrwxrwx 1 root root 7 Apr 23 11:15 ocrmirrorp1 -> ../dm-3
# /bin/ls -l /dev/mapper/
brw-rw---- 1 root disk 253,   2 Apr 23 11:15 ocrp1
brw-rw---- 1 root disk 253,   3 Apr 23 11:15 ocrmirrorp1

Dado que estos nombres convenientes se asignan a los mismos dispositivos de rutas múltiples, se ha demostrado que la configuración es correcta. Después de reiniciar, mdadm muestra lo siguiente:

# /sbin/mdadm --detail /dev/md0
...
Number   Major   Minor   RaidDevice State
  0       8       97        0      active sync   /dev/sdg1
  1       8      113        1      active sync   /dev/sdh1

El RAID está activo pero no está utilizando los dispositivos de rutas múltiples como se esperaba.

La solución

Esto es en realidad un problema de tiempo. Durante el arranque del sistema, el /etc/rcN.d las secuencias de comandos están iniciando mdadm antes de que los dispositivos de rutas múltiples hayan sido detectados y listos. Esto es esencialmente una condición de carrera porque una gran cantidad de dispositivos de rutas múltiples tardan más en reconocerse y mdadm puede ejecutarse antes de que se complete el procesamiento de rutas múltiples.

La solución es agregar los controladores y dispositivos del sistema de archivos necesarios en /initrd archivo para que estos estén disponibles para el kernel en el momento del arranque. Esto permitirá que el kernel comience a procesar antes los dispositivos de rutas múltiples.

Nota :El archivo /vmlinuz del kernel de Linux está construido con soporte solo para algunos dispositivos muy fundamentales. Los controladores del sistema de archivos y los controladores de dispositivos comunes se compilan por separado y se empaquetan en el archivo /initrd (ramdisk inicial). El cargador de arranque GRUB o LILO primero debe colocar el contenido del archivo /initrd en la memoria y luego cargar el kernel. Luego, el kernel usa el ramdisk inicial para obtener los controladores de dispositivo necesarios para acceder al sistema de archivos raíz. Luego, el kernel cambia a usar el sistema de archivos raíz real y libera la memoria utilizada por la imagen de memoria /initrd.

Este enfoque inteligente permite proporcionar una imagen de kernel con un conjunto de controladores de dispositivo adaptado a cada sistema, sin desperdiciar la memoria del sistema para almacenar el controlador del dispositivo y el código del controlador del sistema de archivos que nunca se utiliza.

Para crear un archivo /initrd personalizado que incluya la compatibilidad con rutas múltiples, utilice la siguiente técnica:

1. Cree un nuevo archivo initrd que incluya el controlador multirrutas, mapeador de dispositivos y HBA:

# /sbin/mkinitrd -v /root/initrd-mp.img 2.6.18-prep --with=multipath --with=dm-multipath --with=lpfc --omit-raid-modules

Para hacer lo mismo en CentOS/RHEL 6 y 7, consulte la publicación a continuación.

Cómo Reconstruir los “initramfs” con Multipath en CentOS/RHEL 6 y 7

2. Verifique el archivo /etc/mdadm.conf está configurado para el dispositivo RAID:

# /bin/cat /etc/mdadm.conf
DEVICE /dev/mapper/*
ARRAY /dev/md0 uuid=ccfe8a98:ea584ff2:2fad9d51:305ea2da
devices=/dev/mapper/ocrp1,/dev/mapper/ocrmirrorp1 level=raid1

3. Copie la nueva imagen ramdisk en la ubicación de arranque esperada por el gestor de arranque:

# /bin/cp /root/initrd-mp.img /boot/

4. Agregue una nueva entrada al archivo de configuración del cargador de arranque /boot/grub/grub.conf para usar la nueva imagen ramdisk:

title MDADM-MP
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-mp.img
Nota :Cambie la estrofa de GRUB de ejemplo según corresponda. La versión de su kernel y el dispositivo raíz ciertamente serán diferentes a los de este ejemplo.

Cuando use CentOS/RHEL 7 y grub2, consulte la publicación a continuación para conocer los pasos exactos.

CentOS / RHEL 7:Cómo modificar los argumentos de GRUB2 con grubby

5. Reinicie su sistema y seleccione la entrada MDADM-MP del menú de GRUB.

Sugerencia :Si aún no ve que se están utilizando los dispositivos de rutas múltiples, deberá agregar una secuencia de comandos de inicio para ejecutar mdadm como el último paso de arranque. Una forma de hacerlo es agregar el comando necesario a /etc/rc.local si no desea escribir un script de servicio /etc/init.d/ completo.


Cent OS
  1. Cómo crear un intercambio en Linux

  2. Cómo crear un archivo de intercambio en Linux

  3. Cómo usar auditd para monitorear la eliminación de un archivo en Linux

  4. Cómo crear particiones y sistemas de archivos en dispositivos DM-Multipath

  5. Cómo crear una rotación de archivo de registro personalizada por logrotate en Linux

Cómo usar el comando SUPERIOR

Cómo crear un archivo de sitio web

Cómo crear un archivo Tar gz

¿Cómo usar gzip en Linux?

Cómo crear un sistema de archivos XFS

Cómo usar Fantastico de Luxe