Si votre VM Linux est inaccessible pour une raison quelconque, vous pouvez essayer de la sauver en procédant comme suit :
Rôles requis
Pour obtenir les autorisations nécessaires pour sauver une VM, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
-
Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1
) - VM utilisant un compte de service : Utilisateur de compte de service (
roles/iam.serviceAccountUser
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour récupérer une VM. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour récupérer une VM :
compute.instances.create
sur le projetcompute.disks.create
sur le projetcompute.instances.get
sur le projetcompute.disks.createSnapshot
sur les disquescompute.instances.attachDisk
sur la nouvelle VM-
compute.disks.use
sur le disque compute.instances.start
sur une VM nouvelle et inaccessiblecompute.instances.stop
sur une VM nouvelle et inaccessible
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Sauver une VM
Si vous ne pouvez pas vous connecter à votre VM ou si votre disque de démarrage est saturé, vous devez créer une VM temporaire pour sauver la VM inaccessible.
- (Facultatif) Arrêtez la VM inaccessible.
- Créez un instantané à partir du disque de démarrage de la VM inaccessible. Si le système de fichiers racine est réparti sur plusieurs disques, vous devez créer un instantané de chaque disque.
- Créez une VM temporaire à l'aide d'une image publique la plus proche du système d'exploitation de la VM inaccessible. Dans certains cas, un règlement relatif aux images de confiance peut vous empêcher de créer des disques de démarrage à partir d'images publiques. Dans ce cas, vous devez demander à un administrateur de lever temporairement cette restriction avant de pouvoir créer une VM de secours. Pour en savoir plus, consultez la section Définir des contraintes d'accès aux images.
Pour chacun des instantanés des disques de démarrage de la VM inaccessible que vous avez précédemment créés, créez un disque à partir de l'instantané et associez-le à la VM de secours en procédant comme suit:
Dans Google Cloud Console, accédez à la page Instances de VM.
Cliquez sur le nom de la VM temporaire que vous avez créée.
Cliquez sur
Modifier.Sous Disques supplémentaires, cliquez sur
Ajouter un disque, puis procédez comme suit :- Ajoutez le nom du disque, comme my-recovery-disk.
- Pour Type de source, sélectionnez l'onglet Instantané.
- Dans le menu déroulant Instantané source, sélectionnez l'instantané de la VM source que vous avez créée précédemment dans ces étapes.
- Cliquez sur OK.
Cliquez sur Enregistrer.
Connectez-vous à la VM temporaire à l'aide de SSH.
Identifiez le nom de chacun des disques que vous avez précédemment associés à la VM en exécutant la commande suivante:
lsblk -d -o NAME,SERIAL
Le résultat ressemble à ce qui suit :
NAME SERIAL sda rescue-vm sdb my-recovery-disk
Dans cet exemple,
rescue-vm
est le disque de démarrage de la VM de secours etmy-recovery-disk
est le disque de démarrage de l'instantané de la VM inaccessible. Notez leNAME
de la VM inaccessible à utiliser à l'étape suivante.Pour chacun des disques que vous avez précédemment associés à la VM, procédez comme suit:
Identifiez le système de fichiers de chaque partition en exécutant la commande suivante:
fdisk -l /dev/NAME -o Device,Size,Type
Remplacez
NAME
par le nom du disque de démarrage de la VM inaccessible de l'étape précédente. Dans cet exemple, le nom seraitsdb
.Le résultat ressemble à ce qui suit :
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk model: PersistentDisk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD Device Size Type /dev/sdb1 2M BIOS boot /dev/sdb2 20M EFI System /dev/sdb3 10G Linux filesystem
La colonne
Type
liste le système de fichiers de chaque partition. Si le type de système de fichiers est manquant pour certaines partitions, exécutez la commande suivante:file -sL /dev/PARTITION_NAME
Remplacez
NAME
par le nom de la partition.La sortie varie en fonction du type de système de fichiers:
Aucun système de fichiers: si la sortie n'affiche que
data
, la partition ne contient pas de système de fichiers. Exemple de résultat :/dev/sdb1: data
Système de fichiers EFI: si la sortie décrit un secteur de démarrage DOS/MBR, la partition dispose d'un système de fichiers EFI. Exemple de résultat :
dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors 4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/ track 32, heads 64, serial number 0xf2af2664, label: "EFI ", FAT (16 bit)
Système de fichiers Linux: si la sortie décrit des données de système de fichiers, la partition est un système de fichiers Linux. Exemple de résultat :
/dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
Notez le nom de la partition du système de fichiers Linux.
Créez un point d'installation à l'emplacement
/rescue
:sudo mkdir /rescue
Installez la partition du système de fichiers Linux sur
/rescue
:sudo mount PARTITION_NAME /rescue
Remplacez PARTITION_NAME par le nom du système de fichiers Linux que vous avez noté précédemment.
Si vous souhaitez modifier le répertoire racine du système de fichiers à l'aide de la commande
chroot
, vous devez également installer le système de fichiers et les appareils virtuels en exécutant les commandes suivantes:sudo mount -t proc /proc /rescue/proc sudo mount -t sysfs /sys /rescue/sys sudo mount -o bind /dev /rescue/dev sudo mount -o bind /dev/pts /rescue/dev/pts sudo mount -o bind /run /rescue/run
Le système de fichiers du disque de démarrage inaccessible est maintenant installé dans
/rescue
. Vous pouvez parcourir le système de fichiers, modifier des fichiers de configuration, résoudre des problèmes ou récupérer les données.
Annuler les modifications et redémarrer la VM inaccessible
Une fois le problème résolu ou les données récupérées, vous devez rétablir la VM réelle. Pour restaurer la VM d'origine, procédez comme suit :
Désinstallez le disque supplémentaire installé dans
/rescue
dans la VM temporaire :cd ~ sudo umount /rescue
Dans Google Cloud Console, accédez à la page Instances de VM.
Accéder à la page "Instances de VM"
Sélectionnez la VM temporaire que vous avez créée.
Cliquez sur Modifier (
).Sous Disques supplémentaires, cliquez sur
pour le disque créé précédemment afin de dissocier le disque supplémentaire de la VM temporaire.Cliquez sur Enregistrer.
Accédez à la page Instances de VM de la console Google Cloud.
Accéder à la page "Instances de VM"
Si la VM inaccessible est toujours en cours d'exécution, arrêtez-la.
Cliquez sur le nom de la VM que vous venez d'arrêter, puis sur
Modifier.Sous Disque de démarrage, cliquez sur
Dissocier le disque de démarrage pour dissocier le disque de démarrage sortant de la VM inaccessible.Cliquez ensuite sur sauver une VM de la présente page.
CONFIGURER LE DISQUE DE DÉMARRAGE pour associer le disque que vous avez créé et corrigé précédemment dans la section- Dans la section Disque de démarrage, cliquez sur l'onglet Disques existants.
- Dans la liste déroulante, sélectionnez le disque que vous avez créé dans la section précédente, par exemple
my-recovery-disk
. - Cliquez sur Sélectionner, puis sur Enregistrer.
Vous devriez maintenant pouvoir vous connecter à la VM en SSH.