Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
- Zugriff auf Azure-Befehlszeilenschnittstelle (CLI)
- Möglichkeit zum Erstellen einer Reparatur-/Rettungs-VM
- Zugriff auf die serielle Konsole
- Vertrautheit mit Linux-Befehlen und Systemverwaltung
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_storvsc
undhv_netvsc
hv_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
. undhv_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.
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.
Mounten Sie die Kopie der OS-Dateisysteme in der Reparatur-VM mithilfe von chroot.
Wechseln Sie nach Abschluss des Chroot-Prozesses zum Verzeichnis "/etc/modprobe.d ".
Identifizieren Sie die Datei, die den
hv_
Treiber und die entsprechenden Zeilennummern deaktiviert:grep -nr "hv_" /etc/modprobe.d/
Ä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 derhv_
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.
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.
Mounten Sie die Kopie der OS-Dateisysteme in der Reparatur-VM mithilfe von chroot.
Ü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.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
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
- Erstellen und Hochladen eines generischen virtuellen Linux-Computers in Azure
- Eine Linux-VM startet nach einem LIS-Upgrade nicht ordnungsgemäß mit Kernel 3.10.0-514.16.
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.