Freigeben über


Behandeln von PROBLEMEN mit LIS/Hyper-V-Treibern auf virtuellen Linux-Computern

Gilt für: ✔️ Linux-VMs

Wenn Sie einen virtuellen Linux-Computer (VM) auf Azure ausführen, sind die Hyper-V-Treiber, die auch als LIS-Treiber (Linux Integration Services) bezeichnet werden, entscheidend für ordnungsgemäße VM-Vorgänge. Diese Treiber ermöglichen es dem virtuellen Computer, mit dem zugrunde liegenden Azure-Hypervisor zu kommunizieren. Wenn diese Treiber fehlen oder nicht ordnungsgemäß geladen wurden, kann der virtuelle Computer nicht gestartet werden. Dieser Artikel enthält Lösungen für LIS/Hyper-V-Treiberprobleme in Azure Linux-VMs.

Voraussetzungen

Symptome

In einem der folgenden Szenarien kann der Start von Linux-V-Computern fehlschlagen, da Hyper-V-Treiber fehlen oder deaktiviert sind:

  • Nachdem Sie eine Linux-VM von der lokalen Bereitstellung zu Azure migriert haben.

    Wenn ein virtueller Computer von einem anderen Hypervisor zu Azure migriert wird (z. B. VMware oder kernelbasierter virtueller Computer (VM), werden die erforderlichen Hyper-V-Treiber hv_vmbus, , , hv_storvscund hv_netvschv_utils möglicherweise nicht installiert oder aktiviert, sodass der virtuelle Computer Speicher- und Netzwerkgeräte erkennt.

  • Nachdem Sie die Hyper-V-Treiber deaktiviert und den virtuellen Computer neu gestartet haben.

  • Wenn die Hyper-V-Treiber nicht in den Initramfs enthalten sind.

Wenn Sie die seriellen Konsolenprotokolle für verschiedene Linux-VMs (Red Hat, Oracle, SUSE oder Ubuntu) überprüfen, werden häufig die folgenden Probleme beobachtet:

Problembeschreibung Beschreibung
VM Stuck at dracut/initramfs VM kann nicht gestartet werden und fällt aufgrund fehlender Speichertreiber in eine Initramfs-Shell oder einen Notfallmodus.
Kernel-Panik beim Start Systemabstürzen beim Start aufgrund fehlender kritischer Hyper-V-Module.
Fehler beim Datenträger nicht gefunden Der Startvorgang schlägt mit Fehlern wie cannot find root device oder unable to mount root filesystem.
Keine Netzwerkkonnektivität Auch wenn der virtuelle Computer gestartet wird, werden möglicherweise keine Netzwerkschnittstellen erkannt, was den Zugriff auf Secure Shell (SSH) verhindert.
Grub-Startfehler Das System kann das Bootloader aufgrund fehlender Hyper-V-Speichertreiber nicht laden.
Langsamer Start mit ACPI-Fehlern VM kann lange dauern, bis sie mit den zugehörigen ACPI-Warnungen (Advanced Configuration and Power Interface) gestartet wird, die durch fehlende Hyper-V-Unterstützung verursacht werden.
Fehler beim Anfügen von Azure-Datenträgern Von Azure verwaltete Datenträger werden aufgrund fehlender Speichertreiber möglicherweise nicht erkannt oder ordnungsgemäß bereitgestellt.
Cloud-Init- oder Waagent-Fehler Azure-Bereitstellungstools (cloud-init oder waagent) können den virtuellen Computer möglicherweise nicht ordnungsgemäß konfigurieren.

Hier sind Protokolleintragsbeispiele:

  • Output 1

    [  201.568597] dracut-initqueue[351]: Warning: dracut-initqueue: starting timeout scripts
    [  202.086401] dracut-initqueue[351]: Warning: dracut-initqueue: timeout, still waiting for following initqueue hooks:
    [  202.097772] dracut-initqueue[351]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2fmapper\x2frootvg-rootlv.sh: "if ! grep -q After=remote-fs-pre.target /run/systemd/generator/systemd-cryptsetup@*.service 2>/dev/null; then
    [  202.128885] dracut-initqueue[351]:     [ -e "/dev/mapper/rootvg-rootlv" ]
    [  202.138322] dracut-initqueue[351]: fi"
    [  202.142466] dracut-initqueue[351]: Warning: dracut-initqueue: starting timeout scripts
    [  202.674872] dracut-initqueue[351]: Warning: dracut-initqueue: timeout, still waiting for following initqueue hooks:
    [  202.692200] dracut-initqueue[351]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2fmapper\x2frootvg-rootlv.sh: "if ! grep -q After=remote-fs-pre.target /run/systemd/generator/systemd-cryptsetup@*.service 2>/dev/null; then
    [  202.724308] dracut-initqueue[351]:     [ -e "/dev/mapper/rootvg-rootlv" ]
    [  202.731292] dracut-initqueue[351]: fi"
    [  202.732288] dracut-initqueue[351]: Warning: dracut-initqueue: starting timeout scripts
    [  202.740791] dracut-initqueue[351]: Warning: Could not boot.
             Starting Dracut Emergency Shell...
    Warning: /dev/mapper/rootvg-rootlv does not exist
    Generating "/run/initramfs/rdsosreport.txt"
    Entering emergency mode. Exit the shell to continue.
    Type "journalctl" to view system logs.
    You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
    after mounting them and attach it to a bug report.
    dracut:/# 
    dracut:/# 
    dracut:/# 
    
  • Output 2

    Gave up waiting for root file system device.  Common problems:
     - Boot args (cat /proc/cmdline)
       - Check rootdelay= (did the system wait long enough?)
     - Missing modules (cat /proc/modules; ls /dev)
    ALERT!  UUID=143c811b-9b9c-48f3-b0c8-040f6e65f50aa does not exist.  Dropping to a shell!
    BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.4) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    (initramfs)
    

