Remarque :

Configuration de volumes logiques RAID sur Oracle Linux

Introduction

LVM RAID est un moyen de créer un volume logique (LV) qui utilise plusieurs périphériques physiques pour améliorer les performances ou tolérer les pannes de périphériques. Dans la LVM, les périphériques physiques sont des volumes physiques (PV) dans un seul groupe de volumes (VG).

Ce tutoriel utilise les utilitaires Oracle Linux Volume Manager pour créer un volume logique RAID, puis pour résoudre une panne de disque.

Objectifs

Prérequis

Tout système Oracle Linux 8 avec les configurations suivantes :

Environnement des exercices de configuration

Remarque : lorsque vous utilisez l'environnement d'atelier gratuit, reportez-vous à Oracle Linux Lab Basics pour obtenir des instructions de connexion et d'utilisation.

  1. S'il n'est pas déjà connecté, ouvrez un terminal et connectez-vous via ssh à chaque instance mentionnée ci-dessus.

    ssh oracle@<ip_address_of_instance>
    
  2. Vérifiez que les volumes de blocs existent.

    sudo lsblk
    

    La sortie de l'environnement d'atelier gratuit doit afficher /dev/sda pour le système de fichiers existant et les disques disponibles /dev/sdb, /dev/sdc, /dev/sdd et /dev/sde. Il existe également deux disques supplémentaires (/dev/sdf, /dev/sdg) que nous utiliserons ultérieurement.

Volume physique (PV)

  1. Créez les volumes physiques (PV) à l'aide des disques disponibles.

    sudo pvcreate -v /dev/sd[b-e]
    

    Exécutez la commande avec l'option -v pour obtenir des informations détaillées.

  2. Vérifier la création de PV.

    sudo pvs
    

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo pvs
      PV         VG        Fmt  Attr PSize  PFree 
      /dev/sda3  ocivolume lvm2 a--  45.47g     0 
      /dev/sdb             lvm2 ---  50.00g 50.00g
      /dev/sdc             lvm2 ---  50.00g 50.00g
      /dev/sdd             lvm2 ---  50.00g 50.00g
      /dev/sde             lvm2 ---  50.00g 50.00g
    

Groupe de volumes (VG)

  1. Créez le groupe de volumes (VG) à l'aide des volumes physiques nouvellement créés.

    sudo vgcreate -v foo /dev/sd[b-e]
    
  2. Vérifiez la création de VG.

    sudo vgs
    

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo vgs
      VG             #PV #LV #SN Attr   VSize   VFree  
      foo              4   0   0 wz--n- 199.98g 199.98g
      ocivolume        1   2   0 wz--n-  45.47g      0 
    

Volume logique (LV)

  1. Créez le volume logique (LV) RAID.

    sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
    
    • --type : définir le niveau RAID. LVM prend en charge les niveaux RAID 0, 1, 4, 5, 6 et 10.
    • -i : définit le nombre (n) de bandes (périphériques) pour un volume logique RAID 4/5/6. Un LV raid5 requiert n+1 périphériques.
    • -L : taille totale de la baie RAID.
    • -n : nom de la baie RAID.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
      Using default stripesize 64.00 KiB.
      Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents).
      Logical volume "rr" created.
    

    Pour plus d'informations, consultez la page manuelle lvmraid(7).

  2. Vérifier la création de la LV.

    sudo lvdisplay foo
    

    La sortie affiche tous les volumes logiques contenus dans le VG foo.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvdisplay foo
      --- Logical volume ---
      LV Path                /dev/foo/rr
      LV Name                rr
      VG Name                foo
      LV UUID                vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2
      LV Write Access        read/write
      LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000
      LV Status              available
      # open                 0
      LV Size                5.00 GiB
      Current LE             1281
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     1024
      Block device           252:10
    
  3. Affichez le type de LV.

    sudo lvs -o name,segtype foo/rr
    
    • La commande lvs peut utiliser le chemin LV complet comme option pour affiner les résultats.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr
      LV     Type 
      rr     raid5
    

