Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

24.7. Dénomination persistante

Red Hat Enterprise Linux fournit un certain nombre de façons d’identifier les périphériques de stockage. Il est important d’utiliser la bonne option pour identifier chaque périphérique lorsqu’il est utilisé afin d’éviter tout accès par inadvertance du mauvais périphérique, en particulier lorsque vous installez ou reformez des disques.

24.7.1. /dev/sd* et leurs nombres Majeurs et Mineurs

Les périphériques de stockage gérés par le pilote sd sont identifiés en interne par une collection de numéros de périphériques principaux et leurs numéros mineurs associés. Les numéros majeurs utilisés à cette fin ne sont pas dans une plage contiguë. Chaque périphérique de stockage est représenté par un numéro principal et un éventail de numéros mineurs, qui servent à identifier le dispositif entier ou une partition au sein de l’appareil. Il y a une association directe entre les numéros majeurs et mineurs attribués à un périphérique et les nombres sous la forme de sd< lettre(s)>< numéro(s) en option>. Chaque fois que le pilote sd détecte un nouveau périphérique, une gamme de numéros mineurs et numéros majeurs est allouée. Chaque fois qu’un périphérique est supprimé du système d’exploitation, la gamme de numéros mineurs et majeurs est libérée afin d'être réutilisés plus tard.
La plage de numéros majeurs et mineurs et noms associés de sd sont attribués pour chaque périphérique lorsqu’il est détecté. Cela signifie que l’association entre la plage de numéros majeurs et mineurs et les noms associés de sd peut changer si l’ordre de détection des périphériques change. Bien que cela soit inhabituel avec certaines configurations matérielles (par exemple, avec les disques ayant leur ID de cible SCSI assignée par leur emplacement physique dans le châssis), cela peut néanmoins se produire. Voici des exemples de situations où cela peut se produire :
  • Un disque peut ne pas s’allumer ou répondre au contrôleur SCSI. Ainsi, il ne sera pas détecté par la sonde classique du périphérique. Le disque ne sera pas accessible au système et les périphériques ultérieurs auront leur plage de numéros majeurs et mineurs, y compris les noms de sd associés déplacées vers le bas. Par exemple, si un disque normalement dénommé sdb n’est pas détecté, un disque normalement appelé sdc apparaît comme sdb.
  • Un contrôleur SCSI (adaptateur de bus hôte ou HBA) peut ne pas s’initialiser, ce qui fait que tous les disques connectés à cet adaptateur HBA ne sont pas détectés. Tous les disques connectés aux HBA sondés par la suite se verront attribuer différentes gammes de numéros majeurs et mineurs, et différents noms sd associés.
  • L'ordre d'initialisation peut changer si différents types de HBA sont présents dans le système. Cela entrainera un détection des disques connectés à ces HBA dans un ordre différent. Cela a lieu également si les HBA vont dans différents slots PCI du système.
  • Les disques connectés au système avec Fibre Channel, iSCSI, ou avec des adaptateurs FCoE pourraient être inaccessibles au moment où les périphériques de stockage sont détectés, en raison d’une baie de stockage ou d'un interrupteur qui passe hors tension, par exemple. Cela pourrait se produire lorsqu'un système démarre à nouveau après une panne de courant, si la matrice de stockage prend plus de temps à se mettre en ligne qu'il ne faut pour le reboot du système. Bien que certains pilotes Fibre Channel prennent en charge un mécanisme qui sert à spécifier un ID de cible SCSI persistant au mappage WWPN, cela n’entraînera pas les gammes majeures et mineures de numéros, ainsi que les noms de sd associés à être réservés, cela ne fournira que des numéros d’ID de cibles SCSI compatibles.
Ces raisons font qu'il n'est pas souhaitable d'utiliser les gammes de nombres mineures ou majeures des noms sd associés quand on se réfère aux périphériques, comme dans le fichier /etc/fstab. Il est possible que le mauvais périphérique soit monté et qu'une corruption de données en résulte.
Parfois, il faut cependant se référer aux noms de sd même si un autre mécanisme est utilisé (comme lorsque des erreurs sont reportées par un périphérique). C'est parce que le noyau Linux utilise les noms sd (et les tuples SCSI host/channel/target/LUN) dans les messages du noyau à propos du périphérique.

24.7.2. WWID

