Monter le volume « iSCSI » sur le disque « Red Hat Enterprise Linux » 9

Apprenez à monter un volume Block Storage for Classic sur RHEL 9 avec des E/S multipath pour un accès redondant et performant au stockage.

Suivez le tutoriel pour monter un volume IBM Cloud® Block Storage for Classic sur un serveur virtuel avec le système d'exploitation Red Hat Enterprise Linux® 9. Vous allez créer deux connexions entre une interface réseau de votre hôte et deux adresses IP cible de la grappe de stockage.

Si vous utilisez un autre système d'exploitation de type « Linux® », consultez la documentation de votre distribution spécifique et assurez-vous que le multipath prend en charge le protocole ALUA (Asymmetric Logical Unit Access) pour la priorité des chemins.

Avant de commencer

  1. Assurez-vous que l'hôte devant accéder au volume « Block Storage for Classic » est autorisé. Pour plus d'informations, voir Autoriser l'hôte dans la consoleAutoriser l'hôte à partir de la CLIAutoriserl'hôte avec Terraform.

  2. Une connexion VPN active est nécessaire pour accéder au réseau privé de IBM Cloud et pour interagir avec plusieurs services.

  3. Établissez une connexion SSH avec votre serveur. L'adresse IP, le nom d'utilisateur et le mot de passe se trouvent dans la console. Depuis le menu Icône Menu, cliquez sur l'icône Infrastructure VPC > Infrastructure classique > Appareils. Localisez ensuite votre serveur dans la liste et cliquez sur son nom pour afficher ses détails.

Si plusieurs hôtes montent le même volume Block Storage for Classic sans être gérés de manière coopérative, vos données risquent d'être corrompues. Une corruption du volume peut se produire si des modifications sont apportées au volume par plusieurs hôtes en même temps. Vous avez besoin d'un système de fichiers à disque partagé compatible avec les clusters pour éviter les pertes de données, tel que Microsoft Cluster Shared Volumes ( CSV ), Red Hat Global File System ( GFS2 ), VMware® VMFS, et d'autres. Pour plus d'informations, consultez la documentation de votre système d'exploitation.

Mise à jour du système d'exploitation et installation des utilitaires iSCSI et multipath

Assurez-vous que votre système est à jour et qu'il comprend les paquets iscsi-initiator-utils et device-mapper-multipath. Utilisez les commandes suivantes pour installer les packages.

  1. Mettre à jour le système d'exploitation.

    sudo dnf update
    
  2. Installer l'utilitaire multipath

    sudo dnf -y install device-mapper-multipath
    

    Lorsque le paquet est installé, entrez la commande mpathconf --enable --user_friendly_names n pour l'activer.

  3. Installer l'utilitaire ISCSI

    sudo dnf -y install iscsi-initiator-utils
    

    Une fois le paquet installé, démarrez-le à l'aide de la commande systemctl start iscsid.

Mettre à jour les fichiers de configuration d' iSCSI

  1. Mettez à jour le fichier /etc/iscsi/initiatorname.iscsi en y indiquant l'IQN obtenu via la console d' IBM Cloud®.

    1. L'exemple suivant montre comment vérifier le nom de l'initiateur actuel.
    [root@vsi4classic ~]# cat /etc/iscsi/initiatorname.iscsi
    InitiatorName=iqn.1994-05.com.redhat:7acdadcdc20
    
    1. Ouvrez le fichier dans un éditeur de texte :
    vi /etc/iscsi/initiatorname.iscsi
    
    1. Saisissez l'IQN dans le format suivant InitiatorName=<value-from-the-Portal>, comme vous pouvez le voir dans l'exemple suivant. Remplacez la valeur de l'IQN par la vôtre.
    InitiatorName=iqn.2025-11.com.ibm:sl02su1414935-v154455886
    
    1. Enregistrez le fichier (:w) et quittez (:x).
  2. Décommentez et mettez à jour les entrées suivantes dans /etc/iscsi/iscsid.conf en utilisant le nom d'utilisateur et le mot de passe de la console IBM Cloud®. Utilisez des majuscules pour les noms CHAP (Challenge-Handshake Authentication Protocol).

    node.session.auth.authmethod = CHAP
    node.session.auth.username = <Username-value-from-Portal>
    node.session.auth.password = <Password-value-from-Portal>
    discovery.sendtargets.auth.authmethod = CHAP
    discovery.sendtargets.auth.username = <Username-value-from-Portal>
    discovery.sendtargets.auth.password = <Password-value-from-Portal>
    

    Ne modifiez pas les autres paramètres CHAP. Le stockage « IBM Cloud® » utilise uniquement l'authentification unidirectionnelle. N'activez pas l'authentification CHAP mutuelle.

  3. Redémarrez le service iscsid.

    systemctl restart iscsid
    
  4. Validez que la configuration est correcte en lançant une recherche sur la baie iSCSI.

    Block Storage for Classic nécessite une détection dynamique des cibles utilisant la méthode SendTargets. N'utilisez pas la configuration statique des nœuds, car elle n'est pas évolutive et peut entraîner des problèmes de connectivité lorsque des modifications sont apportées au stockage (comme l'autorisation ou la désautorisation d'accès des hôtes aux LUN). La découverte dynamique garantit que votre hôte détecte automatiquement toute modification apportée aux portails cibles.

    iscsiadm -m discovery -t sendtargets -p TARGET IP
    

    Si l'adresse IP et les informations d'accès s'affichent, cela signifie que la détection a abouti.

    [root@vsi4classic ~]# iscsiadm -m discovery -t sendtargets -p 161.26.99.113
     161.26.99.113:3260,1034 iqn.1992-08.com.netapp:stfdal1006
     161.26.99.110:3260,1030 iqn.1992-08.com.netapp:stfdal1006
    