Création d'un système de fichiers

  1. Créez un système de fichiers XFS sur la LV RAID.

    sudo mkfs.xfs -f /dev/foo/rr
    
    • -f : force l'écrasement d'un système de fichiers existant.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr
    meta-data=/dev/foo/rr            isize=512    agcount=8, agsize=163952 blks
             =                       sectsz=4096  attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=1311616, imaxpct=25
             =                       sunit=16     swidth=48 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=4096  sunit=1 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    

    Remarque : le système de fichiers XFS ne peut pas réduire sa taille après sa création. Toutefois, la commande xfs_growfs peut l'agrandir.

Montage de la LV RAID

  1. Montez le système de fichiers.

    sudo mkdir -p /u01
    sudo mount /dev/foo/rr /u01
    
  2. Signalez l'utilisation du disque du système de fichiers.

    df -h
    

    Exemple de sortie :

    [oracle@ol-node01 ~]$ df -h
    Filesystem                         Size  Used Avail Use% Mounted on
    ...
    /dev/mapper/foo-rr                 5.0G   69M  5.0G   2% /u01
    

Redimensionnement d'une LV RAID

Il existe plusieurs façons de redimensionner une LV RAID :

Important : La rétrécissement d'une LV présente des risques et peut entraîner une perte de données. Lors de l'exécution d'un système de fichiers XFS sur la LV, évitez de réduire la LV car XFS ne permet pas de réduire la taille du système de fichiers.

Augmenter la capacité RAID LV

  1. En utilisant l'espace libre disponible dans le VG, augmentez la taille RAID LV à 10G.

    sudo lvresize -L 10G foo/rr
    

    Pour augmenter la taille de 10G, utilisez l'option -L +10G à la place.

  2. Vérifiez que la valeur LV est passée à 10G.

    sudo lvs foo/rr
    

    LSize doit afficher 10g.

  3. Développez le système de fichiers.

    sudo xfs_growfs /u01
    
  4. Signalez l'utilisation mise à jour du disque du système de fichiers.

    df -h
    
  5. Vérifiez l'état de synchronisation RAID avant de continuer.

    Avertissement : Si vous passez trop rapidement à l'étape suivante, une erreur peut s'afficher car foo/rrr n'est pas synchronisé.

    Cette erreur se produit si la synchronisation ne s'est pas terminée après le redimensionnement de la LV RAID ci-dessus.

    Vérifiez la LV RAID avec watch sudo lvs foo/rr et attendez que le champ Cpy%Sync atteigne 100 %. Une fois que Cpy%Sync a atteint 100 %, utilisez ctrl-c pour quitter la commande watch.

Pour plus d'informations, reportez-vous aux pages de manuel lvresize(8), lvextend(8) et lvreduce(8).

Augmenter les bandes sur la LV RAID

