Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ Virtuele Linux-machines
Overzicht
Azure wordt uitgevoerd op de Hyper-V hypervisor en voor Linux-systemen moeten bepaalde Hyper-V kernelmodules worden uitgevoerd op 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).
Voorwaarden
Zorg ervoor dat de seriële console is ingeschakeld en functioneel is in de Virtuele Linux-machine.
Hoe je een probleem met een ontbrekend Hyper-V-stuurprogramma kunt identificeren
Gebruik Azure CLI of het Azure-portal om te kijken of uw virtuele machine niet kan opstarten vanwege ontbrekende Hyper-V-stuurprogramma's, door het seriële consolelogboek van de virtuele machine te bekijken in het deelvenster voor opstartdiagnostiek of het deelvenster voor de seriële console. De voorbeelduitvoer van fouten wordt weergegeven in de bijbehorende secties hieronder.
Voordat u problemen oplost
Problemen met Scenario 1: netwerk Hyper-V-stuurprogramma is uitgeschakeld en Scenario 2: MAC-adres (media toegangssturing van de NIC) is gewijzigd of komt niet overeen op te lossen, heeft u serieconsole-toegang 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 offline benadering.
Voor het oplossen van problemen met Scenario 3: Andere Hyper-V stuurprogramma's zijn uitgeschakeld is de offlinebenadering de enige optie om het probleem op te lossen.
Scenario 1: Stuurprogramma voor netwerk Hyper-V 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 serial-console vanuit de Azure-portal. U ziet de volgende typen fouten in de seriële console of het meest recente seriële logboek in het deelvenster Boot Diagnostics in de 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.
Log in bij de virtuele machine met de juiste inloggegevens.
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:
sudo grep -nr "hv_netvsc" /etc/modprobe.d/Wijzig het bijbehorende bestand en maak commentaar of verwijder de hv_netvsc vermeldingen:
sudo vi /etc/modprobe.d/disable.confNotitie
- De vermeldingen die stuurprogramma's uitschakelen, worden gedefinieerd door het Linux-besturingssysteem, niet door Microsoft.
- Vervang door
disable.confde bijbehorende bestandsnaam waarbij het hv_netvsc stuurprogramma is uitgeschakeld.
Bouw de initiële RAMdisk afbeelding opnieuw op voor de momenteel geladen kernel.
Voor op RHEL-/SLES-gebaseerde afbeeldingen
sudo dracut -f -vVoor Ubuntu-/Debian-gebaseerde afbeeldingen
sudo mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Start de VM opnieuw op.
Maak altijd een back-up van het oorspronkelijke RAMdisk-image om het herstel te vergemakkelijken wanneer dat nodig is.
Voor RHEL-afbeeldingen:
sudo cp /boot/initramfs-<kernelVersion>.img /boot/initramfs-<kernelVersion>.img.bakVoor op SLES-gebaseerde images:
sudo cp /boot/initrd-<kernelVersion> /boot/initrd-<kernelVersion>.bakVoor Ubuntu-/Debian-gebaseerde installatiekopieën:
sudo 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 Solution 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 opnieuw te bouwen.
Voordat de RAMdisk-image opnieuw wordt 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 restoreopdracht.
Scenario 2: het MAC-adres (NIC Media Access Control) 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 serial-console vanuit de Azure-portal. Fouten die vergelijkbaar zijn met de fouten in Scenario 1: het stuurprogramma netwerk Hyper-V is uitgeschakeld worden 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: Herstel NIC MAC-adresconflicten 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.
Log in bij de virtuele machine met de juiste inloggegevens.
Schakel over naar het hoofdaccount of gebruikersaccount met sudo-toegang.
Ga naar de directory /etc/cloud/cloud.cfg.d.
Als u Linux-partnerimages 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_configparameter is ingesteld op false, dan zet deze op true. 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_configparameter moet worden ingesteld op false, verwijdert u het bestand /var/lib/cloud/instance/obj.pkl en start u het systeem opnieuw op.sudo rm /var/lib/cloud/instance/obj.pklZodra de wijzigingen zijn toegepast, start u het systeem opnieuw op.
Oplossing 2: De offline mismatch van het MAC-adres van de NIC corrigeren
- 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 een NIC MAC-adresconflict op met behulp van de seriële console om wijzigingen in de netwerkconfiguratie aan te brengen of het obj.pkl-bestand te wissen.
- Zodra de wijzigingen zijn toegepast, gebruikt u de
az vm repair restoreopdracht 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 naar een dracut-shell gebracht. Dit probleem kan worden weergegeven via de serial-console vanuit de Azure-portal. U ziet de volgende fouten in de seriële console of het meest recente seriële logboek in het deelvenster Boot Diagnostics in de 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: stuurprogramma's voor Hyper-V inschakelen
Als de VM 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 de bestandssystemen van de gekoppelde besturingssysteemschijf aan en voer een chroot uit op deze systemen in een herstel-VM, waarbij je de chroot-instructies correct volgt.
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 uitschakelt en het bijbehorende regelnummer.
sudo 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):
sudo vi /etc/modprobe.d/disable.conf
Belangrijk
- De vermeldingen die stuurprogramma's uitschakelen, worden gedefinieerd door het Linux-besturingssysteem, niet door Microsoft.
- Vervang
disable.confdoor de bijbehorende bestandsnaam waarbij de Hyper-V stuurprogramma's zijn uitgeschakeld.
Bouw de initiële RAMdisk afbeelding opnieuw op voor de momenteel geladen kernel.
Voor op RHEL-/SLES-gebaseerde afbeeldingen
sudo dracut -f -vVoor Ubuntu-/Debian-gebaseerde afbeeldingen
sudo mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Zodra de wijzigingen zijn toegepast, gebruikt u de
az vm repair restoreopdracht 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 initïele RAMdisk-afbeelding om het terugdraaien indien nodig te vergemakkelijken.
Als het probleem nog steeds niet is opgelost, raadpleegt u Azure Linux virtuele machine start niet op en gaat naar de dracut-noodschaal om problemen met dracut te onderzoeken.
Volgende stappen
Als de specifieke opstartfout geen Hyper-V probleem is, raadpleegt u Troubleshoot Azure Linux Virtual Machines opstartfouten voor verdere probleemoplossingsopties.