GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment utiliser mdadm pour créer un miroir logiciel sur des périphériques multivoies

Le problème

L'outil mdadm a été utilisé pour créer un miroir RAID logiciel à l'aide de deux périphériques device-mapper-multipath :

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

La configuration a alors été validée :

# /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

Étant donné que les noms réels des périphériques multipath (/dev/dm-N) sont affichés, les mappages des noms les plus conviviaux (/dev/mapped/ocrp1) sont également vérifiés :

# /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

Étant donné que ces noms pratiques correspondent aux mêmes périphériques multivoies, la configuration s'est avérée correcte. Après un redémarrage, mdadm affiche ce qui suit :

# /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

Le RAID est actif mais n'utilise pas les périphériques multivoies comme prévu.

La solution

Il s'agit en fait d'un problème de timing. Lors du démarrage du système, le fichier /etc/rcN.d les scripts démarrent mdadm avant que les périphériques multivoies aient été détectés et prêts. Il s'agit essentiellement d'une condition de concurrence, car un plus grand nombre de périphériques multi-accès prend plus de temps à reconnaître et mdadm peut être exécuté avant la fin du traitement multi-accès.

La solution consiste à ajouter les gestionnaires et périphériques de système de fichiers requis dans le fichier /initrd fichier afin qu'ils soient disponibles pour le noyau au démarrage. Cela permettra au noyau de commencer à traiter les périphériques multivoies plus tôt.

Remarque :Le fichier /vmlinuz du noyau Linux est construit avec un support pour seulement quelques périphériques très fondamentaux. Les gestionnaires de système de fichiers et les pilotes de périphériques communs sont compilés séparément et regroupés dans le fichier /initrd (disque virtuel initial). Le chargeur de démarrage GRUB ou LILO doit d'abord placer le contenu du fichier /initrd en mémoire, puis charger le noyau. Le noyau utilise ensuite le disque virtuel initial pour obtenir les pilotes de périphériques nécessaires pour accéder au système de fichiers racine. Ensuite, le noyau passe à l'utilisation du système de fichiers racine réel et libère la mémoire utilisée par l'image mémoire /initrd.

Cette approche intelligente permet à une image du noyau d'être fournie avec un ensemble de pilotes de périphériques adaptés à chaque système, sans gaspiller de mémoire système pour contenir le code du pilote de périphérique et du gestionnaire de système de fichiers qui n'est jamais utilisé.

Pour créer un fichier /initrd personnalisé incluant le support multipath, utilisez la technique ci-dessous :

1. Créez un nouveau fichier initrd comprenant le pilote multipath, device-mapper-multipath et HBA :

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

Pour faire la même chose sur CentOS/RHEL 6 et 7, veuillez consulter le message ci-dessous.

Comment reconstruire le "initramfs" avec Multipath dans CentOS/RHEL 6 et 7

2. Vérifiez le fichier /etc/mdadm.conf est configuré pour le périphérique 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. Copiez la nouvelle image du disque virtuel dans l'emplacement de démarrage attendu par le chargeur de démarrage :

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

4. Ajoutez une nouvelle entrée au fichier de configuration du chargeur de démarrage /boot/grub/grub.conf pour utiliser la nouvelle image de disque virtuel :

title MDADM-MP
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-mp.img
Remarque :Modifiez l'exemple de strophe GRUB selon les besoins. Votre version de noyau et votre périphérique racine seront certainement différents de cet exemple.

Lorsque vous utilisez CentOS/RHEL 7 et grub2, veuillez consulter le message ci-dessous pour connaître les étapes exactes.

CentOS / RHEL 7 :Comment modifier les arguments GRUB2 avec grubby

5. Redémarrez votre système et sélectionnez l'entrée MDADM-MP dans le menu GRUB.

Astuce :Si vous ne voyez toujours pas les périphériques multipath utilisés, vous devrez ajouter un script de démarrage pour exécuter mdadm comme dernière étape de démarrage. Une façon de procéder consiste à ajouter la commande nécessaire à /etc/rc.local si vous ne souhaitez pas écrire un script de service /etc/init.d/ complet.


Cent OS
  1. Comment créer un swap sous Linux

  2. Comment créer un fichier d'échange sous Linux

  3. Comment utiliser auditd pour surveiller la suppression d'un fichier sous Linux

  4. Comment créer des partitions et des systèmes de fichiers sur des périphériques DM-Multipath

  5. Comment créer une rotation de fichier journal personnalisée par logrotate sous Linux

Comment utiliser la commande TOP

Comment créer un fichier de site Web

Comment créer un fichier Tar gz

Comment utiliser gzip sous Linux ?

Comment créer un système de fichiers XFS

Comment utiliser Fantastico de Luxe