Les identifiants WWID (World Wide Identifier) peuvent être utilisés avec des périphériques s'identifiant de manière fiable. Il s'agit d'un ID persistant, non dépendant des systèmes requis par le standard SCSI de tous les périphériques SCSI. Les identifiants WWID offrent la garantie d'être uniques pour chaque périphérique de stockage, et sont indépendants du chemin utilisé pour accéder aux périphériques.
Cet identifiant peut être obtenu en passant une recherche SCSI pour récupérer les données vitales de produit d'identification de périphérique (page 0x83) ou le numéro de série de l'unité (page 0x80). Les mappages de ces WWID aux noms /dev/sd actuels peuvent être observés sur les liens symboliques maintenus dans le répertoire /dev/disk/by-id/.

Exemple 24.4. WWID

Par exemple, un périphérique avec l'identifiant de page 0x83 aurait :
scsi-3600508b400105e210000900000490000 -> ../../sda
Ou un périphérique avec l'identifiant de page 0x80 aurait :
scsi-SSEAGATE_ST373453LW_3HW1RHM6 -> ../../sda
Red Hat Enterprise Linux maintient automatiquement le mappage correct à partir du nom d'un périphérique basé sur WWID mappé au nom /dev/sd sur ce système. Les applications peuvent utiliser le nom /dev/disk/by-id/ pour référencer les données sur le disque, même si le chemin vers le périphérique change, et même pendant l'accession à ce périphérique par différents systèmes.
S'il existe de multiples chemins allant d'un système à un périphérique, device-mapper-multipath utilisera l'ID global WWID pour les détecter. Device-mapper-multipath présentera ensuite un seul « pseudo-périphérique » dans /dev/mapper/wwid, tel que /dev/mapper/3600508b400105df70000e00000ac0000.
La commande multipath -l affiche le mappage vers les identificateurs non-persistants : Hôte:Canal:Cible:LUN, le nom /dev/sd, et le numéro major:minor.
3600508b400105df70000e00000ac0000 dm-2 vendor,product 
[size=20G][features=1 queue_if_no_path][hwhandler=0][rw] 
\_ round-robin 0 [prio=0][active] 
 \_ 5:0:1:1 sdc 8:32  [active][undef] 
 \_ 6:0:1:1 sdg 8:96  [active][undef]
\_ round-robin 0 [prio=0][enabled] 
 \_ 5:0:0:1 sdb 8:16  [active][undef] 
 \_ 6:0:0:1 sdf 8:80  [active][undef]
Device-mapper-multipath maintient automatiquement le mappage correct de chaque nom de périphérique basé sur WWID avec le nom /dev/sd correspondant sur le système. Ces noms sont persistants à travers les changements de chemin, et sont cohérents lors de l'accession au périphérique à partir de différents systèmes.
Lorsque la fonctionnalité user_friendly_names (de device-mapper-multipath) est utilisée, le WWID est mappé à un nom sous le format /dev/mapper/mpathn. Par défaut, ce mappage est maintenu dans le fichier /etc/multipath/bindings. Ces noms mpathn sont persistants tant que le fichier est maintenu.

Important

Si vous utilisez user_friendly_names, alors des étapes supplémentaires sont requises pour obtenir des noms cohérents dans un cluster. Veuillez consulter les « Noms cohérents de périphériques multivoies » dans la section « Cluster » de l'ouvrage Utilisation de l'administration et de la configuration DM Multipath.
En plus des noms persistants fournis par le système, vous pouvez également utiliser les règles udev pour implémenter des noms persistants de votre choix, mappés au WWID du stockage.

24.7.3. Noms de périphériques gérés par le mécanisme udev (/dev/disk/by-*)

Le mécanisme udev est consititué de trois composants principaux :
Le noyau
Génère des événements qui sont envoyés dans l'espace utilisateur quand les périphériques sont ajoutés, supprimées ou modifiés.
Le démon udevd
Réceptionne les événements.
Les règles udev
Indiquent les actions à prendre quand le démon udev reçoit des événements de noyau.
Ce mécanisme est utilisé pour tous les types de périphériques de Linux, et non pas uniquement les périphériques de stockage. Dans le cas de périphériques de stockage, Red Hat Enterprise Linux contient les règles udev qui créent des liens symboliques dans le répertoire /dev/disk/ permettant ainsi à des périphériques de stockage d'être référencés par leur contenu, un identifiant unique, un numéro de série ou le chemin d'accès du matériel utilisé pour accéder au périphérique.
/dev/disk/by-label
Les entrées à ce répertoire fournissent un nom symbolique qui se réfère au périphérique de stockage par un libellé dans le contenu (c-a-d les données) stocké dans ce périphérique. Le programme blkid est utilisé pour lire les données du périphérique et déterminer un nom (c-a-d un libéllé) de périphérique. Exemple :
/dev/disk/by-label/Boot

