Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ Máquinas virtuales Linux
Resumen
Azure se ejecuta en el hipervisor de Hyper-V y los sistemas Linux requieren que determinados módulos de kernel de Hyper-V se ejecuten en Azure. Estos módulos de kernel se agrupan en los controladores de Linux Integration Services (LIS) para Hyper-V y Azure. Microsoft contribuye directamente al kernel de Linux en la versión principal.
En este artículo se describen varias condiciones en las que uno o varios controladores de Hyper-V deshabilitados podrían provocar problemas de arranque y redes de máquinas virtuales Linux.
Requisitos previos
Asegúrese de que la consola serie está habilitada y funcional en la máquina virtual Linux.
Identificación del problema del controlador de Hyper-V que falta
Para identificar si la máquina virtual no se inicia debido a que faltan controladores de Hyper-V, use CLI de Azure o el portal de Azure para ver el registro de consola serie de la máquina virtual en el panel de diagnóstico de arranque o en el panel de consola serie. Las salidas de ejemplo de errores se muestran en las secciones correspondientes siguientes.
Antes de comenzar con la solución de problemas
Para solucionar problemas en el Escenario 1: el controlador Hyper-V de red está deshabilitado y el Escenario 2: la dirección MAC del NIC se cambia o no coincide, necesita acceso a la consola serie de la máquina virtual Linux.
Si no tiene acceso a la consola serie, siga el método sin conexión para acceder al contenido del disco con problemas del sistema operativo desde una máquina virtual de rescate. Se requiere acceso a CLI de Azure o Azure Cloud Shell para el enfoque sin conexión.
Para solucionar problemas de Scenario 3: Otros controladores de Hyper-V están deshabilitados, el enfoque offline es la única opción para resolver el problema.
Escenario 1: El controlador de Hyper-V de red está deshabilitado
Dado que los servicios de red no están disponibles, no puede conectarse mediante el Protocolo de Shell Seguro (SSH) a una máquina virtual, pero todavía puede iniciar sesión a través de la serial console desde el portal de Azure. Verá los siguientes tipos de errores en la consola serie o en el registro de serie más reciente en el panel de Diagnósticos de Arranque en el portal de Azure:
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.
O bien,
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
Solución 1: Habilitar Hyper-V controlador de red mediante la consola serie
Acceda a la consola serie de la máquina virtual. La red no funciona, pero la pantalla de inicio de sesión sigue estando disponible.
Inicie sesión en la máquina virtual con las credenciales correctas.
Cambie a la cuenta raíz o a la cuenta de usuario con acceso sudo.
Vaya al directorio /etc/modprobe.d y busque cualquier línea que deshabilite el controlador hv_netvsc.
Identifique el archivo que deshabilita el controlador hv_netvsc y los números de línea correspondientes ejecutando el siguiente comando:
sudo grep -nr "hv_netvsc" /etc/modprobe.d/Modifique el archivo correspondiente y comente o elimine las entradas de hv_netvsc:
sudo vi /etc/modprobe.d/disable.confNota:
- Las entradas que deshabilitan los controladores se definen mediante el sistema operativo Linux, no por Microsoft.
- Reemplace por
disable.confel nombre de archivo correspondiente en el que el controlador hv_netvsc está deshabilitado.
Vuelva a generar la imagen de RAMdisk inicial para el kernel cargado actualmente:
Para imágenes basadas en RHEL/SLES
sudo dracut -f -vPara imágenes basadas en Ubuntu/Debian
sudo mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Reinicie la máquina virtual.
Realice siempre una copia de seguridad de la imagen raMdisk inicial original para facilitar la reversión cuando sea necesario.
Para imágenes basadas en RHEL:
sudo cp /boot/initramfs-<kernelVersion>.img /boot/initramfs-<kernelVersion>.img.bakPara imágenes basadas en SLES:
sudo cp /boot/initrd-<kernelVersion> /boot/initrd-<kernelVersion>.bakPara imágenes basadas en Ubuntu/Debian:
sudo cp /boot/initrd.img-<kernelVersion> /boot/initrd.img-<kernelVersion>.bak
Solución 2: Habilitar Hyper-V controlador de red sin conexión
Use az vm repair para acceder al contenido del disco del sistema operativo afectado desde una máquina virtual de rescate.
Monte y aplica chroot a los sistemas de archivos del disco del sistema operativo conectado en la VM de rescate siguiendo las instrucciones de chroot.
Una vez que se accede al contenido del disco del sistema operativo afectado, siga los pasos 4 y 5 en Solution 1: Habilite Hyper-V controlador de red mediante la consola serie para volver a habilitar los controladores y recompilar la imagen inicial de RAMdisk.
Antes de volver a generar la imagen inicial de RAMdisk, cambie al entorno chroot. Se debe proporcionar la ruta de acceso completa de la imagen.
Una vez aplicados los cambios, realice un intercambio automático de disco del sistema operativo con la máquina virtual original y reinicie el sistema mediante el
az vm repair restorecomando .
Escenario 2: se cambia la dirección del control de acceso multimedia (MAC) de NIC o no coincide
Si se cambia la dirección MAC de la tarjeta de interfaz de red o no coincide con la configuración del sistema operativo, no podrá acceder a SSH a la máquina virtual porque los servicios de red no están disponibles. Todavía puede iniciar sesión a través de la consola serial desde el portal de Azure. Se muestran los errores similares a los de Scenario 1: El controlador de Hyper-V de red está deshabilitado.
Si el problema continúa aunque la Hyper-V controlador de red esté habilitada, use una de las siguientes soluciones para validar la configuración de la NIC del sistema operativo y resolver el problema.
Solución 1: Corregir el desajuste de direcciones MAC de la NIC utilizando la consola serial
Acceda a la consola serie de la máquina virtual. La red no funciona, pero la pantalla de inicio de sesión sigue estando disponible.
Inicie sesión en la máquina virtual con las credenciales correctas.
Cambie a la cuenta raíz o a la cuenta de usuario con acceso sudo.
Vaya al directorio /etc/cloud/cloud.cfg.d .
Teniendo en cuenta que se usan imágenes de asociados de Linux, abra y edite los archivos siguientes:
- 91-azure_datasource.cfg para la distribución basada en RHEL.
- 90_dpkg.cfg para la distribución basada en Debian y Ubuntu.
Si el
apply_network_configparámetro se establece en false, establézcalo en true. Si no se especifica nada, el valor predeterminado se establece en true. Esta configuración garantizará que la nueva dirección MAC se aplique a la configuración de red en el siguiente reinicio.Por lo general, una dirección MAC de una NIC solo cambiaría si un administrador elimina o agrega una NIC, o si una NIC se actualiza en el back-end. Si no se desea la configuración de red a través de cloud-init y el
apply_network_configparámetro debe establecerse en false, elimine el archivo /var/lib/cloud/instance/obj.pkl y reinicie el sistema.sudo rm /var/lib/cloud/instance/obj.pklUna vez aplicados los cambios, reinicie el sistema.
Solución 2: Corregir la falta de coincidencia de direcciones MAC NIC sin conexión
- Use el comando az vm repair para acceder al contenido del disco del sistema operativo afectado desde una máquina virtual de rescate.
- Monte y acceda a chroot en los sistemas de archivos del disco del sistema operativo conectado en una máquina virtual de rescate correctamente siguiendo las instrucciones chroot.
- Una vez que se accede al contenido de la copia del disco del sistema operativo afectado, siga los pasos 4 a 7 de Solución 1: Corregir la discrepancia de direcciones MAC de la NIC usando la Consola Serial para realizar cambios de red o eliminar el contenido del archivo obj.pkl.
- Una vez aplicados los cambios, use el
az vm repair restorecomando para realizar un intercambio automático de disco del sistema operativo con la máquina virtual original y reiniciar el sistema.
Escenario 3: Otros controladores de Hyper-V están deshabilitados
Si experimenta problemas de arranque con otros controladores de Hyper-V, es probable que no pueda conectarse mediante SSH a una máquina virtual porque los servicios de red no están disponibles. Se accede a un shell de dracut. Este problema se puede ver a través de la consola serial desde el portal de Azure. Puede ver los siguientes errores en la consola serial o en el registro serial más reciente dentro del panel de diagnósticos de Boot en el portal de Azure.
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:/#
O bien,
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)
Solución: Habilitar controladores de Hyper-V
Si no se puede acceder a la máquina virtual debido a que otros controladores de Hyper-V están deshabilitados, use un enfoque sin conexión para volver a habilitar los controladores, ya que no se puede cargar initramfs.
Use el comando az vm repair para acceder al contenido del disco del sistema operativo problemático desde una máquina virtual de rescate.
Monte los sistemas de archivos del disco del sistema operativo conectado y chroot en ellos en una máquina virtual de rescate, siguiendo correctamente las instrucciones de chroot.
Una vez en el entorno chroot, vaya al directorio /etc/modprobe.d y busque cualquier línea que pueda deshabilitar el controlador de hv_utils, hv_vmbus, hv_storvsc o hv_netvsc.
Ejecute el siguiente comando para identificar el archivo que deshabilita el controlador de hv_utils, hv_vmbus, hv_storvsc o hv_netvsc y el número de línea correspondiente.
sudo egrep -nr "hv_utils|hv_vmbus|hv_storvsc|hv_netvsc" /etc/modprobe.d/Modifique el archivo correspondiente y comente o elimine las entradas correspondientes a hv_utils, hv_vmbus, hv_storvsc o hv_netvsc. Las entradas suelen ser cualquiera de las siguientes (o ambas):
sudo vi /etc/modprobe.d/disable.conf
Importante
- Las entradas que deshabilitan los controladores se definen mediante el sistema operativo Linux, no por Microsoft.
- Reemplace
disable.confpor el nombre de archivo correspondiente donde están deshabilitados los controladores de Hyper-V.
Vuelva a generar la imagen de RAMdisk inicial para el kernel cargado actualmente:
Para imágenes basadas en RHEL/SLES
sudo dracut -f -vPara imágenes basadas en Ubuntu/Debian
sudo mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Una vez aplicados los cambios, use el
az vm repair restorecomando para realizar un intercambio automático de disco del sistema operativo con la máquina virtual original y reiniciar el sistema.
Realice siempre una copia de seguridad de la imagen RAMdisk inicial original para facilitar la reversión si es necesario.
Si el problema sigue sin resolverse, consulte la máquina virtual Linux de Azure no se puede arrancar y entra en el shell de emergencia de Dracut para investigar problemas con Dracut.
Pasos siguientes
En caso de que el error de arranque específico no sea un problema Hyper-V, consulte Troubleshoot Azure Linux Virtual Machines errores de arranque para obtener más opciones de solución de problemas.