Wenn die Ausführung cat /proc/partitions in der Dracut-Shell keine Speichergeräte anzeigt, gibt sie an, dass der Hyper-V-Speichertreiber hv_storvsc fehlt oder nicht geladen ist. Ohne diesen Treiber kann der virtuelle Computer seine virtuellen Datenträger nicht erkennen, was zu einem Startfehler führt.

dracut:/# cat /proc/partitions 
dracut:/# 
dracut:/# 

Ursache

Wenn LIS/Hyper-V-Treiber fehlen oder nicht ordnungsgemäß geladen werden, wird der virtuelle Computer möglicherweise aus den folgenden Gründen nicht gestartet:

  • Fehlende Datenträger- und Netzwerktreiber

    Azure-VMs basieren auf Hyper-V-Speicher- und Netzwerktreibern (z. B hv_storvsc . und hv_netvsc). Ohne diese Treiber kann der virtuelle Computer den Betriebssystemdatenträger (Os) nicht erkennen, was zu einem Startfehler führt.

  • Fehlende Unterstützung für synthetische Geräte

    Azure-VMs verwenden synthetische Geräte (z. B. für Speicher und Netzwerk), die Hyper-V-Treiber erfordern. Ohne diese Treiber erkennt der Kernel möglicherweise keine kritischen Komponenten.

  • Hyper-V VMBus-Kommunikationsfehler

    Wichtige Komponenten wie hv_vmbus das Verarbeiten der Kommunikation zwischen dem virtuellen Computer und dem Azure-Hypervisor. Wenn dieser Treiber fehlt, kann der virtuelle Computer nicht ordnungsgemäß initialisiert werden.

  • Kernel-Panik oder Initramfs-Eingabeaufforderung

    Ohne die erforderlichen Treiber kann die VM aufgrund der Unfähigkeit, die Stammdateisystem zu mounten, auf eine Initramfs-Shell fallen, was zu einem Startfehler führt.

Lösung 1: Aktivieren von Hyper-V-Treibern

Hinweis

Diese Lösung gilt für das Szenario, in dem Hyper-V-Treiber deaktiviert sind.

  1. Verwenden Sie VM-Reparaturbefehle , um eine Reparatur-VM zu erstellen, die über eine Kopie des Betriebssystemdatenträgers der betroffenen VM verfügt.

    Hinweis

    Alternativ können Sie mithilfe des Azure-Portals manuell eine Rettungs-VM erstellen. Weitere Informationen finden Sie unter Beheben von Problemen mit einer Linux-VM durch Hinzufügen des Betriebssystemdatenträgers zu einer Wiederherstellungs-VM im Azure-Portal.

  2. Mounten Sie die Kopie der OS-Dateisysteme in der Reparatur-VM mithilfe von chroot.

  3. Wechseln Sie nach Abschluss des Chroot-Prozesses zum Verzeichnis "/etc/modprobe.d ".

  4. Identifizieren Sie die Datei, die den hv_ Treiber und die entsprechenden Zeilennummern deaktiviert:

    grep -nr "hv_" /etc/modprobe.d/
    
  5. Ändern Sie die entsprechende Datei, und kommentieren Sie sie aus, oder löschen Sie die hv_ Einträge:

    vi /etc/modprobe.d/disable.conf
    

    Hinweis

    • Die Einträge, die Treiber deaktivieren, werden vom Linux-Betriebssystem anstelle von Microsoft definiert.
    • Ersetzen Sie sie disable.conf durch den entsprechenden Dateinamen, in dem der hv_ Treiber deaktiviert ist.

