Résoudre les problèmes de démarrage de la machine virtuelle Linux en raison d’erreurs fstab

Remarque

CentOS référencé dans cet article est une distribution Linux qui atteint la fin de vie (EOL). Tenez compte de votre utilisation et planifiez en conséquence. Pour plus d’informations, consultez Guide sur la fin de vie de CentOS.

La table du système de fichiers Linux, fstab, est une table de configuration conçue pour configurer des règles dans lesquelles des systèmes de fichiers spécifiques sont détectés et montés de manière ordonnée pendant le processus de démarrage du système. Cet article traite de plusieurs conditions dans lesquelles une mauvaise configuration fstab peut entraîner un problème de démarrage et fournit des conseils de dépannage.

Quelques raisons courantes pouvant entraîner des problèmes de démarrage de machine virtuelle en raison d’une mauvaise configuration de fstab sont répertoriées ci-dessous :

  • Le nom du système de fichiers traditionnel est utilisé à la place de l’identificateur unique universel (UUID) du système de fichiers.
  • Un UUID incorrect est utilisé.
  • Une entrée existe pour un périphérique non connecté sans option nofail dans la configuration fstab.
  • Entrée incorrecte dans la configuration fstab.

Identifier les problèmes de fstab

Vérifiez l’état de démarrage actuel de la machine virtuelle dans le journal série du panneau [Boot diagnostics] (/azure/virtual-machines/boot-diagnostics#boot-diagnostics-view) du portail Azure. La machine virtuelle sera en mode Urgence. Vous voyez des entrées de journal qui ressemblent à l’exemple suivant conduisant à l’état du mode d’urgence :

[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
[[1;33mDEPEND[0m] Dependency failed for /data.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
…
Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode.
Give root password for maintenance
(or type Control-D to continue)

Remarque

« /data » est un exemple de point de montage utilisé. L’échec de la dépendance pour le point de montage du système de fichiers diffère en fonction des noms utilisés.

Résolution

Il existe 2 façons de résoudre le problème :

Réparer la machine virtuelle en mode en ligne

Utiliser la console série

  1. Connectez-vous à la console série de la VM depuis le portail Azure.
  2. Un accès manuel au mode mono-utilisateur est nécessaire pour reconfigurer fstab. Les étapes peuvent varier en fonction du type de système d’exploitation Linux utilisé et de l’accès au compte root. Suivez la documentation mode mono-utilisateur pour accéder au mode mono-utilisateur pour chaque image partenaire Linux prise en charge.
Étapes de dépannage de Fstab
  1. Une fois que la machine virtuelle a démarré en mode mono-utilisateur. Utilisez votre éditeur de texte préféré pour ouvrir le fichier fstab.

    vi /etc/fstab
    
  2. Passez en revue les systèmes de fichiers répertoriés dans /etc/fstab. Chaque ligne du fichier fstab indique un système de fichiers monté au démarrage de la machine virtuelle. Pour plus d’informations sur la syntaxe du fichier fstab, exécutez la commande man fstab. Pour résoudre un échec de démarrage, passez en revue l’entrée du système de fichiers qui n’a pas pu être monté. C’est une bonne pratique de revoir chaque ligne pour s’assurer qu’elle est correcte dans sa structure et son contenu. Quelques points à considérer pour administrer correctement un fichier fstab sont les suivants :

    • Les champs de chaque ligne sont séparés par des tabulations ou des espaces. Les lignes vides sont ignorées. Les lignes dont le premier caractère est un signe dièse (#) sont des commentaires. Les lignes commentées peuvent rester dans le fichier fstab, mais elles ne seront pas traitées. Nous vous recommandons de commenter les lignes fstab dont vous n’êtes pas sûr au lieu de supprimer les lignes.

    • Montez les disques de données sur les machines virtuelles Azure à l’aide de l’UUID de la partition du système de fichiers. Pour déterminer l’UUID du système de fichiers, exécutez la commande blkid. Pour afficher des informations sur la syntaxe, exécutez la commande man blkid. Exemple d’entrée UUID dans le fichier fstab :

      UUID=<UUID number here>  /data      xfs    defaults,nofail 0  0
      
    • Utilisez l’option nofail dans les entrées du système de fichiers (disques de données) pour permettre au démarrage de continuer même après que des erreurs se soient produites dans les partitions pour les entrées correspondantes. L’option nofail permet de s’assurer que la machine virtuelle démarre même si le système de fichiers est corrompu ou s’il n’existe pas au démarrage.

  3. Enregistrez les modifications apportées au fichier fstab.

  4. Utilisez mount -a comme bonne pratique après avoir apporté des modifications aux entrées fstab. Cela réexécutera la configuration de fstab et informera les utilisateurs de toute erreur de syntaxe ou d’entrée existante.

  5. Une fois la syntaxe et les entrées vérifiées, redémarrez la machine virtuelle à l’aide de la commande ci-dessous.

    reboot -f
    
  6. Si le commentaire ou le correctif des entrées a réussi, le système doit atteindre une invite bash dans le portail. Vérifiez si vous pouvez vous connecter à la machine virtuelle.

Remarque

Vous pouvez également utiliser la commande « ctrl x » qui redémarrerait également la machine virtuelle.

Réparer la machine virtuelle en mode hors connexion

Si l’accès à la console série de la machine virtuelle n’est pas disponible, une solution alternative consiste à réparer la machine virtuelle hors ligne. Il existe deux façons d’adopter une approche hors ligne :

Utiliser la réparation automatique Azure Linux (ALAR)

Les scripts Azure Linux Auto Repair (ALAR) font partie de l’extension de réparation de machine virtuelle décrite dans Réparer une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure. ALAR couvre l’automatisation de plusieurs scénarios de réparation, y compris les problèmes /etc/fstab.

Les scripts ALAR utilisent la commande d’extension de réparation run et son option --run-id. L’ID de script pour la récupération automatique est : linux-alar2. Implémentez les étapes suivantes pour automatiser les erreurs fstab via l’approche ALAR hors ligne :

az vm repair create --verbose -g centos7 -n cent7 --repair-username rescue --repair-password 'password!234' --copy-disk-name  repairdiskcopy
az vm repair run --verbose -g centos7 -n cent7 --run-id linux-alar2 --parameters fstab --run-on-repair
az vm repair restore --verbose -g centos7 -n cent7

Remarque

Le nom du groupe de ressources « centos7 », le nom de la machine virtuelle « cent7 » et --copy-disk-name « repairdiskcopy » sont des exemples et les valeurs doivent être modifiées en conséquence.

Le script de réparation fstab effectuera une sauvegarde du fichier d’origine et supprimera toutes les lignes du fichier /etc/fstab qui ne sont pas nécessaires pour démarrer un système. Après un démarrage réussi du système d’exploitation, éditez à nouveau le fstab et corrigez toutes les erreurs qui n’autorisaient pas un redémarrage du système auparavant.

Alternativement, une fois qu’une machine virtuelle de réparation est créée, les modifications peuvent également être mises en œuvre en se connectant manuellement à la machine virtuelle de réparation, en montant la copie jointe du disque du système d’exploitation et en apportant des modifications à son fichier fstab. Consultez les étapes décrites ici :

  • Créez une machine virtuelle de réparation à l’aide de la commande az vm repair create.
  • Pour monter et chrooter les systèmes de fichiers du disque du système d’exploitation attaché dans une machine virtuelle de secours, suivez les instructions chroot détaillées.
  • Ensuite, suivez les mêmes étapes de dépannage fstab que ci-dessus.
  • Une fois les modifications appliquées, la commande az vm repair restore peut être utilisée pour effectuer un échange automatique de disque du système d’exploitation avec la machine virtuelle d’origine.

Utiliser la méthode manuelle

Si la console série et l’approche ALAR ne sont pas possibles ou échouent, la réparation doit être effectuée manuellement. Suivez les étapes ici pour attacher manuellement le disque du système d’exploitation à une machine virtuelle de récupération et remplacer le disque du système d’exploitation par la machine virtuelle d’origine :

Une fois le disque du système d’exploitation correctement connecté à la machine virtuelle de récupération, suivez les instructions chroot détaillées pour monter et chrooter les systèmes de fichiers du disque du système d’exploitation connecté. Ensuite, implémentez les étapes de dépannage fstab pour apporter les modifications appropriées au fichier fstab du disque du système d’exploitation problématique.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.