Guide des technologies

Préparer /dev/sda et GRUB pour RAID1

6 min read Administration Mis à jour 10 Oct 2025
RAID1 : préparer /dev/sda et GRUB
RAID1 : préparer /dev/sda et GRUB

Vérifiez d’abord que /dev/md0 et /dev/md2 existent. Changez le type des partitions sur /dev/sda en Linux raid autodetect (fd), ajoutez /dev/sda1 /dev/sda2 /dev/sda3 aux arrays avec mdadm, attendez la synchronisation, mettez à jour /etc/mdadm.conf, adaptez /boot/grub/menu.lst pour pouvoir booter depuis les deux disques, recréez l’initrd et redémarrez.

Important: cet article suppose que vous avez un système CentOS 5.3 en production avec un seul disque miroir actif (sdb) et que vous ajoutez le second disque (sda). Sauvegardez toujours les données critiques avant d’agir.

Contexte et définitions rapides

RAID1: miroir logiciel qui conserve une copie identique des données sur deux disques. mdadm: utilitaire Linux pour gérer les ensembles RAID logiciels. initrd: image de disque RAM utilisée au démarrage pour charger les pilotes nécessaires (ex. RAID).

7 Préparation de /dev/sda

Si tout s’est bien passé jusque-là, vous devriez trouver /dev/md0 et /dev/md2 dans la sortie de la commande suivante:

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 sortie de

cat /proc/mdstat

devrait ressembler à ceci:

[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 ~]#

Maintenant, changez le type de partition de nos trois partitions sur /dev/sda pour Linux raid autodetect:

fdisk /dev/sda

Exemple d’interaction (conservez ces commandes exactes si vous suivez le même schéma) :

[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 ~]#

Note: le message d’erreur indiquant que le noyau utilise encore l’ancienne table est normal si des partitions sont montées. Le nouveau type sera pris en compte après redémarrage, mais vous pouvez ajouter les partitions au RAID immédiatement.

Ajoutez maintenant /dev/sda1, /dev/sda2 et /dev/sda3 aux ensembles RAID correspondants:

mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3

Puis regardez de nouveau /proc/mdstat :

cat /proc/mdstat

Vous devriez voir les arrays en cours de synchronisation :

[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 ~]#

Vous pouvez surveiller la progression en continu avec :

watch cat /proc/mdstat

Pour quitter watch, appuyez sur CTRL+C.

Attendez la fin de la synchronisation. Le statut final doit afficher [UU] pour chaque device actif, par exemple :

[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 ~]#

Ensuite, mettez à jour /etc/mdadm.conf pour refléter l’état actuel :

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

/etc/mdadm.conf devrait maintenant ressembler à ceci :

cat /etc/mdadm.conf

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

8 Préparation de GRUB

Nous approchons de la fin. Modifiez /boot/grub/menu.lst. Actuellement le démarrage est configuré depuis /dev/sdb (hd1,0). Pour assurer la résilience, copiez la première strophe du noyau (qui contient hd1), collez-la en dessous et remplacez hd1 par hd0. Commentez toutes les autres strophes afin d’obtenir :

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 |

Après modification, mettez à jour votre ramdisk :

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

Puis redémarrez :

reboot

Le système devrait démarrer normalement en utilisant le RAID présent sur les deux disques.

Conseils de dépannage rapides

  • Si le système ne boote pas après modification de GRUB, redémarrez en mode rescue depuis un média live et vérifiez /boot, /etc/mdadm.conf et que les UUID présents correspondent aux sorties de mdadm –examine.
  • Pour vérifier les composants RAID : mdadm –detail /dev/md2
  • Si une synchronisation échoue, examinez dmesg et /var/log/messages pour des erreurs de disque.

Quand cela peut échouer

  • Disque défaillant pendant la synchronisation complète: la resynchronisation reprendra une fois le disque réparé ou remplacé. Si le disque d’origine est perdu et que les données ne sont pas présentes sur l’autre disque, restaurez depuis sauvegarde.
  • Table de partitions verrouillée: le noyau peut ne pas relire la table tant que des partitions sont montées. Un redémarrage programmé peut être nécessaire.

Approches alternatives

  • RAID matériel: utiliser un contrôleur matériel pour déléguer le mirroring au contrôleur. Avantages: performance et transparence au noyau. Inconvénients: coût et dépendance au vendor.
  • LVM miroir: utiliser des volumes logiques LVM avec duplication (Mirror) pour plus de flexibilité des snapshots et redimensionnement.

Checklist opérationnelle (rôle-based)

Administrateur système — avant:

  • Sauvegarde complète récente
  • Plan de maintenance et fenêtre d’interruption
  • Accès console hors-bande (KVM / IPMI)

Administrateur système — actions:

  • Vérifier existence de /dev/md* (df -h, cat /proc/mdstat)
  • fdisk /dev/sda -> changer types en fd
  • mdadm –add pour sda1 sda2 sda3
  • Surveiller mdstat jusqu’à [UU]
  • mdadm –examine –scan > /etc/mdadm.conf
  • Modifier /boot/grub/menu.lst (ajouter entrée hd0)
  • Regénérer initrd et reboot

Mini-runbook de rollback

  1. Si le serveur ne boot pas après changement GRUB: booter en rescue depuis un média CentOS.
  2. Monter /boot et / (si nécessaire) et restaurer /boot/grub/menu.lst depuis /boot/initrd-uname -r.img_orig2 ou sauvegarde.
  3. Revenir à l’ancienne configuration /etc/mdadm.conf si elle a été sauvegardée.
  4. Redémarrer.

Critères d’acceptation

  • Les trois arrays md0, md1, md2 apparaissent en lecture comme actifs.
  • cat /proc/mdstat affiche [UU] pour chaque array.
  • Le système boote automatiquement depuis l’une ou l’autre entrée de GRUB (/dev/sda ou /dev/sdb).

1-ligne glossaire

  • mdadm: outil de gestion des ensembles RAID logiciels sous Linux.
  • initrd: image d’initialisation chargée en RAM au démarrage.
  • fd (hex): type de partition Linux raid autodetect.

Résumé

Vous avez changé le type des partitions sur /dev/sda en Linux raid autodetect, ajouté les partitions au RAID, attendu la synchronisation, mis à jour /etc/mdadm.conf, modifié GRUB pour pouvoir booter depuis les deux disques, regénéré l’initrd et redémarré. Le système redondant en RAID1 est maintenant complet.

Notes:

  • Ne supprimez pas d’array en production sans sauvegarde.
  • Tenez à jour /etc/mdadm.conf pour simplifier les reconstructions futures.

Fin de la procédure — vous avez configuré avec succès un RAID1 logiciel sur votre système CentOS 5.3.

Auteur
Édition

Matériaux similaires

Résoudre Snipping Tool cassé sous Windows 11
Windows

Résoudre Snipping Tool cassé sous Windows 11

Supprimer des photos iPhone sans les effacer d’iCloud
iPhone

Supprimer des photos iPhone sans les effacer d’iCloud

Intégrer SFTP dans l'Explorateur Windows
Tutoriel SFTP

Intégrer SFTP dans l'Explorateur Windows

Migrer photos Facebook vers Google+ avec Move2Picasa
Guides

Migrer photos Facebook vers Google+ avec Move2Picasa

Comment télécharger des films et séries Netflix pour regarder hors ligne
Streaming

Comment télécharger des films et séries Netflix pour regarder hors ligne

RAID1 : préparer /dev/sda et GRUB
Administration

RAID1 : préparer /dev/sda et GRUB