Procedimientos recomendados para ejecutar Linux en Hyper-V

Se aplica a: Windows Server 2022, Azure Stack HCI, versión 20H2; Windows Server 2019, Windows Server 2016, Hyper-V Server 2016, Windows Server 2012 R2, Hyper-V Server 2012 R2, Windows Server 2012, Hyper-V Server 2012, Windows Server 2008 R2, Windows 10, Windows 8.1, Windows 8, Windows 7.1 y Windows 7

Este tema contiene una lista de recomendaciones para ejecutar máquinas virtuales Linux en Hyper-V.

Ajuste de sistemas de archivos Linux en archivos VHDX dinámicos

Algunos sistemas de archivos Linux pueden consumir gran cantidad de espacio en disco real, incluso cuando el sistema de archivos está prácticamente vacío. Para reducir la cantidad de uso real de espacio en disco de los archivos VHDX dinámicos, tenga en cuenta las siguientes recomendaciones:

  • Al crear el VHDX, use BlockSizeBytes de 1 MB (de los 32 MB predeterminados) en PowerShell, por ejemplo:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
  • El formato ext4 se prefiere a ext3 porque es más eficiente cuando se usa con archivos VHDX dinámicos.

  • Al crear el sistema de archivos, especifique que el número de grupos es 4096, por ejemplo:

# mkfs.ext4 -G 4096 /dev/sdX1

Tiempo de espera del menú Grub en máquinas virtuales de segunda generación

Al haber eliminado el hardware heredado de la emulación en las máquinas virtuales de segunda generación, el temporizador de cuenta atrás del menú Grub cuenta demasiado deprisa, por lo que el menú no se muestra, se carga inmediatamente la entrada predeterminada. Hasta que Grub se corrija y use el temporizador compatible con EFI, modifique /boot/grub/grub.conf, /etc/default/grub, o un elemento equivalente, para que el valor sea "timeout=100000", en lugar del valor predeterminado "timeout=5".

Arranque PXE en las máquinas virtuales de segunda generación

Dado las máquinas virtuales de segunda generación no tienen temporizador PIT, las conexiones de red al servidor TFTP PXE se pueden terminar de forma prematura y evitar que el cargador de arranque lea la configuración de Grub y cargue un kernel desde el servidor.

En RHEL 6.x, se puede usar el cargador de arranque EFI de Grub v0.97 heredado, en lugar de grub2 como se describe aquí: https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html

En las distribuciones de Linux distintas de RHEL 6.x, se pueden seguir pasos similares para configurar Grub v0.97 para cargar kernels de Linux desde un servidor PXE.

Además, en RHEL/CentOS 6.6 la entrada mediante teclado y mouse no funcionará con el kernel de preinstalación, lo que impide especificar las opciones de instalación en el menú. Para poder elegir las opciones de instalación se debe configurar una consola serie.

  • En el archivo efidefault del servidor PXE, agregue el siguiente parámetro del kernel "console=ttyS1"

  • En la máquina virtual de Hyper-V, configure un puerto COM mediante este cmdlet de PowerShell:

Set-VMComPort -VMName <Name> -Number 2 -Path \\.\pipe\dbg1

La especificación de un archivo kickstart en el kernel de preinstalación también evitaría la necesidad de introducir datos mediante teclado y mouse en la instalación.

Uso de direcciones MAC estáticas con clústeres de conmutación por error

Las máquinas virtuales Linux que se van a implementar mediante clústeres de conmutación por error deben configurarse con una dirección MAC (control de acceso a medios) para cada adaptador de red virtual. En algunas versiones de Linux, la configuración de red se puede perder después de la conmutación por error, ya que se asigna una nueva dirección MAC al adaptador de red virtual. Para evitar perder la configuración de red, asegúrese de que cada adaptador de red virtual tenga una dirección MAC estática. Para configurar la dirección MAC, edite la configuración de la máquina virtual en el Administrador de Hyper-V o en el complemento Administrador de clústeres de conmutación por error.

Usar adaptadores de red específicos de Hyper-V, no el heredado

Configure y use el adaptador Ethernet virtual, que es una tarjeta de red específica de Hyper-V con un rendimiento mejorado. Si tanto el adaptador de red heredado como el específico de Hyper-V están conectados a una máquina virtual, los nombres de red de la salida de ifconfig -a pueden mostrar valores aleatorios como _tmp12000801310. Para evitar este problema, si usa adaptadores específicos de Hyper-V en una máquina virtual Linux quite todos los adaptadores de red heredados.

Uso noop/none del programador de E/S para mejorar el rendimiento de E/S del disco

El kernel de Linux ofrece dos conjuntos de programadores de E/S de disco para reordenar las solicitudes. Un conjunto es para el subsistema "blk" anterior y el otro para el subsistema "blk-mq" nuevo. En cualquier caso, con los actuales discos de estado sólido, se recomienda usar un programador que pase las decisiones de programación al hipervisor de Hyper-V subyacente. En el caso de los kernels de Linux que usan el subsistema "blk", es el programador "noop". En el caso de los kernels de Linux que usan el subsistema "blk-mq", es el programador "none".

En un disco determinado, los programadores disponibles se pueden ver en esta ubicación del sistema de archivos: /sys/class/block/<diskname>/queue/scheduler, y el programador seleccionado aparece entre corchetes. Para cambiar el programador, escriba en esta ubicación del sistema de archivos. El cambio se debe agregar a un script de inicialización para conservarse entre reinicios. Para más información, consulte la documentación de la distribución de Linux.

NUMA

Las versiones de kernel de Linux inferiores a la versión 2.6.37 no admiten NUMA en Hyper-V con tamaños de VM más grandes. Este problema afecta principalmente a las distribuciones anteriores que usan el kernel Red Hat 2.6.32 de canal de subida, y se ha corregido en Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). Los sistemas que ejecutan kernels personalizados cuyas versiones son anteriores a la versión 2.6.37, o bien kernels basados en RHEL cuyas versiones son anteriores a la versión 2.6.32-504, deben establecer el parámetro de inicio numa=off en la línea de comandos de kernel en grub.conf. Para más información, consulte Red Hat KB 436883.

Reserva de más memoria para kdump

Si el kernel de captura de volcados termina con un aviso importante en el arranque, reserve más memoria para el kernel. Por ejemplo, cambie el parámetro crashkernel=384M-:128M a crashkernel=384M-:256M en el archivo de configuración de Grub de Ubuntu.

La reducción de VHDX o la expansión de los archivos VHD y VHDX puede provocar tablas de particiones GPT erróneas

Hyper-V permite reducir archivos de disco virtual (VHDX) sin tener en cuenta las estructuras de datos de las particiones, volúmenes o del sistema de archivos que puedan existir en el disco. Si el VHDX se reduce hasta un punto en el que el final del VHDX llegue antes del final de una partición, se pueden perder datos, esa partición se puede resultar dañada o se pueden devolver datos no válidos cuando al leer la partición.

Tras cambiar el tamaño de un VHD o VHDX, los administradores deben usar una utilidad como fdisk o parted para actualizar las estructuras de las particiones, de los volúmenes o del sistema de archivos para reflejar el cambio en el tamaño del disco. La reducción o expansión del tamaño de un VHD o VHDX que tenga una tabla de particiones GUID (GPT) provocará una advertencia cuando se use una herramienta de administración de particiones para comprobar el diseño de la partición y se avisará al administrador que corrija los encabezados GPT primero y secundario. Este paso manual se puede realizar de forma segura sin pérdida de datos.

Referencias adicionales