Configurez le multi-accès

Vous configurez DM Multipath à l'aide de l'utilitaire mpathconf , qui crée le fichier de configuration multipath /etc/multipath.conf``. Pour plus d'informations sur l'utilitaire mpathconf, consultez la page de manuel mpathconf(8).

  1. Si vous ne l'avez pas encore fait, entrez la commande mpathconf avec l'option --enable.

    mpathconf --enable --user_friendly_names n
    
  2. Modifiez le fichier /etc/multipath.conf avec nano, vi, ou un autre éditeur de votre choix.

    sudo vi /etc/multipath.conf
    
  3. Ajoutez la configuration minimale suivante.

    defaults {
    user_friendly_names no
    find_multipaths on
    max_fds max
    flush_on_last_del yes
    queue_without_daemon no
    dev_loss_tmo infinity
    fast_io_fail_tmo 5
    }
    # All data in the following section must be specific to your system.
    blacklist {
    wwid "SAdaptec*"
    devnode "^hd[a-z]"
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^cciss.*"
    }
    devices {
    device {
    vendor "NETAPP"
    product "LUN"
    path_grouping_policy group_by_prio
    features "2 pg_init_retries 50"
    no_path_retry queue
    prio "alua"
    path_checker tur
    failback immediate
    path_selector "round-robin 0"
    hardware_handler "1 alua"
    rr_weight uniform
    rr_min_io 128
    }
    }
    

    La section « initial defaults » du fichier de configuration permet de configurer votre système de manière à ce que les noms des périphériques multipath se présentent sous la forme /dev/mapper/mpath n, où mpath n correspond au WWID (World Wide Identifier) du périphérique.

  4. Enregistrez le fichier de configuration et quittez l'éditeur.

  5. Exécutez la commande suivante.

    systemctl start multipathd.service
    

    Si vous devez modifier le fichier de configuration multipath après avoir démarré le démon multipath, vous devez exécuter la commande « systemctl reload multipathd.service » pour que les modifications prennent effet.

Reconnaissez le périphérique de stockage et connectez-vous.

L'utilitaire iscsiadm est un outil en ligne de commande qui sert à détecter les cibles d' iSCSI, à s'y connecter, ainsi qu'à accéder à la base de données open-iscsi et à la gérer. Pour plus d'informations, consultez la page de manuel iscsiadm(8). Lors de cette étape, reconnaissez le périphérique à l'aide de l'adresse IP cible obtenue à partir de la console IBM Cloud® .

  1. Exécutez la reconnaissance sur la grappe iSCSI.

    iscsiadm -m discovery -t sendtargets -p TARGET IP
    

    Si l'adresse IP et les informations d'accès s'affichent, cela signifie que la détection a abouti.

  2. Connectez-vous à la grappe iSCSI.

    iscsiadm -m node --login
    
    [root@vsi4classic ~]# iscsiadm -m node --login
    Login to [iface: default, target: iqn.1992-08.com.netapp:stfdal1006, portal: 161.26.99.110,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:stfdal1006, portal: 161.26.99.113,3260] successful.
    

