Après avoir modifié le type d'une instance Windows dans la console ECS en effectuant un changement inter-génération, il est possible que l'instance ne démarre pas et affiche un écran bleu avec l'erreur « INACCESSIBLE_BOOT_DEVICE », empêchant ainsi le chargement du système d'exploitation. Cette rubrique explique comment résoudre ce problème.
Description du problème
Conditions de déclenchement
Ce problème survient lorsque vous modifiez le type d'une instance ECS exécutant Windows en effectuant un changement inter-génération, par exemple en passant de la famille d'instances ecs.g7 (VirtIO-SCSI) à ecs.g8i (NVMe).
Symptômes
Une fois l'instance démarrée depuis la console ECS, vous ne pouvez pas vous y connecter via Bureau à distance (RDP). Si vous vous connectez à l'instance via une connexion VNC, vous constatez que le système d'exploitation affiche un écran bleu avec le message d'erreur Stop Code: (INACCESSIBLE_BOOT_DEVICE) lors du processus de démarrage.
Capture d'écran de l'erreur

Cause racine
Pour optimiser la vitesse de démarrage, le système d'exploitation Windows ne charge que les pilotes critiques requis par l'environnement matériel actuel lors d'un démarrage normal.
Lorsque vous modifiez le type d'une instance ECS en effectuant un changement inter-génération, le protocole d'interface du matériel de stockage sous-jacent peut changer.
Par exemple, si vous mettez à niveau une instance deecs.g7versecs.g8i, le pilote de stockage sous-jacent passe deVirtIO-SCSIàNVMe. Après la modification du type d'instance, le système d'exploitation tente toujours de charger l'ancien pilote de stockage (viostor.sys) pendant la phase de démarrage. Toutefois, le matériel utilise désormais l'interfaceNVMe. Par conséquent, le disque système ne peut pas être reconnu ou accessible, ce qui déclenche l'erreur d'écran bleuINACCESSIBLE_BOOT_DEVICEcar aucun périphérique amorçable n'est trouvé.
Solution de contournement
Cette solution de contournement vise à rétablir rapidement l'accès aux services, et non à fournir une solution permanente.
Pour rétablir rapidement vos services, modifiez le type d'instance pour revenir au type d'origine.
Une fois vos services rétablis, si vous devez toujours effectuer la mise à niveau vers le nouveau type d'instance, suivez d'abord les étapes décrites dans la section Mesures préventives pour préparer l'instance. Planifiez ensuite une nouvelle fenêtre de maintenance afin de modifier le type d'instance à nouveau.
Solutions
Solution 1 : Réparation automatique en mode sans échec (recommandée)
Cette solution utilise le mode sans échec de Windows pour charger automatiquement les pilotes génériques et résoudre le problème.
Avant d'effectuer la réparation, vous devez créer un snapshot manuel de l'instance afin d'éviter toute perte de données due à des erreurs de manipulation.
Procédure
Connectez-vous à l'instance défaillante via une connexion VNC. Après deux échecs de démarrage consécutifs, l'instance accède automatiquement à l'écran de récupération. Sur cet écran, sélectionnez Troubleshoot pour accéder à l'écran Advanced options.
Sur l'écran Advanced options, sélectionnez Startup Settings.
Sur l'écran Startup Settings, cliquez sur Restart.
Après le redémarrage de l'instance, le menu Advanced Boot Options s'affiche. Sélectionnez Safe Mode With Networking et appuyez sur
Enter. Attendez que le système se charge en mode sans échec.Suivez les instructions à l'écran pour vous connecter au système et accéder au bureau en mode sans échec. Le nouveau pilote de stockage est automatiquement chargé et enregistré.
Dans la console ECS, redémarrez l'instance puis connectez-vous à l'instance via une connexion VNC. Si l'instance démarre normalement et atteint le bureau Windows, le problème est résolu.
Solution 2 : Modification hors ligne du registre
Cette solution utilise les outils en ligne de commande de l'environnement de récupération Windows pour modifier le registre hors ligne et forcer le chargement du pilote de stockage.
Avant d'effectuer la réparation, vous devez créer un snapshot manuel de l'instance afin d'éviter toute perte de données due à des erreurs de manipulation.
Procédure
Connectez-vous à l'instance défaillante via une connexion VNC. Après deux échecs de démarrage consécutifs, l'instance accède automatiquement à l'écran de récupération. Sélectionnez Troubleshoot pour accéder à l'écran Advanced options.
Sélectionnez Command Prompt.
Sélectionnez un compte disposant de privilèges administratifs (administrator par défaut), saisissez le mot de passe et ouvrez l'invite de commandes.
Dans la fenêtre de l'invite de commandes, saisissez
regeditet appuyez sur Entrée pour ouvrir l'Registry Editor.Sélectionnez
HKEY_LOCAL_MACHINE. Dans la barre de menus, choisissez .Dans la boîte de dialogue de sélection de fichier qui s'affiche, accédez au chemin du fichier registre sur le disque système, généralement
C:\Windows\System32\config\SYSTEM, puis cliquez sur Open.Dans la boîte de dialogue Load Hive, spécifiez un nom de clé temporaire pour la ruche chargée, par exemple
OfflineSYSTEM, puis cliquez sur OK.Développez
HKEY_LOCAL_MACHINE\OfflineSYSTEM\Selectet vérifiez la valeur de la cléDefault. Par exemple, si la valeur est1, le jeu de contrôles actuel estControlSet001.-
Recherchez les chemins de registre suivants. Cliquez avec le bouton droit sur chaque chemin et sélectionnez Delete. Si un chemin n'existe pas, ignorez-le.
HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\AliNVMe\StartOverride HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\stornvme\StartOverride HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\viostor\StartOverride Sélectionnez la clé
OfflineSYSTEMque vous avez chargée. Dans la barre de menus, choisissez et confirmez l'action.Fermez l'éditeur du Registre et la fenêtre de l'invite de commandes. Revenez à l'écran des options, sélectionnez Continue et attendez que le système redémarre.
Résultat attendu : L'instance redémarre normalement et affiche l'écran de connexion Windows.
Solution 3 : Modification du registre avec une instance d'assistance
Cette solution consiste à attacher le disque système de l'instance défaillante à une instance d'assistance fonctionnelle pour effectuer une réparation du registre.
Avant d'effectuer la réparation, vous devez créer un snapshot de l'instance afin d'éviter toute perte de données due à des erreurs de manipulation.
Procédure
-
Préparez une instance Windows fonctionnelle (instance d'assistance) répondant aux exigences suivantes :
Image différente : L'image de l'instance d'assistance doit être différente de celle de l'instance défaillante.
Même zone : L'instance d'assistance doit se trouver dans la même zone que l'instance défaillante.
Dans la console ECS, arrêtez l'instance défaillante, détachez son disque système, puis attachez le disque système en tant que disque de données à l'instance d'assistance.
Connectez-vous à l'instance d'assistance via Workbench. Appuyez sur
Win+R, saisissezdiskmgmt.msc, puis appuyez surEnterpour ouvrir la Disk Management. Cliquez avec le bouton droit sur le disque nouvellement attaché et sélectionnez Online.Appuyez sur
Win+R, saisissezregedit, puis appuyez surEnterpour ouvrir l'Registry Editor.Sélectionnez
HKEY_LOCAL_MACHINE. Dans la barre de menus, choisissez .-
Dans la boîte de dialogue qui s'affiche, accédez au chemin du fichier registre sur le disque système nouvellement attaché et cliquez sur Open.
Par exemple, si la lettre de lecteur du disque système nouvellement attaché est D, le chemin du fichier registre est
D:\Windows\System32\config\SYSTEM. -
Dans la boîte de dialogue Load Hive, spécifiez un nom de clé temporaire pour la ruche chargée, par exemple
OfflineSYSTEM, puis cliquez sur OK.Une fois la ruche chargée, la nouvelle clé OfflineSYSTEM apparaît sous le nœud HKEY_LOCAL_MACHINE.
Développez
HKEY_LOCAL_MACHINE\OfflineSYSTEM\Selectet vérifiez la valeur de la cléDefault. Par exemple, si la valeur est1, le jeu de contrôles actuel estControlSet001.-
Recherchez les chemins de registre suivants. Cliquez avec le bouton droit sur chaque chemin et sélectionnez Delete. Si un chemin n'existe pas, ignorez-le.
HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\AliNVMe\StartOverride HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\stornvme\StartOverride HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\viostor\StartOverride Sélectionnez la clé
OfflineSYSTEMque vous avez chargée. Dans la barre de menus, choisissez . Confirmez l'action, puis quittez l'Registry Editor.Appuyez sur
Win+R, saisissezdiskmgmt.msc, puis appuyez surEnterpour ouvrir la Disk Management. Cliquez avec le bouton droit sur le disque nouvellement attaché et sélectionnez Offline.Dans la console ECS, détachez le cloud disk réparé de l'instance d'assistance, puis attachez-le à l'instance d'origine en tant que disque système.
Redémarrez l'instance défaillante, puis connectez-vous-y via une connexion VNC.
Résultat attendu : L'instance redémarre normalement et affiche l'écran de connexion Windows.
Mesures préventives
Pour éviter ce problème, vous devez effectuer les étapes suivantes avant de modifier le type d'une instance Windows en effectuant un changement inter-génération. Ces tâches forcent le système à charger tous les pilotes de stockage disponibles lors du prochain démarrage.
Avant d'effectuer la réparation, vous devez créer un snapshot manuel de l'instance afin d'éviter toute perte de données due à des erreurs de manipulation.
Console (Cloud Assistant)
Sur la page Cloud Assistant de la console ECS, créez une commande PowerShell.
-
Collez les commandes suivantes dans la zone Command Content.
reg delete HKLM\SYSTEM\CurrentControlSet\Services\stornvme\StartOverride /f reg delete HKLM\SYSTEM\CurrentControlSet\Services\AliNVMe\StartOverride /f reg delete HKLM\SYSTEM\CurrentControlSet\Services\viostor\StartOverride /f Sélectionnez les instances que vous souhaitez modifier et cliquez sur Run. Ignorez les messages d'erreur « not found ».
Une fois les commandes exécutées avec succès, vous pouvez modifier le type d'instance dans la console ECS.
In-instance (manual)
Connectez-vous à l'instance Windows dont vous souhaitez modifier le type.
Appuyez sur
Win+R, saisissezpowershell, puis appuyez surEnterpour ouvrirPowerShell.-
Exécutez les commandes suivantes pour supprimer les informations de registre associées. Ignorez les messages d'erreur « not found ».
reg delete HKLM\SYSTEM\CurrentControlSet\Services\stornvme\StartOverride /f reg delete HKLM\SYSTEM\CurrentControlSet\Services\AliNVMe\StartOverride /f reg delete HKLM\SYSTEM\CurrentControlSet\Services\viostor\StartOverride /f Une fois les commandes exécutées avec succès, vous pouvez modifier le type d'instance dans la console ECS.
In-instance (plugin)
Connectez-vous à l'instance Windows dont vous souhaitez modifier le type.
Appuyez sur
Win+R, saisissezpowershell, puis appuyez surEnterpour ouvrirPowerShell.-
Exécutez les commandes suivantes pour accéder au répertoire Cloud Assistant et supprimer les informations de registre associées. Ignorez les messages d'erreur « not found ».
cd (Get-ChildItem "C:\ProgramData\aliyun\assist\" -Directory | Where-Object { $_.Name -match '^\d+(\.\d+){2,3}$' } | Sort-Object { [version]$_.Name } -Descending | Select-Object -First 1).FullName ./acs-plugin-manager.exe -e -P ACS-ECS-ScsiNvmeBootfix Une fois les commandes exécutées avec succès, vous pouvez modifier le type d'instance dans la console ECS.