Opstart- en netwerkproblemen met virtuele Linux-machines oplossen vanwege fouten die zijn gekoppeld aan het Hyper-V-stuurprogramma
Van toepassing op: ✔️ Virtuele Linux-machines
Azure wordt uitgevoerd op de Hyper-V-hypervisor en Linux-systemen vereisen dat bepaalde Hyper-V-kernelmodules worden uitgevoerd in Azure. Deze kernelmodules worden gebundeld in de LIS-stuurprogramma's (Linux Integration Services) voor Hyper-V en Azure. Microsoft draagt ze rechtstreeks bij aan de upstream Linux-kernel.
In dit artikel worden meerdere voorwaarden besproken waarbij een of meer uitgeschakelde Hyper-V-stuurprogramma's kunnen leiden tot opstart- en netwerkproblemen met virtuele Linux-machines (VM's).
Vereisten
Zorg ervoor dat de seriële console is ingeschakeld en functioneel is in de Virtuele Linux-machine.
Probleem met ontbrekend Hyper-V-stuurprogramma identificeren
Als u wilt bepalen of de VM niet kan worden opgestart vanwege ontbrekende Hyper-V-stuurprogramma's, gebruikt u Azure CLI of Azure Portal om het seriële consolelogboek van de virtuele machine weer te geven in het deelvenster met diagnostische gegevens over opstarten of het deelvenster seriële console. De voorbeelduitvoer van fouten wordt weergegeven in de bijbehorende secties hieronder.
Voordat u problemen ops los
Problemen met scenario 1 oplossen: het Hyper-V-stuurprogramma van het netwerk is uitgeschakeld en scenario 2: mac-adres van NIC wordt gewijzigd of komt niet overeen, dan hebt u seriële consoletoegang nodig voor uw Linux-VM.
Als u geen seriële consoletoegang hebt, volgt u de offlinebenadering voor toegang tot de inhoud van de problematische besturingssysteemschijf vanaf een virtuele reddingsmachine. Toegang tot Azure CLI of Azure Cloud Shell is vereist voor de offlinebenadering.
Scenario 3 oplossen : Andere Hyper-V-stuurprogramma's zijn uitgeschakeld, de offlinebenadering is de enige optie om het probleem op te lossen.
Scenario 1: Het Hyper-V-stuurprogramma van het netwerk is uitgeschakeld
Omdat de netwerkservices niet beschikbaar zijn, kunt u SSH (Secure Shell Protocol) niet gebruiken voor een virtuele machine, maar u kunt zich nog steeds aanmelden via de seriële console vanuit Azure Portal. U ziet de volgende typen fouten in de seriële console of het meest recente seriële logboek in het deelvenster Diagnostische gegevens over opstarten in Azure Portal:
cloud-init[807]: Cloud-init v. 19.4 running 'init-local' at Tue, xx Aug 20XX 20:41:53 +0000. Up 5.83 seconds.
cloud-init[807]: 20XX-08-XX 20:41:54,231 - stages.py[WARNING]: Failed to rename devices: [nic not present] Cannot rename mac=xx:xx:xx:xx:xx:xx to eth0, not available.
[ OK ] Started Initial cloud-init job (pre-networking).
----
[FAILED] Failed to start LSB: Bring up/down networking.
See 'systemctl status network.service' for details.
Or
cloud-init[799]: 2022-XX-XX 19:04:06,267 - azure.py[WARNING]: Interface not found for DHCP
cloud-init[799]: 2022-XX-XX 19:04:07,269 - azure.py[WARNING]: Interface not found for DHCP
cloud-init[799]: 2022-XX-XX 19:04:10,274 - azure.py[WARNING]: Interface not found for DHCP
cloud-init[799]: 2022-XX-2XX 19:04:10,277 - azure.py[WARNING]: IMDS network metadata has incomplete configuration: None
Oplossing 1: Hyper-V-netwerkstuurprogramma inschakelen met behulp van seriële console
Toegang tot de seriële console van de virtuele machine. Het netwerk is niet beschikbaar, maar de aanmeldingsprompt is nog steeds beschikbaar.
Meld u aan bij de virtuele machine met de juiste referenties.
Schakel over naar het hoofdaccount of gebruikersaccount met sudo-toegang.
Ga naar de map /etc/modprobe.d en zoek naar een regel waarmee het hv_netvsc-stuurprogramma wordt uitgeschakeld.
Identificeer het bestand dat het hv_netvsc stuurprogramma en de bijbehorende regelnummers uitschakelt door de volgende opdracht uit te voeren:
grep -nr "hv_netvsc" /etc/modprobe.d/
Wijzig het bijbehorende bestand en maak commentaar of verwijder de hv_netvsc vermeldingen:
vi /etc/modprobe.d/disable.conf
Notitie
- De vermeldingen die stuurprogramma's uitschakelen, worden gedefinieerd door het Linux-besturingssysteem, niet door Microsoft.
- Vervang door
disable.conf
de bijbehorende bestandsnaam waarbij het hv_netvsc stuurprogramma is uitgeschakeld.
Bouw de oorspronkelijke RAMdisk-installatiekopieën opnieuw op voor de momenteel geladen kernel:
Voor RHEL-/SLES-gebaseerde installatiekopieën
# dracut -f -v
Voor Ubuntu-/Debian-gebaseerde installatiekopieën
# mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Start de VM opnieuw op.
Maak altijd een back-up van de oorspronkelijke oorspronkelijke RAMdisk-installatiekopieën om het terugdraaien te vergemakkelijken wanneer dat nodig is.
Voor RHEL-afbeeldingen:
# cp /boot/initramfs-<kernelVersion>.img /boot/initramfs-<kernelVersion>.img.bak
Voor installatiekopieën op basis van SLES:
# cp /boot/initrd-<kernelVersion> /boot/initrd-<kernelVersion>.bak
Voor Ubuntu-/Debian-gebaseerde installatiekopieën:
# cp /boot/initrd.img-<kernelVersion> /boot/initrd.img-<kernelVersion>.bak
Oplossing 2: Hyper-V-netwerkstuurprogramma offline inschakelen
Gebruik az vm repair om toegang te krijgen tot de inhoud van de betreffende besturingssysteemschijf vanaf een reddings-VM.
Koppel en chroot aan de bestandssystemen van de gekoppelde besturingssysteemschijf in de herstel-VM door de chroot-instructies te volgen.
Zodra de inhoud van de betreffende besturingssysteemschijf is geopend, volgt u stap 4 en 5 in oplossing 1: Schakel hyper-V-netwerkstuurprogramma in met behulp van seriële console om de stuurprogramma's opnieuw in te schakelen en de oorspronkelijke RAMdisk-installatiekopieën opnieuw te bouwen.
Voordat de eerste RAMdisk-installatiekopieën opnieuw worden opgebouwd, schakelt u over naar de chroot-omgeving. Het volledige pad van de afbeelding moet worden opgegeven.
Zodra de wijzigingen zijn toegepast, voert u een automatische besturingssysteemschijfwisseling uit met de oorspronkelijke VM en start u het systeem opnieuw op met behulp van de
az vm repair restore
opdracht.
Scenario 2: NIC MAC-adres wordt gewijzigd of komt niet overeen
Als het MAC-adres van de netwerkinterfacekaart wordt gewijzigd of niet overeenkomt met de configuratie van het besturingssysteem, kunt u geen SSH naar de VM verzenden omdat de netwerkservices niet beschikbaar zijn. U kunt zich nog steeds aanmelden via seriële console vanuit Azure Portal. Fouten die vergelijkbaar zijn met de fouten in scenario 1: het Hyper-V-stuurprogramma van het netwerk is uitgeschakeld , wordt weergegeven.
Als het probleem zich blijft voordoen, zelfs als het Hyper-V-netwerkstuurprogramma is ingeschakeld, gebruikt u een van de volgende oplossingen om de NIC-configuratie van het besturingssysteem te valideren en het probleem op te lossen.
Oplossing 1: NIC MAC-adres komt niet overeen met de seriële console
Toegang tot de seriële console van de virtuele machine. Het netwerk is niet beschikbaar, maar de aanmeldingsprompt is nog steeds beschikbaar.
Meld u aan bij de virtuele machine met de juiste referenties.
Schakel over naar het hoofdaccount of gebruikersaccount met sudo-toegang.
Ga naar de map /etc/cloud.cfg.d .
Als u linux-partnerinstallatiekopieën gebruikt, opent en bewerkt u de volgende bestanden:
- 91-azure_datasource.cfg voor RHEL-gebaseerde distributie.
- 90_dpkg.cfg voor Debian- en Ubuntu-distributie.
Als de
apply_network_config
parameter is ingesteld op false, stelt u deze in op waar. Als er niets is opgegeven, wordt de standaardwaarde ingesteld op true. Deze instelling zorgt ervoor dat het nieuwe MAC-adres wordt toegepast op de netwerkconfiguratie bij de volgende herstart.Over het algemeen wordt een NIC MAC-adres alleen gewijzigd als een NIC wordt verwijderd of toegevoegd door de beheerder of een NIC wordt bijgewerkt in de back-end. Als de netwerkconfiguratie via cloud-init niet gewenst is en de
apply_network_config
parameter moet worden ingesteld op false, verwijdert u het bestand /var/lib/cloud/instance/obj.pkl en start u het systeem opnieuw op.# rm /var/lib/cloud/instance/obj.pkl
Zodra de wijzigingen zijn toegepast, start u het systeem opnieuw op.
Oplossing 2: NIC MAC-adres komt niet offline overeen
- Gebruik de opdracht az vm repair om toegang te krijgen tot de inhoud van de betreffende besturingssysteemschijf vanaf een virtuele reddingsmachine.
- Koppel en chroot aan de bestandssystemen van de gekoppelde besturingssysteemschijf in een herstel-VM correct door de chroot-instructies te volgen.
- Zodra de inhoud van de kopie van de betreffende besturingssysteemschijf is geopend, volgt u stap 4 tot en met 7 in oplossing 1: Los NIC MAC-adres niet overeen met behulp van seriële console om netwerkwijzigingen aan te brengen of het obj.pkl-bestand te wissen.
- Zodra de wijzigingen zijn toegepast, gebruikt u de
az vm repair restore
opdracht om een automatische besturingssysteemschijfwisseling uit te voeren met de oorspronkelijke VM en het systeem opnieuw op te starten.
Scenario 3: Andere Hyper-V-stuurprogramma's zijn uitgeschakeld
Als u opstartproblemen ondervindt met andere Hyper-V-stuurprogramma's, is het waarschijnlijk niet mogelijk om SSH naar een VIRTUELE machine te verzenden omdat de netwerkservices niet beschikbaar zijn. U bent neergezet op een dracut-shell. Dit probleem kan worden weergegeven via de seriële console vanuit Azure Portal. U ziet de volgende fouten in de seriële console of het meest recente seriële logboek in het deelvenster Diagnostische gegevens over opstarten in Azure Portal:
dracut-initqueue[455]: Warning: dracut-initqueue timeout - starting timeout scripts
dracut-initqueue[455]: Warning: Could not boot.
Starting Setup Virtual Console...
[ OK ] Started Setup Virtual Console.
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:/#
Or
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)
Oplossing: Hyper-V-stuurprogramma's inschakelen
Als de VIRTUELE machine niet toegankelijk is omdat andere Hyper-V-stuurprogramma's zijn uitgeschakeld, gebruikt u een offlinebenadering om de stuurprogramma's opnieuw in te schakelen, omdat de initramfs niet kunnen worden geladen.
Gebruik de opdracht az vm repair om toegang te krijgen tot de inhoud van de problematische besturingssysteemschijf vanaf een reddings-VM.
Koppel en chroot aan de bestandssystemen van de gekoppelde besturingssysteemschijf in een herstel-VM en volg de chroot-instructies correct.
Ga in de chroot-omgeving naar de map /etc/modprobe.d en zoek naar een regel die de hv_utils, hv_vmbus, hv_storvsc of hv_netvsc stuurprogramma kan uitschakelen.
Voer de volgende opdracht uit om het bestand te identificeren dat het hv_utils, hv_vmbus, hv_storvsc of hv_netvsc stuurprogramma en het bijbehorende regelnummer uitschakelt.
egrep -nr "hv_utils|hv_vmbus|hv_storvsc|hv_netvsc" /etc/modprobe.d/
Wijzig het bijbehorende bestand en de opmerking of verwijder de hv_utils, hv_vmbus, hv_storvsc of hv_netvsc vermeldingen. De vermeldingen zijn meestal een van de volgende (of beide):
vi /etc/modprobe.d/disable.conf
Belangrijk
- De vermeldingen die stuurprogramma's uitschakelen, worden gedefinieerd door het Linux-besturingssysteem, niet door Microsoft.
- Vervang door
disable.conf
de bijbehorende bestandsnaam waarbij de Hyper-V-stuurprogramma's zijn uitgeschakeld.
Bouw de oorspronkelijke RAMdisk-installatiekopieën opnieuw op voor de momenteel geladen kernel:
Voor RHEL-/SLES-gebaseerde installatiekopieën
# dracut -f -v
Voor Ubuntu-/Debian-gebaseerde installatiekopieën
# mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Zodra de wijzigingen zijn toegepast, gebruikt u de
az vm repair restore
opdracht om een automatische besturingssysteemschijfwisseling uit te voeren met de oorspronkelijke VM en het systeem opnieuw op te starten.
Maak altijd een back-up van de oorspronkelijke oorspronkelijke RAMdisk-installatiekopieën om het terugdraaien zo nodig te vergemakkelijken.
Als het probleem nog steeds niet is opgelost, raadpleegt u de virtuele Linux-machine van Azure niet opstarten en voert u de noodshell in om problemen met dracut te onderzoeken.
Volgende stappen
Als de specifieke opstartfout geen Hyper-V-probleem is, raadpleegt u Opstartfouten in Virtuele Azure Linux-machines oplossen voor verdere probleemoplossingsopties.
Contact met ons opnemen voor ondersteuning
Als u vragen hebt of hulp nodig hebt, maakt u een ondersteuningsaanvraag of stelt u ondersteuning voor de Azure-community. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.