Dela via


Felsöka LIS/Hyper-V-drivrutinsproblem på virtuella Linux-datorer

Gäller för: ✔️ Virtuella Linux-datorer

När du kör en virtuell Linux-dator (VM) på Azure är Hyper-V-drivrutinerna, även kallade LIS-drivrutiner (Linux Integration Services), avgörande för lämpliga VM-åtgärder. Med de här drivrutinerna kan den virtuella datorn kommunicera med det underliggande Azure-hypervisor-programmet. Om dessa drivrutiner saknas eller inte läses in korrekt kan den virtuella datorn misslyckas med att starta. Den här artikeln innehåller lösningar på LIS/Hyper-V-drivrutinsproblem på virtuella Azure Linux-datorer.

Förutsättningar

  • Åtkomst till Azures kommandoradsgränssnitt (CLI)
  • Möjlighet att skapa en reparations-/räddnings-VM
  • Åtkomst via seriekonsol
  • Kunskaper om Linux-kommandon och systemadministration

Symptom

I något av följande scenarier kan virtuella Linux-datorer misslyckas med att starta eftersom Hyper-V-drivrutiner saknas eller inaktiveras:

  • När du har migrerat en virtuell Linux-dator från en lokal plats till Azure.

    När en virtuell dator migreras till Azure från en annan hypervisor (till exempel VMware eller kernelbaserad virtuell dator (KVM)), kanske de nödvändiga Hyper-V-drivrutinerna hv_vmbus, hv_storvsc, hv_netvscoch hv_utils kanske inte installeras eller aktiveras, vilket hindrar den virtuella datorn från att identifiera lagrings- och nätverksenheter.

  • När du har inaktiverat Hyper-V-drivrutinerna och startat om den virtuella datorn.

  • När Hyper-V-drivrutinerna inte ingår i initramferna.

När du granskar seriekonsolloggarna för olika virtuella Linux-datorer (Red Hat, Oracle, SUSE eller Ubuntu) observeras vanligtvis följande problem:

Symptom Beskrivning
Virtuell dator har fastnat på dracut/initramfs Den virtuella datorn kan inte startas och hamnar i ett initramfs-gränssnitt eller nödläge på grund av saknade lagringsdrivrutiner.
Kernel Panic vid start Systemet kraschar under start på grund av att kritiska Hyper-V-moduler saknas.
Fel hittades inte på disken Startprocessen misslyckas med fel som cannot find root device eller unable to mount root filesystem.
Ingen nätverksanslutning Även om den virtuella datorn startar kanske inte nätverksgränssnitt identifieras, vilket förhindrar åtkomst till Secure Shell (SSH).
Grub-startfel Systemet kan misslyckas med att läsa in startladdaren på grund av saknade Hyper-V-lagringsdrivrutiner.
Långsam start med ACPI-fel Det kan ta lång tid att starta den virtuella datorn med acpi-relaterade varningar (Advanced Configuration and Power Interface) som orsakas av att Hyper-V-stöd saknas.
Det gick inte att ansluta Azure-diskar Azure-hanterade diskar kanske inte identifieras eller monteras korrekt på grund av saknade lagringsdrivrutiner.
Cloud-Init- eller Waagent-fel Azure-etableringsverktyg (cloud-init eller waagent) kan misslyckas med att konfigurera den virtuella datorn korrekt.

Här är exempel på logginmatning:

  • Utdata 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:/# 
    
  • Utdata 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)
    

Om körningen cat /proc/partitions i dracut-gränssnittet inte visar några lagringsenheter anger det att Hyper-V-lagringsdrivrutinen hv_storvsc saknas eller inte läses in. Utan den här drivrutinen kan den virtuella datorn inte identifiera sina virtuella diskar, vilket leder till ett startfel.

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

Orsak

Om LIS/Hyper-V-drivrutiner saknas eller inte läses in korrekt kanske den virtuella datorn inte startar på grund av följande:

  • Disk- och nätverksdrivrutiner saknas

    Virtuella Azure-datorer förlitar sig på Hyper-V-lagrings- och nätverksdrivrutiner (till exempel hv_storvsc och hv_netvsc). Utan dessa drivrutiner kan den virtuella datorn inte identifiera sin operativsystemdisk (OS), vilket leder till ett startfel.

  • Brist på stöd för syntetiska enheter

    Virtuella Azure-datorer använder syntetiska enheter (till exempel för lagring och nätverk), som kräver Hyper-V-drivrutiner. Utan dessa drivrutiner kanske kerneln inte känner igen kritiska komponenter.

  • Kommunikationsfel för Hyper-V VMBus

    Viktiga komponenter som hv_vmbus hanterar kommunikationen mellan den virtuella datorn och Azure-hypervisor-programmet. Om drivrutinen saknas kan den virtuella datorn inte initieras korrekt.

  • Kernel panic eller initramfs prompt

    Utan nödvändiga drivrutiner kan den virtuella datorn falla till ett initramfs-gränssnitt på grund av att rotfilsystemet inte kan monteras, vilket orsakar ett startfel.