La modification du nombre de bandes sur une LV RAID augmente la capacité globale et est possible sur RAID4/5/6/10. Chaque bande supplémentaire nécessite un nombre égal de volumes physiques (périphériques) non alloués au sein du groupe de volumes.

  1. Vérifiez quels volumes physiques (PV) existent dans VG foo.

    sudo pvs
    

    Dans la sortie /dev/sdb, /dev/sdc, /dev/sdd et /dev/sde sont tous associés à VG foo.

  2. Déterminez s'il existe des volumes physiques non utilisés.

    sudo pvdisplay -m /dev/sd[b-e]
    

    Exemple de sortie :

      --- Physical volume ---
      PV Name               /dev/sdb
      VG Name               foo
      PV Size               50.00 GiB / not usable 4.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              12799
      Free PE               11944
      Allocated PE          855
      PV UUID               Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT
       
      --- Physical Segments ---
      Physical extent 0 to 0:
        Logical volume	/dev/foo/rr_rmeta_0
        Logical extents	0 to 0
      Physical extent 1 to 854:
        Logical volume	/dev/foo/rr_rimage_0
        Logical extents	0 to 853
      Physical extent 855 to 12798:
        FREE
    ...
    

    La commande pvdisplay avec l'option -m affiche la mise en correspondance des extents physiques avec les volumes logiques et les extents logiques. La commande PV /dev/sdb de l'exemple de sortie affiche les extents physiques associés à la LV RAID. Il doit en être de même pour /dev/sdc, /dev/sdd et /dev/sde.

  3. Ajoutez un autre PV au VG.

    Etant donné que la LV RAID existante utilise tous les volumes physiques existants, ajoutez /dev/sdf au métrage PV.

    sudo vgextend foo /dev/sdf
    

    La sortie indique que la commande vgextend convertit /dev/sdf en PV avant de l'ajouter au fichier VG.

  4. Ajoutez une bande à la LV RAID.

    sudo lvconvert --stripes 4 foo/rr
    

    Répondez avec y à l'invite.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr
      Using default stripesize 64.00 KiB.
      WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents!
      Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity.
    Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y
      Logical volume foo/rr successfully converted.
    
  5. Vérifiez la nouvelle taille de la LV.

    sudo lvs foo/rr
    

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvs foo/rr
      LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      rr   foo rwi-aor--- 13.34g                                    2.24          
    

    La capacité (LSize) a augmenté de 3.34g et la synchronisation (Cpy%Sync) commence. La synchronisation est le processus qui rend tous les périphériques d'une LV RAID cohérents les uns avec les autres, et une synchronisation complète devient nécessaire lorsque les périphériques de la LV RAID sont modifiés ou remplacés.

  6. Vérifiez le statut de la synchronisation.

    Exécutez la vérification jusqu'à ce que la progression atteigne 100 %.

    watch sudo lvs foo/rr
    

    Une fois que Cpy%Sync a atteint 100 %, utilisez ctrl-c pour quitter la commande watch.

    La commande watch peut également être utilisée comme suit :

    • Exécutez watch -n 5 sudo lvs foo/rr pour actualiser toutes les 5 au lieu des 2 par défaut.
    • Exécutez timeout 60 watch -n 5 sudo lvs foo/rr pour quitter automatiquement après les années 60.
  7. Affichez la nouvelle plage de segments et PV, qui inclut désormais /dev/sdf.

    sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
    

Récupération d'un périphérique RAID défaillant dans une LV

Les baies RAID peuvent continuer à s'exécuter avec des périphériques défaillants. La suppression d'un périphérique pour des types RAID autres que RAID1 impliquerait la conversion vers un RAID de niveau inférieur (RAID5 vers RAID0 dans ce cas).

