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 comme suit :
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 appareils sur les VM Linux
Les noms d'appareils 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 de l'appareil 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 d'appareils 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 d'appareils NVMe
Le format d'un appareil 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 de l'appareil, où n est un nombre, commençant par 1, qui désigne la nème partition.Le numéro de contrôleur commence à
0
. Le nom d'appareil 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 appareils 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 d'appareils 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 persistants et Google Cloud Hyperdisk, ainsi que pour les disques SSD locaux. Chaque VM dispose d'un contrôleur NVMe pour les disques persistants et hyperdisques, et d'un contrôleur NVMe pour chaque disque SSD local. Le contrôleur NVMe de disque persistant et d'hyperdisque 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 persistant et un Hyperdisk (chacun avec deux partitions) et deux disques SSD locaux non formatés utilise les noms d'appareils 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/11/21 (UTC).
-