Ce document explique comment utiliser un nommage de périphérique persistant sur votre VM Linux.
Pour les VM utilisant un système d'exploitation Linux, les noms des périphériques, par exemple /dev/sda
, peuvent changer après avoir effectué des procédures telles que les suivantes :
- Démarrer et arrêter une VM
- Dissocier et réassocier des disques
- Modifier les types de machines
Ce changement de nom de périphérique se produit car les noms des périphériques sont attribués à partir d'une plage disponible dès lors qu'une VM démarre ou qu'un périphérique est associé. Dissocier un périphérique ou arrêter la VM libère son nom. Lorsque le périphérique est réassocié ou que la VM a redémarré, un nouveau nom de périphérique est ensuite attribué à partir de la plage disponible. Le noyau Linux ne garantit pas l'ordre des périphériques lors des redémarrages.
Une modification du nom d'un périphérique peut entraîner le dysfonctionnement des applications ou des scripts qui dépendent du nom de périphérique d'origine, ou empêcher la VM de démarrer après un redémarrage.
Pour éviter ce problème, il est recommandé d'utiliser un nommage de périphérique persistant lorsque vous référencez des disques et des partitions sur vos VM Linux. Vous pouvez également utiliser des liens symboliques.
Avant de commencer
- Vérifiez la gestion des périphériques pour votre système d'exploitation Linux :
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
nvme0n1
: Persistent Disknvme0n1p1
nvme0n1p2
nvme0n2
: Hyperdisknvme0n2p1
nvme0n2p2
nvme1n1
: premier disque SSD localnvme2n1
: deuxième disque SSD local- À l'aide d'un libellé. Cette option nécessite que le système de fichiers soit compatible avec les libellés et que vous ajoutiez un libellé aux partitions de disque.
- À l'aide d'un UUID de partition ou de disque. Un UUID est généré lorsqu'un disque est créé avec une table de partition et l'UUID est unique par partition.
- En utilisant un ID de disque persistant (
/dev/disk/by-id
) pour un disque Persistent Disk ou Google Cloud Hyperdisk, ou un lien symbolique basé sur le nom de ressource du disque. - Connectez-vous à votre VM.
Si vous ne connaissez pas le nom de périphérique du disque, vous pouvez trouver le nom du disque en utilisant le lien symbolique.
ls -l /dev/disk/by-id/google-*
Le résultat ressemble à ce qui suit :
lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm -> ../../sda lrwxrwxrwx 1 root root 10 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm-app-data -> ../../nvme0n1
Récupérez l'UUID de la partition du disque en exécutant l'une des commandes suivantes :
blkid
sudo blkid -s UUID
Le résultat ressemble à ce qui suit :
/dev/sda1: UUID="4f570f2d-fffe-4c7d-8d8f-af347af7612a" /dev/sda15: UUID="E0B2-DFAF" /dev/nvme0n1: UUID="9e617251-6a92-45ff-ba40-700a9bdeb03e"
ls -l
sudo ls -l /dev/disk/by-uuid/
Le résultat ressemble à ce qui suit :
lrwxrwxrwx 1 root root 10 Sep 22 18:12 4f570f2d-fffe-4c7d-8d8f-af347af7612a -> ../../sda1 lrwxrwxrwx 1 root root 13 Sep 22 18:15 9e617251-6a92-45ff-ba40-700a9bdeb03e -> ../../nvme0n1 lrwxrwxrwx 1 root root 11 Sep 22 18:12 E0B2-DFAF -> ../../sda15
Ajoutez une entrée pour l'UUID de votre périphérique dans le fichier
/etc/fstab
.UUID=9e617251-6a92-45ff-ba40-700a9bdeb03e /data ext4 defaults 0 0
Dans cet exemple,
/data
est le point d'installation etext4
est le type de système de fichiers.Vérifiez que le périphérique est correctement installé en exécutant la commande
mount -av
.sudo mount -av
Si le périphérique est correctement installé, le résultat ressemble à ce qui suit :
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this filesystem. For more details see restorecon(8) and mount(8). /data : successfully mounted
- Connectez-vous à votre VM.
Exécutez la commande suivante pour récupérer l'ID sur le disque :
sudo ls -lh /dev/disk/by-id/google-*
Le résultat ressemble à ce qui suit :
lrwxrwxrwx. 1 root root 9 May 16 17:34 google-disk-2 -> ../../sdb lrwxrwxrwx. 1 root root 9 May 16 09:09 google-persistent-disk-0 -> ../../sda lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part2 -> ../../sda2
Pour les disques
NVME
, le résultat ressemble à ce qui suit :lrwxrwxrwx 1 root root 13 Jun 1 10:27 google-disk-3 -> ../../nvme0n2 lrwxrwxrwx 1 root root 13 Jun 1 10:25 google-t2a -> ../../nvme0n1 lrwxrwxrwx 1 root root 15 Jun 1 10:25 google-t2a-part1 -> ../../nvme0n1p1 lrwxrwxrwx 1 root root 16 Jun 1 10:25 google-t2a-part15 -> ../../nvme0n1p15
Ajoutez le lien symbolique au fichier
/etc/fstab
./dev/disk/by-id/google-disk-2 /data ext4 defaults 0 0
Vérifiez que le périphérique est correctement installé en exécutant la commande
mount -av
.sudo mount -av
Si le périphérique est correctement installé, le résultat ressemble à ce qui suit :
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this file system. For more details see restorecon(8) and mount(8). /data : successfully mounted
Nommer les périphériques sur les VM Linux
Les noms de périphériques Linux des disques associés à votre VM dépendent de l'interface que vous avez choisie lors de la création des disques. Lorsque vous utilisez commande du système d'exploitation
lsblk
pour afficher vos disques, elle affiche le préfixenvme
pour les disques associés à l'interface NVMe et le préfixesd
pour les disques associés à l'interface SCSI.L'ordre des numéros de disque ou des contrôleurs NVMe n'est pas prévisible ni cohérent entre les redémarrages de VM. Lors du premier démarrage, un disque persistant peut être
nvme0n1
(ousda
pour SCSI). Lors du deuxième démarrage, le nom du périphérique pour le même disque persistant peut êtrenvme2n1
ounvme0n3
(ousdc
pour SCSI).Lorsque vous accédez à des disques associés, vous devez utiliser les liens symboliques créés dans
/dev/disk/by-id/
. Ces noms persistent après les redémarrages. Pour en savoir plus sur les liens symboliques, consultez la section Liens symboliques pour les disques associés à une VM.Noms de périphériques SCSI
Le format d'un disque associé en SCSI est de
sda
pour le premier disque associé. Les partitions de disque apparaissent sous la formesda1
. Chaque disque supplémentaire utilise une lettre séquentielle, telle quesdb
etsdc
. Lorsquesdz
est atteint, les disques suivants sont nommés tels quesdaa
,sdab
etsdac
, jusqu'àsddx
.Noms de périphériques NVMe
Le format d'un périphérique de disque associé en NVMe dans les systèmes d'exploitation Linux est
nvmenumbernnamespace
.number
représente le numéro de contrôleur de disque NVMe et namespace est un ID d'espace de noms NVMe attribué par le contrôleur de disque NVMe. Pour les partitions, pn est ajouté au nom du périphérique, où n est un nombre, à partir de 1, qui désigne la nème partition.Le numéro de contrôleur commence à
0
. Le nom de périphérique d'un seul disque NVMe associé à votre instance de calcul estnvme0n1
. La plupart des types de machines utilisent un seul contrôleur de disque NVMe. Les noms des périphériques NVMe sont ensuitenvme0n1
,nvme0n2
,nvme0n3
, etc.Les disques SSD locaux associés à une série de machines de troisième génération ou à des instances ultérieures disposent d'un contrôleur NVMe distinct pour chaque disque. Sur ces VM, les noms de périphériques des disques SSD locaux associés en NVMe ressemblent à
nvme0n1
,nvme1n1
etnvme2n1
. Le nombre de disques SSD locaux associés dépend du type de machine de votre VM.Les instances de calcul basées sur des séries de machines de troisième génération ou ultérieures utilisent NVMe pour les disques Persistent Disk et Google Cloud Hyperdisk, ainsi que pour les disques SSD locaux. Chaque VM dispose d'un contrôleur NVMe pour les disques Persistent Disk et Hyperdisk, et d'un contrôleur NVMe pour chaque disque SSD local. Le contrôleur NVMe de Persistent Disk et de Hyperdisk possède un seul espace de noms NVMe pour tous les disques associés. Ainsi, une instance de série de machines de troisième génération avec un disque Persistent Disk et un Hyperdisk (chacun avec deux partitions) et deux disques SSD locaux non formatés utilise les noms de périphériques suivants:
Utiliser un nommage de périphérique persistant
Pour configurer un nom de périphérique persistant, vous devez attribuer un nom de point d'installation pour le disque dans le fichier
fstab
. Il existe trois façons de configurer un nom de périphérique persistant.Nous vous recommandons d'utiliser l'UUID de partition ou le lien symbolique pour les VM Linux.
UUID de partition
Pour rechercher l'UUID d'un disque, procédez comme suit :
ID de disque persistant
Pour trouver le nom du disque persistant à l'aide de l'ID du disque persistant ou du lien symbolique, procédez comme suit :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-