Persistent block device naming (Français)

Cet article décrit comment utiliser des noms persistants pour vos périphériques de type bloc. Ceci a été rendu possible grâce à l'introduction d'udev et présente quelques avantages par rapport à l'attribution de noms par bus. Si votre machine dispose de plus d'un contrôleur de disque SATA, SCSI ou IDE, l'ordre dans lequel les nœuds de périphériques correspondants sont ajoutés est arbitraire. Cela peut avoir pour conséquence que les noms de périphériques comme /dev/sda et /dev/sdb changent à chaque démarrage, ce qui peut aboutir à un système non amorçable, kernel panic (la panique du noyau) ou la disparition d'un périphérique de type bloc. Un nommage persistant résout ces problèmes.

Note:
  • Les noms persistants ont des limites qui sont hors du champ de cet article. Par exemple, alors que Mkinitcpio peut prendre en charge une méthode, systemd peut imposer ses propres limites (par exemple FS#42884) sur le nommage qu'il peut prendre en charge au démarrage.
  • Cet article n'est pas pertinent pour les volumes logiques de LVM, puisque les chemins /dev/NomDuGroupeDeVolume/NomDeVolumeLogique vers les périphériques sont permanents.
État de la traduction: Cet article est la version francophone de Persistent block device naming. Date de la dernière traduction: 2022-04-06. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Méthodes de nommage persistantes

Il existe quatre schémas différents pour l'appellation persistante: by-label, by-uuid, by-id et by-path. Pour ceux qui utilisent des disques avec une table de partitions GUID (GPT), deux schémas supplémentaires peuvent être utilisés by-partlabel et by-partuuid. Vous pouvez également utiliser des noms de périphériques statiques avec Udev.

Les répertoires de /dev/disk/ sont créés et détruits dynamiquement, selon qu'ils contiennent ou non des périphériques.

Note: Attention, le clonage de disque crée deux disques différents portant le même nom.

Les sections suivantes décrivent les différentes méthodes de nommage persistant et leur utilisation.

La commande lsblk peut être utilisée pour visualiser graphiquement les premiers schémas persistants:

Pour ceux qui utilisent GPT, utilisez la commande à la place. Ce dernier est plus pratique pour les scripts, mais plus difficile à lire.

# blkid
/dev/sda1: UUID="CBB6-24F2" TYPE="vfat" PARTLABEL="EFI SYSTEM PARTITION" PARTUUID="d0d0d110-0a71-4ed6-936a-304969ea36af" 
/dev/sda2: LABEL="SYSTEM" UUID="0a3407de-014b-458b-b5c1-848e92a327a3" TYPE="ext4" PARTLABEL="GNU/LINUX" PARTUUID="98a81274-10f7-40db-872a-03df048df366" 
/dev/sda3: LABEL="DATA" UUID="b411dc99-f0a0-4c87-9e05-184977be8539" TYPE="ext4" PARTLABEL="HOME" PARTUUID="7280201c-fc5d-40f2-a9b2-466611d3d49e" 
/dev/sda4: UUID="f9fe0b69-a280-415d-a03a-a32752370dee" TYPE="swap" PARTLABEL="SWAP" PARTUUID="039b6c1c-7553-4455-9537-1befbc9fbc5b"

by-label

Presque tous les types de systèmes de fichiers peuvent avoir une étiquette (label). Toutes vos partitions qui en ont une sont listées dans le répertoire .

La plupart des systèmes de fichiers permettent de définir l'étiquette à la création du système de fichiers, consultez la page de manuel de l'utilitaire mkfs.* correspondant. Pour certains systèmes de fichiers, il est également possible de modifier les étiquettes. Voici quelques méthodes pour modifier les étiquettes des systèmes de fichiers courants :

swap 
swaplabel -L "nouvelle étiquette" /dev/XXX avec
ext2/3/4 
avec
btrfs 
avec
reiserfs 
avec
jfs 
avec jfsutils
xfs 
avec
fat/vfat 
fatlabel /dev/XXX "nouvelle étiquette" avec
avec
exfat 
avec
avec or
ntfs 
ntfslabel /dev/XXX "nouvelle étiquette" avec
udf 
avec
crypto_LUKS (LUKS2 uniquement) 
avec cryptsetup

L'étiquette d'un périphérique peut être obtenu avec lsblk :

Ou avec blkid :

by-uuid

UUID est un mécanisme pour donner à chaque système de fichiers un identifiant unique.

Ces identificateurs sont générés par les utilitaires du système de fichiers (par ex: mkfs.*) quand les partitions sont formatées et sont définies de manière à ce que les collisions soient improbables. Tous les systèmes de fichiers GNU/Linux (y compris les en-têtes de swap et LUKS des périphériques chiffrés bruts) prennent en charge les UUID. Les systèmes de fichiers FAT et NTFS (label fat et windows ci-dessus) ne prennent pas en charge les UUID, mais sont toujours listés dans avec un UID plus court (identifiant unique).

L'UUID d'un périphérique peut être obtenu avec lsblk :

$ lsblk -dno UUID /dev/sda1
CBB6-24F2

Ou avec blkid :

L'avantage de la méthode UUID est qu'il est beaucoup moins probable que des collisions de noms se produisent qu'avec les étiquettes. De plus, il est généré automatiquement lors de la création du système de fichiers. Il restera, par exemple, unique même si l'appareil est branché à un autre système (qui peut avoir un appareil avec la même étiquette).

L'inconvénient est que les UUIDs rendent les longues lignes de code difficiles à lire et rompent le formatage dans de nombreux fichiers de configuration (par ex: fstab ou crypttab). Aussi chaque fois qu'une partition est redimensionnée ou reformatée, un nouvel UUID est généré et les configurations doivent être ajustées manuellement.

by-id et by-path

crée un nom unique en fonction du numéro de série du matériel,  en fonction du chemin physique le plus court (selon sysfs). Les deux contiennent des chaînes de caractères pour indiquer à quel sous-système elles appartiennent (c'est-à-dire  pour , et ata- pour ), donc ils sont reliés au matériel qui contrôle l'appareil.

Ceci implique différents niveaux de persistance: le changera lorsque l'appareil est branché sur un port différent du contrôleur, le changera lorsque l'appareil est branché sur un port d'un contrôleur matériel soumis à un autre sous-système . Par conséquent, les deux ne conviennent pas pour obtenir un nommage persistant tolérant aux changements de matériel.

Cependant, les deux fournissent des informations importantes pour trouver un périphérique particulier dans une grande infrastructure matérielle. Par exemple, si vous n'attribuez pas manuellement des étiquettes persistantes ( ou ) et que vous conservez un répertoire avec l'utilisation du port matériel, et peuvent être utilisés pour trouver un périphérique particulier.

crée également des liens World Wide Name de périphériques de stockage qui le prennent en charge. Contrairement aux autres liens , les WWN sont entièrement persistants et ne changent pas en fonction du sous-système utilisé.
$ ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470 -> ../../sda
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 May 27 23:31 mmc-SD32G_0x0040006d -> ../../mmcblk0
lrwxrwxrwx 1 root root 10 May 27 23:31 mmc-SD32G_0x0040006d-part1 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f -> ../../sda
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part4 -> ../../sda4

by-partlabel

Les étiquettes de partition peuvent être définis dans l'en-tête de l'entrée de partition sur les disques GPT.

Cette méthode est très similaire aux étiquettes du système de fichiers, sauf que le répertoire dynamique est .

L'étiquette de partition d'un périphérique peut être obtenue avec lsblk :

Ou avec blkid :

Note:
  • Les étiquettes de partition GPT doivent également être différentes pour éviter les conflits. Pour changer l'étiquette de votre partition, vous pouvez utiliser gdisk ou la version basée sur ncurses cgdisk. Les deux sont disponibles à partir du paquet gptfdisk. Consultez les outils de partitionnement (en).
  • Selon la spécification, les étiquettes de partition GPT peuvent contenir jusqu' à 72 caractères.

by-partuuid

Comme les étiquettes de partition GPT, les UUID de partition GPT sont définis dans l'entrée de partition sur les disques GPT.

Le répertoire dynamique est similaire à d'autres méthodes et, comme les systèmes de fichiers UUID, l'utilisation des UUID est préférable aux étiquettes.

L'UUID de la partition d'un périphérique peut être obtenu avec lsblk :

Ou avec blkid :

# blkid -s PARTUUID -o value /dev/sda1
d0d0d110-0a71-4ed6-936a-304969ea36af

Noms de périphériques statiques avec Udev

Voir Udev#Setting static device names

Utilisation des noms persistants

Il existe plusieurs applications qui peuvent être configurées à l'aide de noms persistants. Ci-dessous quelques exemples et la façon de les configurer.

fstab

Voir l'article Fstab (Français)#Identification des systèmes de fichiers

Paramètres du noyau

Pour utiliser des noms persistants dans les paramètres du noyau, les conditions préalables suivantes doivent être remplies. Lors d'une installation standard qui a suivi le guide d'installation ces deux prérequis sont remplis :

L'emplacement du système de fichiers racine est donné par le paramètre sur la ligne de commande du noyau. La ligne de commande du noyau est configurée à partir du chargeur d'amorçage, consultez Kernel parameters#Configuration. Pour changer le nom d'un périphérique persistant, ne modifiez que les paramètres qui spécifient les périphériques de type bloc, par exemple : et , tout en laissant les autres paramètres tels quels. Différents schémas de nommage sont pris en charge:

Nommage des périphériques persistants utilisant l'étiquette et le format , dans cet exemple est l'étiquette du système de fichiers racine.

root="LABEL=Arch Linux"

Nommage persistant des périphériques utilisant l'UUID et le format UUID=, dans cet exemple est l'UUID du système de fichiers racine.

root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3

Nommage de périphérique persistant utilisant l'id du disque et le format de chemin , dans cet exemple est l'id de la partition racine.

root=/dev/disk/by-id/wwn-0x60015ee0000b237f-part2

Nommage du périphérique persistant utilisant l'UUID de la partition GPT et le format PARTUUID=, dans cet exemple est le PARTUUID de la partition racine.

root=PARTUUID=98a81274-10f7-40db-872a-03df048df366

Nommage de périphérique persistant utilisant l'étiquette de partition GPT et le format , dans cet exemple est le PARTLABEL de la partition racine.

root="PARTLABEL=GNU/Linux"
gollark: That reminds me, I really ought to figure out autocrafting.
gollark: Skynet? No.
gollark: Just realised that running two skynet instances at once may break horribly. I should fix that somehow.
gollark: I do care slightly. PotatOS uses require and not os.loadAPI, as do my libraries.
gollark: ***mwahahaha***
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.