Lösung 2: Generieren fehlender Hyper-V-Treiber in den Initramfs

Hinweis

Diese Lösung gilt für das Szenario, in dem Hyper-V-Treiber nach der VM-Migration von der lokalen zu Azure fehlen.

  1. Verwenden Sie VM-Reparaturbefehle , um eine Reparatur-VM zu erstellen, die über eine Kopie des Betriebssystemdatenträgers der betroffenen VM verfügt.

    Hinweis

    Alternativ können Sie mithilfe des Azure-Portals manuell eine Rettungs-VM erstellen. Weitere Informationen finden Sie unter Beheben von Problemen mit einer Linux-VM durch Hinzufügen des Betriebssystemdatenträgers zu einer Wiederherstellungs-VM im Azure-Portal.

  2. Mounten Sie die Kopie der OS-Dateisysteme in der Reparatur-VM mithilfe von chroot.

  3. Überprüfen Sie nach Abschluss des Chroot-Prozesses, ob hv_ Treiber im aktuellen Kernel fehlen:

    • Für RHEL-basierte Bilder:

      lsinitrd /boot/initramfs-<kernel-version>.img | grep -i hv_
      
    • Für SLES-basierte Bilder:

      lsinitrd /boot/initrd-<versión-del-kernel> | grep -i hv_
      
    • Für Ubuntu/Debian-basierte Images:

      lsinitrd /boot/initrd.img-$(uname -r)  | grep -i hv_
      

    Hinweis

    Der Hyper-V-Speichertreiber hv_storvsc oder andere werden möglicherweise nicht initramfs angezeigt, da er manchmal direkt in den Kernel integriert ist, insbesondere in azureoptimierte Kernels. In solchen Fällen lädt das System es automatisch beim Start und stellt die Speicherfunktionalität sicher. Wenn der virtuelle Computer den Speicher ordnungsgemäß startet und erkennt, ist keine Aktion erforderlich.

  4. Bearbeiten Sie die Datei "/etc/dracut.conf " oder "/etc/initramfs-tools/modules ", je nach Ihrer Linux-Verteilung, und fügen Sie der Datei die folgende Zeile hinzu:

    • Für RHEL/SLES-basierte Bilder:

      vi /etc/dracut.conf
      
      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    • Für Ubuntu/Debian-basierte Images:

      vi /etc/initramfs-tools/modules
      
      hv_vmbus
      hv_netvsc
      hv_storvsc
      
  5. Erstellen Sie das anfängliche RAM-Datenträgerimage für den betroffenen Kernel neu, indem Sie die Schritte zum manuellen Generieren fehlender Initramfs ausführen.

Häufig gestellte Fragen (FAQ)

Wenn einige Probleme auftreten, z. B. Konnektivität, wie kann ich sicherstellen, dass der Netzwerktreiber, hv_netvsc, nach einem Neustart oder Neustart des Systems wie erwartet funktioniert?

Um zu bestätigen, dass der Hyper-V-Netzwerktreiber (hv_netvsc) aktiv und funktionsfähig ist, überprüfen Sie die Systemprotokolle, und suchen Sie nach dem folgenden Eintrag:

*hv\_vmbus: registering driver hv\_netvsc*

Diese Meldung gibt an, dass der Treiberregistrierungsprozess gestartet wurde. Wenn danach keine weiteren Fehler gemeldet werden, wurde der Treiber erfolgreich geladen und funktioniert ordnungsgemäß. Dies weist darauf hin, dass die von Hyper-V bereitgestellte synthetische Netzwerkschnittstelle erkannt wurde und der Treiber die Netzwerkverbindung ordnungsgemäß verarbeitet.

References

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.