Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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_netvsc
ochhv_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
ochhv_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.
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.
Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.
När chroot-processen är klar går du till katalogen /etc/modprobe.d .
Identifiera filen som inaktiverar
hv_
drivrutinen och motsvarande radnummer:grep -nr "hv_" /etc/modprobe.d/
Ä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ärhv_
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.
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.
Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.
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.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
Å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
- Skapa och ladda upp en allmän virtuell Linux-dator till Azure
- En virtuell Linux-dator startar inte korrekt med kernel 3.10.0-514.16 efter en LIS-uppgradering
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.