LVM permet de remplacer un périphérique défaillant dans un volume RAID en une seule étape à l'aide de la commande lvconvert --repair pour les périphériques défaillants plutôt que de retirer un lecteur défaillant et éventuellement d'ajouter un remplacement.

  1. Vérifiez la disposition actuelle de RAID LV.

    sudo lvs --all --options name,copy_percent,devices foo
    
  2. Simulez un échec sur /dev/sdd.

    echo 1 | sudo tee /sys/block/sdd/device/delete
    
  3. Après l'échec, vérifiez à nouveau la disposition RAID LV.

    sudo lvs --all --options name,copy_percent,devices foo
    

    Notez les périphériques [unknown].

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo
      WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc.
      WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd).
      LV            Cpy%Sync Devices                                                                   
      rr            100.00   rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0)
      [rr_rimage_0]          /dev/sdb(855)                                                             
      [rr_rimage_0]          /dev/sdb(1)                                                               
      [rr_rimage_1]          /dev/sdc(855)                                                             
      [rr_rimage_1]          /dev/sdc(1)                                                               
      [rr_rimage_2]          [unknown](855)                                                            
      [rr_rimage_2]          [unknown](1)                                                              
      [rr_rimage_3]          /dev/sde(855)                                                             
      [rr_rimage_3]          /dev/sde(1)                                                               
      [rr_rimage_4]          /dev/sdf(855)                                                             
      [rr_rimage_4]          /dev/sdf(1)                                                               
      [rr_rmeta_0]           /dev/sdb(0)                                                               
      [rr_rmeta_1]           /dev/sdc(0)                                                               
      [rr_rmeta_2]           [unknown](0)                                                              
      [rr_rmeta_3]           /dev/sde(0)                                                               
      [rr_rmeta_4]           /dev/sdf(0)        
    
  4. Remplacez le périphérique défaillant.

    sudo lvconvert --repair foo/rr
    

    Répondez avec y à l'invite.

    La commande ne parvient pas à trouver l'espace ou le périphérique disponible à utiliser dans le VG.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr
      WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc.
      WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd).
      WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc.
    Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
      Insufficient free space: 856 extents needed, but only 0 available
      Failed to replace faulty devices in foo/rr.
    

    Avertissement : si l'erreur contient un message "Unable to replace devices in foo/rr alors qu'elle n'est pas synchronisée", vérifiez que la valeur RAID-LV est synchronisée en exécutant watch sudo lvs foo/rr et en confirmant que Cpy%Sync est de 100 %. Puis réessayez la commande lvconvert.

  5. Ajoutez le périphérique /dev/sdg au VG

    sudo vgextend foo /dev/sdg
    

    Les messages WARNING dans la sortie sont dus au lecteur défaillant toujours manquant.

  6. Réessayez de remplacer le lecteur défaillant.

    sudo lvconvert --repair foo/rr
    

    Répondez à nouveau avec y à l'invite.

    La sortie affiche à nouveau les messages WARNING relatifs au lecteur manquant, mais la commande a remplacé le périphérique défectueux dans le VG.

  7. Examinez la présentation.

    sudo lvs --all --options name,copy_percent,devices foo
    

    Notez que /dev/sdg a remplacé toutes les entrées de périphérique [unknown].

  8. Retirez le périphérique défaillant du VG.

    Les utilitaires LVM continueront à signaler que LVM ne parvient pas à trouver le périphérique défaillant tant qu'il n'est pas retiré du VG.

    sudo vgreduce --removemissing foo
    

    Les messages WARNING dans la sortie sont dus au lecteur défaillant toujours manquant.

  9. Vérifiez l'état de synchronisation RAID avant de continuer.

    Avertissement : Si vous passez trop rapidement à la section suivante, le message d'erreur suivant peut s'afficher :

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr
      foo/rr state is currently "recover".  Unable to switch to "check".
    

    Cette erreur se produit si la synchronisation ne s'est pas terminée après l'ajout de bandes à la LV RAID.

    Vérifiez la LV RAID avec watch sudo lvs foo/rr et attendez que le champ Cpy%Sync atteigne 100 %.

Vérification de la cohérence des données dans RAID LV (redémarrage)

LVM permet de nettoyer la LV RAID, qui lit tous les blocs de données et de parité d'une baie et vérifie la cohérence.

  1. Lancez un nettoyage en mode vérification.

    sudo lvchange --syncaction check foo/rr
    
  2. Afficher le statut de l'action de nettoyage.

    watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
    

    Exemple de sortie :

    [oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
      LV   SyncAction Cpy%Sync
      rr   check      30.08   
    
  3. Une fois le nettoyage (syncronisation) terminé, affichez le nombre de blocs incohérents trouvés.

    sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
    

    L'option raid_sync_action affiche le champ SyncAction avec l'une des valeurs suivantes :

    • idle : toutes les actions sont terminées.
    • resync : initialisation ou récupération après une panne système.
    • recover : remplacement d'un périphérique dans le groupe.
    • check : recherche des différences.
    • repair : recherche et réparation des différences.

    Exemple de sortie :

    [oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr
      LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert SyncAction Mismatches
      rr   foo rwi-aor--- 13.34g                                    44.42            check               0
    

    La sortie affiche 0 incohérence (Mismatches).

  4. (Facultatif) Corrigez les différences dans le tableau.

    Cette étape est facultative car il n'existe probablement aucune différence dans cet exemple de tableau.

    sudo lvchange --syncaction repair foo/rr
    
  5. (Facultatif) Vérifiez le statut de la réparation.

    sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
    

    Notez que le champ SyncAction est remplacé par repair.

Pour plus d'informations, reportez-vous aux pages de manuel lvchange(8) et lvmraid(7).

Pour plus d'informations:

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir explorateur Oracle Learning.

Pour consulter la documentation du produit, consultez Oracle Help Center.