# Persistent block device naming (Français)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Related articles

- fstab (Français)
- udev (Français)
- LVM (Français)

Cet article décrit comment utiliser des noms persistants pour vos périphériques de 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 block de périphérique. 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 supporter une méthode, systemd peut imposer ses propres limites (par exemple FS#42884) sur le nommage il peut être traité au démarrage.
- Si vous utilisez LVM2, cet article n'est pas pertinent car LVM s'en charge automatiquement.

## Méthodes de nommage persistantes

Il existe quatre schémas différents pour l'appellation persistante: by-label, by-uuid, by-id[broken link: invalid section] et by-path[broken link: invalid section]. Pour ceux qui utilisent des disques avec Installation de base, deux schémas supplémentaires peuvent être utilisés by-partlabel et by-partuuid. Vous pouvez également utiliser Noms de périphériques statiques avec Udev.

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 -f` peut être utilisée pour visualiser graphiquement les premiers schémas persistants:

    $ lsblk -f

    NAME   FSTYPE LABEL  UUID                                 MOUNTPOINT
    sda
    ├─sda1 vfat          CBB6-24F2                            /boot
    ├─sda2 ext4   SYSTEM 0a3407de-014b-458b-b5c1-848e92a327a3 /
    ├─sda3 ext4   DATA   b411dc99-f0a0-4c87-9e05-184977be8539 /home
    └─sda4 swap          f9fe0b69-a280-415d-a03a-a32752370dee [SWAP]

Pour ceux qui utilisent GPT, utilisez la commande `blkid` à 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 un label (étiquette). Toutes vos partitions qui en ont une sont listées dans le répertoire `/dev/disk/by-label`. Ce répertoire est créé et détruit dynamiquement, selon que vous avez des partitions avec des étiquettes attachées ou non.

    $ ls -l /dev/disk/by-label

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 DATA -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 SYSTEM -> ../../sda2

Les labels de vos systèmes de fichiers peuvent être modifiés. Voici quelques méthodes pour changer les labels sur les systèmes de fichiers communs:

swap
  `swaplabel -L <label> /dev/XXX` utilisant util-linux
ext2/3/4
  `e2label /dev/XXX <label>` utilisant e2fsprogs
btrfs
  `btrfs filesystem label /dev/XXX <label>` utilisant btrfs-progs
reiserfs
  `reiserfstune -l <label> /dev/XXX` utilisant reiserfsprogs
jfs
  `jfs_tune -L <label> /dev/XXX` utilisant jfsutils
xfs
  `xfs_admin -L <label> /dev/XXX` utilisant xfsprogs
fat/vfat
  `fatlabel /dev/XXX <label>` utilisant dosfstools
  `mlabel -i /dev/XXX ::<label>` utilisant mtools
ntfs
  `ntfslabel /dev/XXX <label>` utilisant ntfs-3g
zfs
  ce système de fichiers ne supporte pas `/dev/disk/disk/by-label`, mais by-partlabel peut être utilisé

Note:

- La modification de l'étiquette du système de fichiers de la partition racine doit être faite à partir d'une distribution GNU/Linux "live" car la partition doit d'abord être démontée.
- Les étiquettes doivent être sans ambiguïté pour éviter tout conflit éventuel.
- Les étiquettes peuvent contenir jusqu' à 16 caractères.
- Comme l'étiquette est une propriété du système de fichiers, elle ne convient pas pour l'adressage d'un seul périphérique RAID de manière persistante.
- Lorsque vous utilisez des conteneurs cryptés avec dm-crypt, les étiquettes des systèmes de fichiers à l'intérieur des conteneurs ne sont pas disponibles lorsque le conteneur est verrouillé/crypté.

### 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 cryptés bruts) supportent UUID. Les systèmes de fichiers FAT et NTFS (label fat et windows ci-dessus) ne supportent pas l'UUID, mais sont toujours listés dans `/dev/disk/by-uuid` avec un UID plus court (identifiant unique).

    $ ls -l /dev/disk/by-uuid/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 0a3407de-014b-458b-b5c1-848e92a327a3 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 b411dc99-f0a0-4c87-9e05-184977be8539 -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 CBB6-24F2 -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 f9fe0b69-a280-415d-a03a-a32752370dee -> ../../sda4

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

Astuce: Dans le cas où votre partition swap n' a pas d'UUID assigné, vous devrez réinitialiser la partition swap en utilisant l'utilitaire mkswap.

### by-id et by-path

by-id crée un nom unique en fonction du numéro de série du matériel, by-path 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 -`ide-` pour `by-path`, et `-ata-` pour `by-id`), donc ils sont reliés au matériel qui contrôle l'appareil.

Ceci implique différents niveaux de persistance: le `by-path` changera lorsque l'appareil est branché sur un port différent du contrôleur, le `by-path` changera lorsque l'appareil est branché sur un port d'un contrôleur matériel soumis à un autre sous-système [1]. 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 (`by-label` ou `by-partlabel`) et que vous conservez un répertoire avec l'utilisation du port matériel, `By-id` et `by-path` peuvent être utilisés pour trouver un périphérique particulier. [2] [3]

### by-partlabel

Note: Cette méthode ne concerne que les disques avec une Table de partitions GUID (GPT).

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

Voir aussi Wikipedia: GUID Partition Table#Entrées de partition.

Cette méthode est très similaire aux labels du système de fichiers, sauf que le répertoire dynamique est `/dev/disk/by-partlabel`.

    ls -l /dev/disk/by-partlabel/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 EFI\x20SYSTEM\x20PARTITION -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 GNU\x2fLINUX -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 HOME -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 SWAP -> ../../sda4

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. Voir Outils Outils de partitionnement.
- Selon la spécification, les étiquettes de partition GPT peuvent contenir jusqu' à 72 caractères.

### by-partuuid

Note: Cette méthode ne concerne que les disques avec une Table de partitions GUID (GPT) mais linux est capable de générer des pseudo PARTUUID pour les partitions MBR.

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

Voir aussi Wikipedia: GUID Partition Table#Entrées de partition.

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

    ls -l /dev/disk/by-partuuid/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 039b6c1c-7553-4455-9537-1befbc9fbc5b -> ../../sda4
    lrwxrwxrwx 1 root root 10 May 27 23:31 7280201c-fc5d-40f2-a9b2-466611d3d49e -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 98a81274-10f7-40db-872a-03df048df366 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 d0d0d110-0a71-4ed6-936a-304969ea36af -> ../../sda1

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

### Fstab

Voir Fstab (Français)#UUIDs

### Gestionnaire de démarrage

Pour utiliser des noms persistants dans le gestionnaire de démarrage (boot loader), les conditions préalables suivantes doivent être remplies.Lors d'une installation standard, les deux conditions préalables sont remplies en suivant le guide d'installation.

- Vous utilisez une image initiale de disque RAM mkinitcpio
- Vous avez activé udev dans `/etc/mkinitcpio.conf`

L'emplacement du système de fichiers racine est donné par le paramètre `root` sur la ligne de commande du noyau. Pour changer le nom d'un périphérique persistant, ne modifiez que les paramètres qui spécifient les périphériques de bloc, par ex: `root` et `resume`, tout en laissant les autres paramètres tels quels. Différents schémas de nommage sont pris en charge:

Nommer un périphérique non persistant en utilisant le format de chemin `/dev`, dans cet exemple `/dev/sdr1` est la partition racine.

    root=/dev/sdr1

Le nom de périphérique persistant utilisant l'étiquette et le format de chemin `/dev`, dans cet exemple `root_myhost` est l'étiquette de la partition racine.

    root=/dev/disk/by-label/root_myhost

Nommer les périphériques persistants en utilisant l'étiquette et le format `LABEL=`.

    root=LABEL=root_myhost

Le nom de périphérique persistant utilisant UUID et le format `UUID=`, dans cet exemple `1234-5678` est l'UUID de la partition racine.

    root=UUID=1234-5678

Nommer les périphériques persistants en utilisant PARTUUID et le format `PARTUUID=`.

    root=PARTUUID=1234-5678

Categories:

- Boot process (Français)
- File systems (Français)
- Hardware detection and troubleshooting (Français)

Hidden category:

- Pages with broken section links