RAID offre des avantages en termes de redondance des données et d'amélioration des performances, et est une configuration recommandée pour les serveurs critiques. Par exemple, RAID 1 produit un ensemble en miroir, qui peut tolérer une panne de disque unique, tout en accélérant potentiellement les performances car les demandes de lecture peuvent être servies par n'importe quel disque de la matrice. RAID 10 (RAID 1+0) est une bande d'ensembles en miroir, ou RAID 0 d'ensembles en miroir RAID 1, qui offre un meilleur débit et une meilleure latence, tout en tolérant les pannes de plusieurs disques tant qu'aucun miroir ne perd tous ses disques.
Ce didacticiel fournit un guide étape par étape sur la façon de créer manuellement RAID 1 sur un système à deux disques ou RAID 10 sur un système à quatre disques sur un système actuellement opérationnel sur lequel CentOS / RedHat est déjà installé. Le chargeur de démarrage GRUB est également configuré de manière à ce que le système puisse toujours démarrer si l'un des disques durs tombe en panne. Ceci est particulièrement utile si vous ne pouvez pas accéder à la console sur un serveur dédié souscrit auprès d'une société d'hébergement Web, ce qui vous empêche par inadvertance de créer des périphériques RAID lors de l'installation.
La première phase de la migration d'un système en cours d'exécution vers RAID sans perte de données consiste à s'assurer que toutes les données actuelles sont répliquées sur un RAID dégradé. Dans ce didacticiel, nous allons travailler sur un système fourni avec une partition /boot de 477 Mo en tant que /dev/sda1, plus de 900 Go / partition racine en tant que /dev/sda2, 4 Go d'espace d'échange dans /dev/sda3 et un autre Partition logique /tmp de 4 Go /dev/sda5 hébergée sur la partition étendue /dev/sda4.
- Vérifiez et assurez-vous qu'aucun périphérique RAID existant n'est actuellement en cours d'exécution. Le contenu du fichier /etc/mdadm.conf et le résultat de cat /proc/mdstat doit être vide et aucun tableau ne doit être trouvé dans le fichier de configuration ou automatiquement.
mdadm --examine --scan > /etc/mdadm.conf mdadm --assemble --scan cat /proc/mdstat
- Par mesure de précaution, arrêtez toutes les baies qui peuvent être arrêtées (c'est-à-dire qui ne sont pas actuellement utilisées) :
mdadm --stop --scan
- Changez la table de partition des disques en MBR avec les commandes suivantes. Ignorez cette étape si vos disques n'ont pas de table de partition GTP.
parted /dev/sdb (parted) mktable msdos (parted) quit
Répondez Oui(s) lorsque vous y êtes invité avec "avertissement :l'étiquette de disque existante sur /dev/sdb sera détruite et toutes les données sur ce disque seront perdues. Voulez-vous continuer ?"
Envoyer la mise à jour au noyau :
partprobe /dev/sdb
Répétez la commande pour les autres lecteurs, c'est-à-dire /dev/sdc et /dev/sdd, le cas échéant.
- Partitionnez le disque dur selon vos préférences.
Dans ce didacticiel, nous utiliserons la commande suivante pour créer des partitions identiques au lecteur existant, /dev/sda :
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Répétez la commande pour les autres lecteurs, c'est-à-dire /dev/sdc et /dev/sdd, le cas échéant.
ConseilSi vous utilisez "fdisk" pour créer manuellement des partitions, vous pouvez utiliser la commande "sfdisk" ci-dessus pour répliquer les structures de partition sur d'autres disques si vous avez plus d'un disque dur supplémentaire. Par exemple, « sfdisk -d /dev/sdb | sfdisk –force /dev/sdc » répliquera les partitions de /dev/sdb vers /dev/sdc. - Change le type de partition en détection automatique RAID Linux. Pour ce faire, "fdisk" le disque dur spécifique. Par exemple,
fdisk /dev/sdb
Ensuite, émettez t commande :
Command (m for help): t Partition number (1-5): 1 Hex code (type L to list codes): fd Changed system type of partition 1 to fd (Linux raid autodetect)
Répétez le processus pour le reste des partitions sur le disque. Ensuite, rendez le changement permanent :
Command (m for help): w
- Supprimez le RAID pour les nouveaux disques, juste au cas où le RAID aurait été configuré sur les "nouveaux" disques avant :
mdadm --stop --scan mdadm --zero-superblock /dev/sdb{1..9}
Et ensuite envoyer la mise à jour au noyau :
partprobe /dev/sdb
Répétez la commande pour les autres lecteurs, c'est-à-dire /dev/sdc et /dev/sdd, le cas échéant.
- Charger les modules requis dans le noyau :
modprobe raid0 modprobe raid1 modprobe raid10
Si vous exécutez "cat /proc/mdstat" maintenant, vous devriez voir quelque chose de similaire à :
Personnalités :[raid0] [raid1] [raid10]
appareils inutilisés :Les modules liés au RAID ont été chargés dans le noyau, mais aucun ensemble RAID n'est configuré.
- Créez des périphériques RAID dans un état dégradé car le seul disque est manquant, c'est-à-dire /dev/sda qui est actuellement installé avec le système d'exploitation et utilisé pour démarrer. Comme CentOS et RedHat versions 5.0 et 6.0 utilisent Grub 0.97 par défaut, "–metadata=0.9" est spécifié afin que l'ancienne version de superbloc soit utilisée. Sinon, Grub peut répondre avec l'erreur "type de système de fichiers inconnu, type de partition 0xfd" et refuser l'installation. De plus, mdadm émettra également un avertissement pour le tableau de démarrage :ce tableau contient des métadonnées au début et peut ne pas convenir comme périphérique de démarrage. Si vous prévoyez de stocker "/boot" sur cet appareil, assurez-vous que votre chargeur de démarrage comprend les métadonnées md/v1.x ou utilisez -metadata=0.90. Le paramètre n'est pas nécessaire avec Grub2. La syntaxe suivante suppose que nous construisons des matrices RAID10 avec 4 disques. Passez en RAID1 si vous n'avez que 2 disques en modifiant les options sur « –level=1 » et supprimez les partitions de disque inexistantes.
Pour /boot, nous utilisons RAID1 :
mdadm --create --verbose /dev/md1 --metadata=0.9 --level=1 --raid-devices=4 missing /dev/sdb1 /dev/sdc1 /dev/sdd1
Pour / root, utilisez RAID10 comme prévu :
mdadm --create --verbose /dev/md2 --metadata=0.9 --level=10 --raid-devices=4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
Lorsque vous êtes invité à poursuivre la création du tableau, répondez Oui(es) . Répétez le processus pour créer des matrices RAID pour les espaces de swap et autres partitions, si disponibles.
RemarqueLa baie RAID ne peut pas être créée sur une partition étendue, avec mdadm qui répond avec /dev/sdbX n'est pas adapté à cette baie. - Vérifiez le résultat avec :
cat /proc/mdstat
Le résultat devrait être :
[raid0] [raid1] [raid10]
md5 :raid10 actif sdd5[3] sdc5[2] sdb5[1]
4189184 blocs 512K morceaux 2 quasi-copies [4/3] [_UUU]md2 :raid10 actif sdd2[3] sdc2[2] sdb2[1]
1939915776 blocs 512K morceaux 2 quasi-copies [4/3] [_UUU]
bitmap :15/15 pages [60 Ko], bloc de 65 536 Komd1 :raid1 actif sdd1[3] sdc1[2] sdb1[1]
511936 blocs [4/3] [_UUU]md3 :raid10 actif sdd3[3] sdb3[1] sdc3[2]
8387584 blocs 512K morceaux 2 quasi-copies [4/3] [_UUU]appareils inutilisés :
- Créez un fichier mdadm.conf à partir de la configuration RAID actuelle :
mdadm --examine --scan >> /etc/mdadm.conf
- Créez les systèmes de fichiers sur les nouveaux périphériques RAID :
mkfs.ext4 /dev/md1 # You may want to use mkfs.ext2 for ext2 filesystem for /boot mkfs.ext4 /dev/md2 # ext4 filesystem for / root mkswap /dev/md3 # Swap space
Créez le système de fichiers ext4 pour toute autre nouvelle matrice RAID créée.
- Remplacez les entrées de périphérique dans /etc/fstab avec les nouveaux périphériques RAID. Pour ce faire, exécutez d'abord :
blkid | grep /dev/md
Il renvoie la sortie avec l'UUID des nouveaux périphériques RAID logiciels ressemble à ceci :
/dev/md1 :UUID=”1234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″
/dev/md2 :UUID=”2234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″
/dev/md3 :UUID=”3234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”swap”
/dev/md5 :UUID=”4234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4″Dans /etc/fstab , remplacez les lignes contenant les différents points de montage par l'UUID des nouveaux systèmes de fichiers RAID /dev/mdX correspondants, c'est-à-dire la valeur après "UUID=". Par exemple,
UUID=2234abcd-12ab-12ab-12ab-123456abcdef / ext4 defaults 1 1 UUID=1234abcd-12ab-12ab-12ab-123456abcdef /boot ext4 defaults 1 2 UUID=4234abcd-12ab-12ab-12ab-123456abcdef /tmp ext4 noexec,nosuid,nodev 1 2 UUID=3234abcd-12ab-12ab-12ab-123456abcdef swap swap defaults 0 0
Laissez les tmpfs, devpts, sysfs, proc et autres intacts. Bien sûr, si vous savez ce que vous faites, ou si vous avez un système de fichiers radicalement différent, vous pouvez modifier fstab comme vous le souhaitez.
- Mettre à jour l'initrd et reconstruire l'initramfs avec le nouveau mdadm.conf :
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old dracut --mdadmconf --add-drivers "raid1 raid10" --filesystems "ext4 ext3 swap tmpfs devpts sysfs proc" --force /boot/initramfs-$(uname -r).img $(uname -r)
Remarque :Remplacez $(uname -r) par la version actuelle du noyau si les commandes ne fonctionnent pas pour vous, en particulier sur un LiveCD.
- Dans /boot/grub/menu.lst , changez la valeur de l'UUID ou de l'entrée d'étiquette pour le noyau en UUID de / (répertoire racine) sur la matrice RAID ou /dev/md2 (changez selon si votre /boot est monté sur une partition différente). Par exemple :
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=UUID=2234abcd-12ab-12ab-12ab-123456abcdef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Ou,
title CentOS (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=/dev/md2 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
Assurez-vous que NON rn_NO_DM et rn_NO_MD les paramètres de démarrage ne sont pas répertoriés en tant qu'options pour le noyau. Une fois l'édition terminée, enregistrez le menu.lst mis à jour.
- Répliquer manuellement les données existantes sur les partitions existantes vers de nouvelles partitions RAID logicielles.
Pour / root (/dev/md2, modifiez-le en conséquence si ce n'est pas le cas) :
mkdir /mnt/raid mount /dev/md2 /mnt/raid cd /mnt/raid cp -ax / . sync
Pour /boot :
rm -rf /mnt/raid/boot mkdir /mnt/raid/boot mount /dev/md1 /mnt/raid/boot cd /mnt/raid/boot cp -ax /boot/* . sync
Sur SELinux, exécutez également :touch /mnt/raid/.autorelabel pour /boot.
Si vous avez plus de partitions disponibles, telles que /var, /home, etc., répétez le processus pour ces systèmes de fichiers. Par exemple :
rm -rf /mnt/raid/home mkdir /mnt/raid/home mount /dev/md1 /mnt/raid/home cd /mnt/raid/home cp -ax /home/* . sync
ConseilIl existe plusieurs façons de copier et de dupliquer les fichiers vers de nouvelles matrices RAID. Par exemple :rsync -avxHAXS --delete --progress / /mnt/raid tar -C / -clspf - . | tar -xlspvf - find / -depth -xdev | cpio -pmd /mnt/raid
- Installez Grub 0.97 sur le MBR de tous les disques afin qu'en cas de défaillance de l'un des disques, le système puisse démarrer. Pour que cela se produise, l'étape suivante doit être effectuée : :
grub grub> root (hd0,0) grub> setup (hd0) grub> root (hd1,0) grub> setup (hd1) grub> root (hd2,0) grub> setup (hd2) grub> root (hd3,0) grub> setup (hd3) grub> quit
Ignorez le hd2 et le hd3 si vous n'avez que 2 disques durs.
- Nous allons redémarrer le serveur. Sauvegardez tout au cas où le serveur ne reviendrait pas, puis lancez :
reboot
La première partie de la configuration de la prise en charge RAID du logiciel Linux sur le système en cours d'exécution est terminée. Si le serveur est revenu, continuez avec les procédures suivantes pour rajouter le disque dur manquant (par exemple /dev/sda qui exécute le système à l'origine) aux matrices RAID. Le guide suivant suppose que le disque restant n'a pas été ajouté aux matrices RAID est /dev/sda. Modifiez si le nom de votre appareil est différent.
- Après le démarrage du serveur, confirmez que les systèmes de fichiers sont montés sur les matrices RAID, c'est-à-dire /dev/md0, /dev/md1…./dev/md3.
df -h
Résultat attendu :
Filesystem Size Used Avail Use% Mounted on /dev/md2 1.8T 1.2G 1.7T 1% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/md1 477M 76M 377M 17% /boot /dev/md5 3.9G 8.1M 3.7G 1% /tmp
- Changez la table de partition du disque en MBR avec les commandes suivantes. Ignorez cette étape si le disque n'a pas de table de partition GTP.
parted /dev/sda (parted) mktable msdos (parted) quit
Répondez Oui(s) lorsque vous y êtes invité avec "avertissement :l'étiquette de disque existante sur /dev/sdb sera détruite et toutes les données sur ce disque seront perdues. Voulez-vous continuer ?"
- Supprimez toutes les partitions existantes sur /dev/sda :
fdisk /dev/sda
Command (m for help): d Partition number (1-5): 1 Command (m for help): d Partition number (1-5): 2 Command (m for help): d Partition number (1-5): 3 Command (m for help): d Partition number (1-5): 4 Command (m for help): d Partition number (1-5): 5 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
- Supprimer tout RAID sur le disque :
mdadm --zero-superblock /dev/sda{1..9}
Envoyer la mise à jour au noyau :
partprobe /dev/sda
- Copiez la structure de la partition depuis /dev/sdb :
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
- Exécuter :
fdisk -l
Assurez-vous que toutes les partitions qui forment les matrices RAID sont de fd Types de partition de détection automatique RAID Linux (valeur dans la colonne "Id"). S'il s'agit de Linux de type 83, utilisez fdisk, cfdisk ou parted pour le remplacer par "fd". Par exemple :
Envoyer la mise à jour au noyau s'il y a un changement.
partprobe /dev/sda
- Ajoutez les partitions dans /dev/sda aux matrices RAID respectives pour rendre les matrices complètes (4 disques sur RAID10 ou 2 disques sur RAID1) :
mdadm --add /dev/md1 /dev/sda1 mdadm --add /dev/md2 /dev/sda2 mdadm --add /dev/md3 /dev/sda3
Répétez l'opération pour les autres partitions, le cas échéant.
- Vérifiez la progression du processus de récupération RAID avec :
cat /proc/mdstat
Le résultat devrait être :
[raid0] [raid1] [raid10]
md5 :raid10 actif sdd5[3] sdc5[2] sdb5[1]
4189184 blocs 512K morceaux 2 quasi-copies [4/3] [_UUU]md2 :raid10 actif sdd2[3] sdc2[2] sdb2[1]
1939915776 blocs 512K morceaux 2 quasi-copies [4/3] [_UUU]
[====>…………………………….] récupération =37.8% (177777777/388888888) finition=60.5min vitesse=100000K/sec
bitmap :15/15 pages [60 Ko], bloc de 65 536 Komd1 :raid1 actif sdd1[3] sdc1[2] sdb1[1]
511936 blocs [4/3] [_UUU]md3 :raid10 actif sdd3[3] sdb3[1] sdc3[2]
8387584 blocs 512K morceaux 2 quasi-copies [4/3] [_UUU]appareils inutilisés :
watch -n 5 cat /proc/mdstat
- Recréez l'enregistrement de démarrage sur le MBR /dev/sda avec grub pour vous assurer que le système peut démarrer sur n'importe quel disque :
grub grub> root (hd0,0) grub> setup (hd0) grub> quit
- Lors de la restauration de toutes les matrices RAID, effectuez un redémarrage du système.
reboot
- Lorsque le système est redevenu opérationnel et en ligne, félicitations, vous utilisez maintenant un RAID logiciel.
Une fois RAID activé avec mdadm, le plus important est de s'assurer que le système de notification d'alerte par e-mail fonctionne. Le RAID logiciel Linux peut surveiller lui-même tout problème éventuel sur les matrices RAID, tel qu'une panne de disque, et peut envoyer une notification par e-mail lorsqu'il détecte des erreurs possibles.
Pour vérifier que la notification par e-mail fonctionne, exécutez la commande suivante :
mdadm --monitor --test --oneshot /dev/md1
Vous devriez recevoir un e-mail avec le contenu de /proc/mdstat. Si vous ne recevez pas l'e-mail, assurez-vous que votre système est capable d'envoyer des e-mails et vérifiez le MAILADDR valeur dans mdadm.conf . Il devrait lire quelque chose comme :
MAILADDR [email protected]