J'ai mis à niveau mon Azure VM Ubuntu 18.04 (LTS) vers 20.04 (LTS) et redémarré, mais je n'ai pas pu me connecter à distance avec SSH indéfiniment.
La console série Azure Portal ne répond pas non plus. Le message suivant s'affiche dans la capture d'écran du diagnostic de démarrage de la machine virtuelle Azure dans le portail Azure.
'grub_file_filters' not found
Grub semble être cassé.
J'ai mis à niveau vers Ubuntu 18.04 (LTS) de Azure VM par connexion à distance depuis Ubuntu de WSL avec SSH et en suivant la procédure ci-dessous.
Vérifiez et appliquez les mises à jour à l'avance
$ sudo apt update
$ sudo apt upgrade
Effectuez la mise à niveau
$ sudo do-release-upgrade
Les choix sont basiques y (OUI), toutes les suggestions de mise à niveau acceptées, LXD 4.0
Redémarrez pour terminer la mise à niveau
Impossible de redémarrer ... ('grub_file_filters' introuvable)
Je souhaite réinstaller et réparer Grub, mais lorsque je me demandais ce qui s'était passé dans l'environnement Azure VM, j'ai trouvé les informations suivantes de Microsoft.
Il n'y avait aucune information correspondante dans "Étapes recommandées", j'ai donc suivi le lien.
Comment récupérer une machine virtuelle Azure Linux à partir de problèmes de démarrage liés au noyau
Je pensais qu'il s'agissait de "Méthode 2: Réparation hors ligne" de "Comment mettre à jour le fichier de configuration", alors j'ai regardé le lien.
Troubleshoot a Linux VM by attaching the OS disk to a recovery VM with the Azure CLI
J'ai résolu le problème en créant un disque à partir d'un instantané du disque du système d'exploitation de la machine virtuelle Azure problématique et en le montant sur la machine virtuelle Azure pour réparation, comme décrit dans la section «Présentation du processus de récupération» ci-dessous. Il semble que nous pouvons y aller en revenant à la machine virtuelle Azure d'origine.
Stop the affected VM.
Take a snapshot from the OS disk of the VM.
Create a disk from the OS disk snapshot.
Attach and mount the new OS disk to another Linux VM for troubleshooting purposes.
Connect to the troubleshooting VM. Edit files or run any tools to fix issues on the new OS disk.
Unmount and detach the new OS disk from the troubleshooting VM. Change the OS disk for the affected VM.
Depuis le portail Azure, vous avez arrêté la machine virtuelle Azure problématique.
Vous pouvez installer la dernière version d'Azure CLI et arrêter d'utiliser Azure CLI. ..
> az login
> az vm stop --resource-group <Nom du groupe de ressources> --name <Nom de la machine virtuelle>
Prenez un instantané du disque du système d'exploitation de la machine virtuelle Azure problématique.
J'utilise Azure CLI. (Créer un instantané basé sur l'ID du disque)
> $osdiskid=(az vm show -g <Nom du groupe de ressources> -n <Nom de la machine virtuelle> --query "storageProfile.osDisk.managedDisk.id" -o tsv)
> az snapshot create --resource-group <Nom du groupe de ressources> --source "$osdiskid" --name <Nom de l'instantané>
Créez un disque géré à réparer en fonction de l'instantané créé.
J'utilise Azure CLI. (Créer un disque géré basé sur l'instantané)
> $resourceGroup="<Nom du groupe de ressources>"
> $snapshot="<Nom de l'instantané>"
> $osDisk="<Nouveau nom de disque = pour réparation>"
> $diskSize=30 #Spécifiez la taille requise (Go)
> $storageType="Standard_LRS" #Spécifiez le type de stockage requis
> $osType="Linux" #Spécifiez le type de système d'exploitation requis
> $snapshotId=(az snapshot show --name $snapshot --resource-group $resourceGroup --query id -o tsv)
> az disk create --resource-group $resourceGroup --name $osDisk --sku $storageType --size-gb $diskSize --source $snapshotId
À partir du portail Azure, nous avons créé une nouvelle machine virtuelle Azure à utiliser dans les réparations.
Référence
Vous créez des machines virtuelles, des adresses IP publiques, des groupes de sécurité réseau et des interfaces réseau de même taille dans le même réseau virtuel dans le même groupe de ressources.
J'ai défini l'étiquette de nom DNS sur la machine virtuelle créée et j'ai confirmé qu'elle pouvait être connectée à distance par SSH.
Depuis le portail Azure, j'ai connecté le disque créé à partir de l'instantané à la machine virtuelle Azure pour réparation.
Vous pouvez connecter le disque à l'aide de l'interface de ligne de commande Azure.
> $newdiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)
> az vm disk attach --disk $newdiskid --resource-group $resourceGroup --size-gb $diskSize --sku $storageType --vm-name <Nom de la machine virtuelle pour la réparation>
J'ai établi une connexion à distance à la machine virtuelle Azure à utiliser pour la réparation par SSH et monté le disque connecté.
Vérifiez l'utilisation du disque de la machine virtuelle Azure pour la réparation.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 394M 676K 393M 1% /run
/dev/sdc1 29G 1.4G 28G 5% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sdc15 105M 3.6M 101M 4% /boot/efi
/dev/sdb1 7.9G 36M 7.4G 1% /mnt
tmpfs 394M 0 394M 0% /run/user/1000
Liste des périphériques de bloc pour voir les disques à monter.
$ lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
sda 3:0:0:0 30G
├─sda1 29.9G
├─sda14 4M
└─sda15 106M
sdb 1:0:1:0 8G
└─sdb1 8G /mnt
sdc 0:0:0:0 30G
├─sdc1 29.9G /
├─sdc14 4M
└─sdc15 106M /boot/efi
Puisque sdb et sdc sont montés, sda semble être le disque à réparer.
Créez un répertoire de montage et montez sda1 de sda.
$ sudo mkdir /datadrive
$ sudo mount /dev/sda1 /datadrive
Assurez-vous que vous avez monté le disque à réparer.
$ ls /datadrive/
bin dev home initrd.img.old lib64 media opt root sbin srv tmp var vmlinuz.old
boot etc initrd.img lib lost+found mnt proc run snap sys usr vmlinuz
Liez mount sys, proc, dev pour basculer vers l'environnement chroot pour jouer avec le disque monté à réparer.
$ sudo mount --bind /sys /datadrive/sys
$ sudo mount --bind /proc /datadrive/proc
$ sudo mount --bind /dev /datadrive/dev
$ sudo chroot /datadrive
Installez Grub sur le disque à réparer.
$ sudo grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Démontez le disque réparé.
$ cd /
$ sudo umount /dev/sda1
Depuis le portail Azure, vous avez déconnecté le disque réparé qui est connecté à la machine virtuelle Azure pour réparation.
Vous pouvez déconnecter le disque à l'aide de l'interface de ligne de commande Azure.
> az vm disk detach -g <Nom du groupe de ressources> --vm-name <Nom de la machine virtuelle pour la réparation> --name <Nouveau nom de disque = pour réparation>
Si vous n'en avez pas besoin, arrêtez la machine virtuelle Azure pour la réparation.
Depuis le portail Azure, j'ai arrêté la machine virtuelle Azure problématique et remplacé le disque du système d'exploitation par un disque réparé.
J'utilise "OS Disk Swap" du disque de la machine virtuelle dans Azure Portal.
Vous pouvez modifier le disque à l'aide de l'interface de ligne de commande Azure.
> az vm stop -n <Nom de la machine virtuelle> -g <Nom du groupe de ressources>
> $newdiskid=(az vm show -g <Nom du groupe de ressources> -n <Nouveau nom de disque = pour réparation> --query id -o tsv)
> az vm update -g <Nom du groupe de ressources> -n <Nom de la machine virtuelle> --os-disk $newdiskid
> az vm start -n <Nom de la machine virtuelle> -g <Nom du groupe de ressources>
J'ai confirmé que je pouvais me connecter à distance à la machine virtuelle Azure que j'ai remplacée par le disque réparé via SSH. La mise à niveau vers 20.04 (LTS) est également terminée.
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-1031-azure x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Nov 7 13:14:17 JST 2020
System load: 0.04 Processes: 139
Usage of /: 26.2% of 28.90GB Users logged in: 1
Memory usage: 61% IPv4 address for eth0: 10.0.0.5
Swap usage: 0%
* Introducing self-healing high availability clustering for MicroK8s!
Super simple, hardened and opinionated Kubernetes for production.
https://microk8s.io/high-availability
0 updates can be installed immediately.
0 of these updates are security updates.
Last login: Fri Nov 6 13:55:00 2020 from 133.200.8.0
Supprimez tous les éléments inutiles tels que les instantanés et les disques avant le remplacement.
Si vous souhaitez conserver la machine virtuelle Azure pour réparation, vous pouvez la laisser arrêtée (désallouée) en toute sécurité.
Je suis content d'avoir pu le réparer en conséquence, mais j'aurais dû le sauvegarder avant la mise à niveau.