Note

Les informations se trouvent dans le contenu (c-a-d les données) du périphérique, donc si le contenu est copié à partir d'un autre périphérique, le libellé sera le même.
Le libellé peut aussi être utilisé pour se référer au périphérique qui se trouve dans /etc/fstab en utilisant la syntaxe suivante :
LABEL=Boot
/dev/disk/by-uuid
Les entrées à ce répertoire fournissent un nom symbolique qui se réfère au périphérique de stockage par un identifiant unique dans le contenu (c-a-d les données) stocké dans le périphérique. Le programme blkid est utilisé pour lire les données du périphérique et déterminer un identifiant unique (c-a-d un uuid) de périphérique. Exemple :
UUID=3e6be9de-8139-11d1-9106-a43f08d823a6
/dev/disk/by-id
Les entrées à ce répertoire fournissent un nom symbolique qui se réfère au périphérique de stockage par un identifiant unique (différent de tous les autres périphériques de stockage). L'identifiant est une propriété du périphérique mais il n'est pas stocké dans le contenu (c-a-d les données) des périphériques. Exemple :
/dev/disk/by-id/scsi-3600508e000000000ce506dc50ab0ad05
/dev/disk/by-id/wwn-0x600508e000000000ce506dc50ab0ad05
L'id s'obtient à partir de l'ID word-wide du périphérique, ou du numéro de série du périphérique. Les entrées /dev/disk/by-id peuvent également inclure un numéro de partition. Exemple :
/dev/disk/by-id/scsi-3600508e000000000ce506dc50ab0ad05-part1
/dev/disk/by-id/wwn-0x600508e000000000ce506dc50ab0ad05-part1
/dev/disk/by-path
Les entrées de ce répertoire procurent un nom symbolique qui désigne le périphérique de stockage par le chemin d’accès au matériel utilisé pour accéder au périphérique, commençant par une référence au contrôleur de stockage dans la hiérarchie PCI et qui inclut l’hôte SCSI, le canal, la cible, et les numéros LUN et, parfois, le nombre de partitions. Bien que ces noms soient préférable à l’utilisation des numéros majeurs et mineurs ou des noms de sd, vous devez veiller à ce que les chiffres cibles ne changent pas dans un environnement SAN Fibre Channel (par exemple, par le biais de liaisons permanentes) et que l’utilisation des noms soit mise à jour si un adaptateur d'hôte est déplacé vers un autre emplacement PCI. En outre, il est possible que le nombre d’hôtes SCSI change si un HBA ne parvient pas à interroger, si les pilotes sont chargés dans un ordre différent, ou si un nouvel HBA est installé sur le système. Exemple de listing de by-path :
/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:0
Les entrées /dev/disk/by-path peuvent également inclure un numéro de partition, comme :
/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:0-part1

24.7.3.1. Limitations de la convention de nommage de périphérique d' udev

Voici certaines des limitations de convention de nommage d' udev.
  • Il est possible que le périphérique ne soit pas accessible au moment de la requête car le mécanisme d'udev se repose sans doute sur la capacité d'interroger le périphérique de stockage quand les règles d' udev sont analysées à l'occasion d'un événement udev. Cela a une meilleure chance de se produire avec Fibre Channel, iSCSI ou les périphériques de stockage FCoE quand le périphérique n'est pas situé sur le chassis du serveur.
  • Le noyau envoie également des événements udev à tout moment, donc les règles sont analysées et cela entraîne la suppression des liens /dev/disk/by-* quand le périphérique n'est plus accessible.
  • Un lapse de temps peut s'écouler entre le moment où l'événement udev est généré et le moment où il est traité (comme quand on détecte un grand nombre de périphériques et que le démon udevd d'espace utilisateur prend un bon moment à analyser les règles pour chacun). Ceci peut entraîner un délai entre le moment où le noyau détecte le périphérique et le moment où les noms /dev/disk/by-* sont rendus disponibles.
  • Des programmes externes comme blkid qui sont invoqués par les règles peuvent ouvrir le périphérique pendant un court moment, rendant ainsi le périphérique inaccessible à tout autre utilisation.