Lösning 1: Aktivera Hyper-V-drivrutiner

Obs!

Den här lösningen gäller för scenariot där Hyper-V-drivrutiner är inaktiverade.

  1. Använd reparationskommandon för virtuella datorer för att skapa en reparations-VM som har en kopia av den berörda virtuella datorns OS-disk ansluten.

    Obs!

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure Portal. Mer information finns i Felsöka en virtuell Linux-dator genom att ansluta OS-disken till en återställnings-VM med hjälp av Azure Portal.

  2. Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.

  3. När chroot-processen är klar går du till katalogen /etc/modprobe.d .

  4. Identifiera filen som inaktiverar hv_ drivrutinen och motsvarande radnummer:

    grep -nr "hv_" /etc/modprobe.d/
    
  5. Ändra motsvarande fil och kommentera ut eller ta bort posterna hv_ :

    vi /etc/modprobe.d/disable.conf
    

    Obs!

    • Poster som inaktiverar drivrutiner definieras av Linux-operativsystemet i stället för Microsoft.
    • Ersätt disable.conf med motsvarande filnamn där hv_ drivrutinen är inaktiverad.

Lösning 2: Återskapa saknade Hyper-V-drivrutiner i initramferna

Obs!

Den här lösningen gäller för scenariot där Hyper-V-drivrutiner saknas i initramferna efter vm-migreringen från den lokala datorn till Azure.

  1. Använd reparationskommandon för virtuella datorer för att skapa en reparations-VM som har en kopia av den berörda virtuella datorns OS-disk ansluten.

    Obs!

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure Portal. Mer information finns i Felsöka en virtuell Linux-dator genom att ansluta OS-disken till en återställnings-VM med hjälp av Azure Portal.

  2. Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.

  3. När chroot-processen är klar kontrollerar du om hv_ drivrutiner saknas i den aktuella kerneln:

    • För RHEL-baserade bilder:

      lsinitrd /boot/initramfs-<kernel-version>.img | grep -i hv_
      
    • För SLES-baserade bilder:

      lsinitrd /boot/initrd-<versión-del-kernel> | grep -i hv_
      
    • För Ubuntu/Debian-baserade bilder:

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

    Obs!

    Hyper-V-lagringsdrivrutinen hv_storvsc eller andra kanske inte visas i initramfs eftersom den ibland är inbyggd direkt i kerneln, särskilt i Azure-optimerade kernels. I sådana fall läser systemet in det automatiskt vid start, vilket säkerställer lagringsfunktioner. Om den virtuella datorn startar och identifierar lagringen korrekt krävs ingen åtgärd.

  4. Redigera filen /etc/dracut.conf eller /etc/initramfs-tools/modules, beroende på din Linux-distribution, och lägg till följande rad i filen:

    • För RHEL/SLES-baserade bilder:

      vi /etc/dracut.conf
      
      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    • För Ubuntu/Debian-baserade bilder:

      vi /etc/initramfs-tools/modules
      
      hv_vmbus
      hv_netvsc
      hv_storvsc
      
  5. Återskapa den första RAM-diskavbildningen för den berörda kerneln genom att följa stegen i Återskapa saknade initramfs manuellt.

Vanliga frågor och svar

Hur kan jag se till att nätverksdrivrutinen, hv_netvsc, fungerar som förväntat efter en ny start eller omstart av systemet om jag har problem med vissa problem, till exempel anslutning?

Kontrollera att Hyper-V-nätverksdrivrutinen (hv_netvsc) är aktiv och funktionell genom att kontrollera systemloggarna och leta efter följande post:

*hv\_vmbus: registering driver hv\_netvsc*

Det här meddelandet anger att registreringsprocessen för drivrutiner har startats. Om inga ytterligare fel rapporteras efter det har drivrutinen lästs in och fungerar korrekt. Detta anger att det syntetiska nätverksgränssnittet som tillhandahålls av Hyper-V identifierades och att drivrutinen hanterar nätverksanslutningen korrekt.

Referenser

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.