Vérification de la configuration

  1. Validez la création de la session iSCSI.

    iscsiadm -m session -o show
    
  2. Validez l'existance de plusieurs chemins.

    multipath -l
    

    Cette commande affiche les chemins d'accès. Si la configuration est correcte, chaque volume comporte un seul groupe, avec un nombre de chemins d'accès égal au nombre de sessions d' iSCSI. Il est possible de monter un volume en utilisant un seul chemin d'accès, mais il est important que les connexions soient établies sur les deux chemins afin d'éviter toute interruption de service.

    [root@vsi4classic ~]# multipath -l
    3600a0980383056716724514550666270 dm-0 NETAPP,LUN C-Mode
    size=20G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
    |-+- policy='round-robin 0' prio=0 status=active
    | `- 2:0:0:0 sda 8:0  active undef running
    `-+- policy='round-robin 0' prio=0 status=enabled
      `- 3:0:0:0 sdb 8:16 active undef running
    

    Si MPIO n'est pas configuré correctement, votre périphérique de stockage peut se déconnecter et apparaître comme étant hors ligne en cas de panne réseau ou de maintenance par les équipes d'IBM Cloud®. MPIO offre un niveau supplémentaire de connectivité lors de ces événements et maintient une session établie avec le volume, avec des opérations de lecture/écriture actives.

  3. Répertoriez les tables de partition pour le périphérique connecté.

    fdisk -l | grep /dev/mapper
    

    Par défaut, l'unité de stockage se connecte à /dev/mapper/<wwid>. L'ID WWID est persistant tant que le volume existe. La commande génère une sortie semblable à l'exemple ci-après.

    [root@vsi4classic ~]# fdisk -l | grep /dev/mapper
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    

    Dans l'exemple, la chaîne 3600a0980383056716724514550666270 est le WWID. Votre application doit utiliser le WWID. Il est également possible d'attribuer des noms plus faciles à lire en utilisant les mots-clés « user_friendly_names » ou « alias » dans multipath.conf. Pour plus d'informations, consultez la page de manuel d' multipath.conf.

    Le volume est maintenant monté et accessible sur l'hôte. Vous pouvez créer ensuite un système de fichiers.

Création d'un système de fichiers (facultatif)

Procédez comme indiqué ci-après pour créer un système de fichiers sur le volume récemment monté. Un système de fichiers est nécessaire pour permettre à la plupart des applications d'utiliser le volume. Utilisez fdisk pour les unités inférieures à 2 To et parted pour un disque supérieur à 2 To.

Création d'un système de fichiers avec fdisk

  1. Obtenez le nom du disque.

    fdisk -l | grep /dev/mapper
    
    [root@vsi4classic ~]# fdisk -l | grep /dev/mapper
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    
    [root@vsi4classic ~]# fdisk -l /dev/mapper/3600a0980383056716724514550666270
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 65536 bytes
    
  2. Créez une partition sur le disque. L'exemple suivant montre la création de la partition avec les valeurs par défaut.

    [root@vsi4classic ~]# fdisk /dev/mapper/3600a0980383056716724514550666270
    
    Welcome to fdisk (util-linux 2.37.4).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x2aa2e16c.
    
    Command (m for help): n
    Partition type
      p   primary (0 primary, 0 extended, 4 free)
      e   extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-41943039, default 2048): 2048
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): 41943039
    
    Created a new partition 1 of type 'Linux' and of size 20 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Re-reading the partition table failed.: Invalid argument
    
    The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).
    
  3. Créez un système de fichiers sur la nouvelle partition.

    • La nouvelle partition est répertoriée avec le disque, de la même manière que XXXp1, suivie de la taille, du type (83) et de Linux®. Notez le nom de la partition, vous en aurez besoin à l'étape suivante. (XXXp1 représente le nom de la partition.)

      [root@vsi4classic ~]# fdisk -l /dev/mapper/3600a0980383056716724514550666270
      Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 65536 bytes
      Disklabel type: dos
      Disk identifier: 0x2aa2e16c
      
      Device                                           Boot Start      End  Sectors Size Id Type
      /dev/mapper/3600a0980383056716724514550666270p1        2048 41943039 41940992  20G 83 Linu
      
    • Créez le système de fichiers :

      mkfs.ext3 /dev/mapper/XXXp1
      
      [root@vsi4classic ~]# mkfs.ext3 /dev/mapper/3600a0980383056716724514550666270p1
      mke2fs 1.46.5 (30-Dec-2021)
      Discarding device blocks: done
      Creating filesystem with 5242624 4k blocks and 1310720 inodes
      Filesystem UUID: 09e7f833-32b7-4c7f-ab68-8c6083cb8a63
      Superblock backups stored on blocks:
          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
          4096000
      
      Allocating group tables: done
      Writing inode tables: done
      Creating journal (32768 blocks): done
      Writing superblocks and filesystem accounting information: done
      
  4. Créez un point de montage pour le système de fichiers et montez-le.

    • Créez un nom de partition PerfDisk ou un emplacement où monter le système de fichiers.

      mkdir /PerfDisk
      
    • Montez le stockage avec le nom de partition.

      mount /dev/mapper/XXXp1 /PerfDisk
      
    • Vérifiez que votre nouveau système de fichiers est répertorié.

      df -h
      
      [root@vsi4classic ~]# mkdir /PerfDisk
      [root@vsi4classic ~]# mount /dev/mapper/3600a0980383056716724514550666270p1 /PerfDisk
      [root@vsi4classic ~]# df -h
      Filesystem                                       Size  Used Avail Use% Mounted on
      devtmpfs                                         4.0M     0  4.0M   0% /dev
      tmpfs                                            469M     0  469M   0% /dev/shm
      tmpfs                                            188M   11M  177M   6% /run
      /dev/xvda2                                        24G  2.0G   21G   9% /
      /dev/xvda1                                       974M  320M  588M  36% /boot
      tmpfs                                             94M     0   94M   0% /run/user/0
      /dev/mapper/3600a0980383056716724514550666270p1   20G  156K   19G   1% /PerfDisk
      
  5. Pour activer le montage automatique au démarrage, ajoutez le nouveau système de fichiers au fichier /etc/fstab du système.

    • Ajoutez la ligne suivante à la fin du fichier /etc/fstab (en utilisant le nom de partition provenant de l'étape 3).
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

    Pour plus d'informations, voir Une introduction au fichier Linux /etc/fstab.

Création d'un système de fichiers avec parted

Sur Red Hat Enterprise Linux® 9, parted est préinstallé. Toutefois, si nécessaire, vous pouvez l'installer en exécutant la commande suivante.

dnf install parted

Pour créer un système de fichiers avec parted, procédez comme suit :

  1. Lancez le shell interactif d' parted.

    parted
    
  2. Créez une partition sur le disque.

    1. Sauf indication contraire, l'utilitaire « parted » utilise votre disque principal, qui est généralement le disque « /dev/sda ». Basculez vers le disque que vous souhaitez partitionner à l'aide de la commande select. Remplacez XXX par le nom de votre nouveau périphérique.

      select /dev/mapper/XXX
      
    2. Exécutez la commande « print » pour vérifier que vous vous trouvez bien sur le bon disque.

      print
      
    3. Créez une table de partition.

      mklabel gpt
      
    4. Parted peut être utilisé pour créer des partitions de disque logiques et primaires, car les procédures sont identiques. Pour créer une partition, l'utilitaire utilise mkpart. Vous pouvez indiquer des paramètres supplémentaires de type primaire ou logique en fonction du type de partition que vous souhaitez créer.

      mkpart
      

      Les unités répertoriées sont exprimées par défaut en mégaoctets (Mo). Pour créer une partition de 10 Go, vous devez commencer à 1 et terminer à 10 000. Vous pouvez également modifier les unités de dimensionnement en téraoctets en saisissant unit TB si vous le souhaitez.

    5. Quittez parted à l'aide de la commande quit.

      quit
      
  3. Créez un système de fichiers sur la nouvelle partition.

    mkfs.ext3 /dev/mapper/XXXp1
    

    Il est important de sélectionner le bon disque et la bonne partition lorsque vous exécutez cette commande. Vérifiez le résultat en imprimant la table de partition. Dans la colonne « Système de fichiers », vous pouvez voir « ext3 ».

  4. Créez un point de montage pour le système de fichiers et montez-le.

    • Créez un nom de partition PerfDisk ou un emplacement où monter le système de fichiers.
    mkdir /PerfDisk
    
    • Montez le stockage avec le nom de partition.
    mount /dev/mapper/XXXp1 /PerfDisk
    
    • Vérifiez que votre nouveau système de fichiers est répertorié.
    df -h
    
  5. Pour activer le montage automatique au démarrage, ajoutez le nouveau système de fichiers au fichier /etc/fstab du système.

    • Ajoutez la ligne suivante à la fin du fichier /etc/fstab (en utilisant le nom de partition provenant de l'étape 3).
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

    Pour plus d'informations, voir Une introduction au fichier Linux /etc/fstab.

Gestion des droits d'accès des utilisateurs au contenu du volume monté

En tant qu'administrateur système, vous pouvez gérer l'accès aux données du volume monté. Une fois le système de fichiers prêt, vous pouvez affiner le contrôle d'accès en utilisant les commandes chown et chmod pour attribuer des autorisations de lecture, d'écriture et d'exécution à des utilisateurs individuels et à des groupes. Pour plus d'informations, voir le tutoriel de Red Hat: Comment gérer les autorisations Linux pour les utilisateurs, les groupes et autres.

Vérification de la configuration MPIO (E-S multi-accès)

Si MPIO n'est pas configuré correctement, votre périphérique de stockage peut se déconnecter et apparaître comme étant hors ligne en cas de panne réseau ou de maintenance par les équipes d'IBM Cloud®. MPIO offre un niveau supplémentaire de connectivité lors de ces événements et maintient une session établie avec le volume, avec des opérations de lecture/écriture actives.

  • Pour vérifier si le multi-accès détecte les périphériques, affichez la configuration en cours. S'il est configuré correctement, un seul groupe existe pour chaque volume, avec un nombre de chemins égal au nombre de sessions iSCSI.

    multipath -l
    
    root@server:~# multipath -l
    3600a09803830304f3124457a45757067 dm-1 NETAPP,LUN C-Mode
    size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
    |-+- policy='round-robin 0' prio=-1 status=active
    | `6:0:0:101 sdd 8:48 active ready running
    `-+- policy='round-robin 0' prio=-1 status=enabled
     `- 7:0:0:101 sde 8:64 active ready running
    

    La chaîne « 3600a09803830304f3124457a45757067 » dans l'exemple correspond à l'identifiant WWID unique du volume. Chaque volume est identifié par son identifiant WWID unique, qui reste inchangé tant que le volume existe.

  • Confirmez que tous les disques sont présents. Dans une configuration correcte, vous devriez voir deux disques s'afficher dans la sortie avec le même identificateur, ainsi qu'une liste /dev/mapper de la même taille avec le même identificateur. Le périphérique /dev/mapper est celui qui est configuré par le multi-accès.

    fdisk -l | grep Disk
    
    • Exemple de sortie d'une configuration correcte.
    root@server:~# fdisk -l | grep Disk
    Disk /dev/sda: 500.1 GB, 500107862016 bytes Disk identifier: 0x0009170d
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/mapper/3600a09803830304f3124457a45757066: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    

    L'identificateur WWID est inclus dans le nom du périphérique créé par le multi-accès. Il est recommandé d'utiliser le WWID dans votre application.

    • Exemple de sortie d'une configuration incorrecte. Il n'existe pas de disque /dev/mapper.
    root@server:~# fdisk -l | grep Disk
    Disk /dev/sda: 500.1 GB, 500107862016 bytes Disk identifier: 0x0009170d
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    
  • Pour vérifier qu'aucun disque local ne figure dans la liste des périphériques multipath, affichez la configuration actuelle avec un niveau de détail 3. La sortie de la commande suivante affiche les unités et indique également celles qui ont été ajoutées à la liste de blocages.

    multipath -l -v 3 | grep sd <date and time>
    
  • Si un volume est provisionné et attaché alors que le second chemin est en panne, l'hôte peut voir un seul chemin lorsque le scan de découverte est exécuté pour la première fois. Si vous rencontrez ce phénomène rare, consultez la page d'état IBM Cloud® pour voir si un événement ayant un impact sur la capacité de votre hôte à accéder au stockage est en cours. Si aucun événement n'est signalé, relancez l'analyse de détection pour vous assurer que tous les chemins d'accès ont bien été détectés. Si un événement est en cours, le stockage peut être attaché avec un seul chemin. Toutefois, il est essentiel que les chemins soient réanalysés une fois l'événement terminé. Si les deux chemins ne sont toujours pas détectés après la nouvelle analyse, ouvrez un dossier d'assistance afin que le problème puisse être examiné de manière approfondie.

Démontage de volumes Block Storage for Classic

  1. Démontez le système de fichiers.
    umount /dev/mapper/XXXp1 /PerfDisk
    
  2. Si vous n'avez pas d'autre volumes dans ce portail cible, vous pouvez vous déconnecter de la cible.
    iscsiadm -m node -T <TARGET NAME> -p <PORTAL IP:PORT> --logout
    
  3. Si vous n'avez pas d'autre volumes dans ce portail cible, supprimez l'enregistrement de portail cible pour empêcher les futures tentatives de connexion.
    iscsiadm -m node -o delete -T <TARGET IQN> -p <PORTAL IP:PORT>
    
    Pour plus d'informations, consultez le manuel d' iscsiadm.