Planear la implementación de dispositivos mediante la asignación discreta de dispositivos
La asignación discreta de dispositivos permite que el hardware físico de interconexión de componentes periféricos Express (PCIe) sea accesible directamente desde una máquina virtual (VM). En este artículo se describe el tipo de dispositivos que se pueden usar, los requisitos del sistema del host, las limitaciones impuestas en las máquinas virtuales y las implicaciones de seguridad.
Para la asignación discreta de dispositivos, Microsoft admite dos clases de dispositivo: adaptadores gráficos y dispositivos de almacenamiento NVMe. Es probable que otros dispositivos funcionen y los proveedores de hardware puedan ofrecer instrucciones de soporte técnico para esos dispositivos. Para otros dispositivos, póngase en contacto con los proveedores de hardware específicos para obtener soporte técnico.
Para información sobre otros métodos de virtualización de GPU, consulte Planeamiento de la aceleración de GPU en Windows Server. Si está a punto para probar la asignación discreta de dispositivos, puede ir a Implementar dispositivos de gráficos mediante la asignación discreta de dispositivos o Implementar dispositivos de almacenamiento mediante la asignación discreta de dispositivos.
Máquinas virtuales admitidas y sistemas operativos invitados
La asignación discreta de dispositivos es compatible con máquinas virtuales de primera y segunda generación. Entre los invitados admitidos se incluyen:
- Windows 10 o posterior
- Windows Server 2016 o posterior
- Windows Server 2012 R2 con la actualización para agregar compatibilidad con la asignación discreta de dispositivos para Azure.
Para más información, consulte las máquinas virtuales Linux y FreeBSD compatibles para Hyper-V en Windows Server.
Requisitos del sistema
El sistema debe cumplir los requisitos del sistema para Windows Server y los requisitos del sistema para Hyper-V en Windows Server. La asignación discreta de dispositivos también requiere hardware de clase de servidor que sea capaz de conceder al sistema operativo control sobre la configuración del tejido PCIe (control PCI Express nativo). Además, el complejo raíz PCIe tiene que admitir Servicios de control de acceso (ACS), que permite a Hyper-V forzar todo el tráfico PCIe a través de la unidad de administración de memoria (MMU) de entrada/salida.
Estas funcionalidades normalmente no se exponen directamente en el BIOS del servidor y a menudo se ocultan detrás de otras configuraciones. Si se requieren las mismas funcionalidades para la compatibilidad con virtualización de E/S de raíz única (SR-IOV) y en el BIOS, es posible que tenga que establecer "Habilitar SR-IOV". Si no puede identificar la configuración correcta en el BIOS, póngase en contacto con el proveedor del sistema.
Para ayudar a garantizar que el hardware sea capaz de realizar la asignación discreta de dispositivos, puede ejecutar el script de perfil de máquina en un host habilitado para Hyper-V. El script comprueba si el servidor está configurado correctamente y qué dispositivos son capaces de realizar la asignación discreta de dispositivos.
Requisitos de los dispositivos
No todos los dispositivos PCIe se pueden usar con la asignación discreta de dispositivos. No se admiten los dispositivos antiguos que usen las interrupciones PCI heredadas (INTx). Para más información, consulte Asignación discreta de dispositivos: máquinas y dispositivos. También puede ejecutar el script de perfil de máquina para mostrar qué dispositivos se pueden usar para la asignación discreta de dispositivos.
Los fabricantes de dispositivos pueden ponerse en contacto con su representante de Microsoft para más información.
Controlador de dispositivo
La asignación discreta de dispositivos pasa todo el dispositivo PCIe a la VM invitada. No se requiere que esté instalado un controlador de host antes de que se monte el dispositivo en la VM. El único requisito en el host es que se pueda determinar la ruta de acceso de ubicación de PCIe del dispositivo. El controlador del dispositivo se puede instalar para ayudar a identificar el dispositivo. Una GPU sin su controlador de dispositivo instalado en el host puede aparecer como un dispositivo de representación básica de Microsoft. Si el controlador de dispositivo está instalado, es probable que se muestre su fabricante y modelo.
Una vez montado el dispositivo dentro del invitado, el controlador de dispositivo del fabricante se puede instalar de la manera habitual dentro de la VM invitada.
Limitaciones de la máquina virtual
Debido a manera en que se implementa la asignación discreta de dispositivos, algunas características de una VM están restringidas mientras un dispositivo está conectado. Las siguientes características no están disponibles:
- Guardar o restaurar máquinas virtuales
- Migración en vivo de una máquina virtual
- El uso de la memoria dinámica
- Agregar la máquina virtual a un clúster de alta disponibilidad (HA)
Seguridad
La asignación discreta de dispositivos pasa todo el dispositivo a la máquina virtual. Este paso significa que todas las funcionalidades de ese dispositivo son accesibles desde el sistema operativo invitado. Algunas funcionalidades, como la actualización de firmware, pueden afectar negativamente a la estabilidad del sistema. Por lo tanto, el personal de administració recibe numerosas advertencias al desmontar el dispositivo desde el host. Solo debería usar la asignación discreta de dispositivos cuando los inquilinos de las VM son de confianza.
Si quien administra desea usar un dispositivo con un inquilino que no es de confianza, los fabricantes de dispositivos pueden crear un controlador de mitigación de dispositivos que se puede instalar en el host. Para más información sobre si se proporciona un controlador de mitigación de dispositivos, póngase en contacto con el fabricante del dispositivo.
Si quiere omitir las comprobaciones de seguridad de un dispositivo que no tiene un controlador de mitigación de dispositivos, tiene que pasar el parámetro -Force
al cmdlet Dismount-VMHostAssignableDevice
. Al realizar este paso, cambia el perfil de seguridad de ese sistema. Solo debería realizar este cambio durante la creación de prototipos o entornos de confianza.
Ruta de acceso de ubicación de PCIe
La ruta de acceso de ubicación de PCIe es necesaria para desmontar y montar el dispositivo desde el host. Un ejemplo de ruta de acceso de ubicación es PCIROOT(20)#PCI(0300)#PCI(0000)#PCI(0800)#PCI(0000)
. El script de perfil de máquina también devuelve la ruta de acceso de ubicación del dispositivo PCIe.
Obtener la ruta de acceso de ubicación mediante el Administrador de dispositivos
- Abra el Administrador de dispositivos y busque el dispositivo.
- Elija con el botón derecho el dispositivo y seleccione Propiedades.
- En la pestaña Detalles, expanda el menú desplegable Propiedad y seleccione Rutas de acceso de ubicación.
- Elija con el botón derecho la entrada que comienza por PCIROOT y seleccione Copiar para obtener la ruta de acceso de ubicación del dispositivo.
Espacio MMIO
Algunos dispositivos, especialmente las GPU, requieren que se asigne espacio MMIO adicional a la máquina virtual para que se pueda acceder a la memoria de ese dispositivo. De forma predeterminada, cada máquina virtual comienza con 128 MB de espacio MMIO bajo y 512 MB de espacio MMIO alto asignado. Sin embargo, un dispositivo puede requerir más espacio MMIO (E/S asignada a la memoria), o se pueden pasar varios dispositivos de tal forma que los requisitos combinados superen estos valores. Cambiar el espacio MMIO es sencillo y se puede realizar en PowerShell mediante los siguientes comandos:
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm
La manera más fácil de determinar cuánto espacio MMIO se debe asignar consiste en usar el script de perfil de máquina. Para descargar y ejecutar el script de perfil de máquina, ejecute los siguientes comandos en una consola de PowerShell:
curl -o SurveyDDA.ps1 https://raw.githubusercontent.com/MicrosoftDocs/Virtualization-Documentation/live/hyperv-tools/DiscreteDeviceAssignment/SurveyDDA.ps1
.\SurveyDDA.ps1
Para los dispositivos que se pueden asignar, el script mostrará los requisitos MMIO de un dispositivo determinado. La siguiente salida de script es un ejemplo:
NVIDIA GRID K520
Express Endpoint -- more secure.
...
And it requires at least: 176 MB of MMIO gap space
...
Los sistemas operativos de 32 bits y los dispositivos que usan direcciones de 32 bits usan el espacio MMIO bajo. En la mayoría de los casos, bastará con configurar el espacio MMIO alto de una máquina virtual, ya que las configuraciones de 32 bits no son comunes.
Importante
Al asignar espacio MMIO a una VM, asegúrese de especificar suficiente espacio MMIO. El espacio MMIO debería ser la suma del espacio MMIO solicitado para todos dispositivos asignados que se desee, más un búfer para otros dispositivos virtuales que requieren algunos MB de espacio MMIO. Use los valores MMIO predeterminados descritos anteriormente como búfer para MMIO bajo y alto (128 MB y 512 MB, respectivamente).
Tenga en cuenta el ejemplo anterior. Si asigna una sola GPU K520, establezca el espacio MMIO de la VM en el valor generado por el script de perfil de máquina más un búfer: 176 MB + 512 MB. Si asigna tres GPU K520, establezca el espacio MMIO en tres veces 176 MB más un búfer, o 528 MB + 512 MB.
Para una visión más detallada del espacio MMIO, consulte Asignación discreta de dispositivos: GPU en el blog de TechCommunity.
Script de perfil de máquina
Para identificar si el servidor está configurado correctamente y qué dispositivos se pueden pasar mediante la asignación discreta de dispositivos, ejecute el script SurveyDDA.ps1 de PowerShell.
Antes de usar el script, asegúrese de tener instalado el rol Hyper-V y de ejecutar el script desde una ventana de comandos de PowerShell que tenga privilegios de administrador.
Si el sistema está configurado incorrectamente para admitir la asignación discreta de dispositivos, la herramienta mostrará un mensaje de error con detalles sobre la incidencia. Si el sistema está configurado correctamente, la herramienta enumera todos los dispositivos ubicados en el bus PCIe.
Por cada dispositivo que encuentre, la herramienta mostrará si se puede usar con la asignación discreta de dispositivos. Si un dispositivo se identifica como incompatible con la asignación discreta de dispositivos, el script proporciona un motivo. Cuando un dispositivo se identifica correctamente como compatible, se mostrará la ruta de acceso de ubicación del dispositivo. Además, si ese dispositivo requiere espacio MMIO, también se mostrará.