GNU/Linux >> Tutoriels Linux >  >> Linux

Créer et migrer un système RedHat / CentOS existant vers RAID 1 / RAID 10

Le système Linux a une prise en charge intégrée du logiciel RAID, via des périphériques MD alias Linux Software RAID. La plupart des distributions Linux telles que Red Hat Enterprise Linux (RHEL) et CentOS vous permettent de configurer facilement des matrices RAID lors de l'installation du système d'exploitation. Cependant, si vous disposez déjà d'un système entièrement fonctionnel et opérationnel avec plusieurs disques durs, mais que vous avez jusqu'à présent fonctionné sur un système à disque unique, la conversion d'un disque unique en RAID implique beaucoup plus de risques et de possibilités de défaillance du système.

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.

  1. 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
  2. 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
  3. 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.

  4. 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.
  5. 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

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

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

  8. 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.
  9. 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 Ko

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

  10. Créez un fichier mdadm.conf à partir de la configuration RAID actuelle :
    mdadm --examine --scan >> /etc/mdadm.conf
  11. 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.

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

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

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

  15. 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
  16. 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.

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

  1. 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 
  2. 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 ?"

  3. 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.
  4. Supprimer tout RAID sur le disque :
    mdadm --zero-superblock /dev/sda{1..9}

    Envoyer la mise à jour au noyau :

    partprobe /dev/sda
  5. Copiez la structure de la partition depuis /dev/sdb :
    sfdisk -d /dev/sdb | sfdisk --force /dev/sda
  6. 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
  7. 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.

  8. 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 Ko

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

    ConseilVous pouvez actualiser en continu le contenu du fichier /proc/mdstat avec la commande suivante, qui s'actualise toutes les 5 secondes :

    watch -n 5 cat /proc/mdstat
  9. 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
  10. Lors de la restauration de toutes les matrices RAID, effectuez un redémarrage du système.
    reboot
  11. 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]

Linux
  1. Comment augmenter Swap sous Linux / CentOS / Redhat / Ubuntu

  2. Comment migrer les règles Iptables existantes vers Nftables dans CentOS/RHEL 8

  3. RedHat / CentOS :Gérer le RAID logiciel avec mdadm

  4. Comment créer une partition système EFI ?

  5. Correction de l'horloge système CentOS

Configurer le RAID externe sur Ubuntu/Centos/RedHat

Centos contre RedHat :15 faits intéressants à connaître

Comment migrer CentOS 8 vers le flux CentOS

Comment installer Dgraph sur CentOS 8

Comment migrer le flux CentOS vers AlmaLinux

Comment installer Nginx sur CentOS 8