Cómo instalar dispositivos gráficos mediante RemoteFX vGPU

Instalar aceleración de vídeo y una tarjeta gráfica en un ordenador físico para mejorar el rendimiento y la calidad de imagen es una tarea habitual. Pero, ¿qué hacer cuando necesitas ejecutar aplicaciones para renderizado de vídeo o modelado 3D en una máquina virtual y necesitas aceleración de vídeo por hardware y una tarjeta gráfica?

Cuando se trata de máquinas virtuales, los recursos de hardware se comparten entre máquinas virtuales para un uso flexible y racional de los recursos. Si una máquina virtual está ejecutando aplicaciones pesadas, puede consumir más recursos de CPU y memoria que otras máquinas virtuales que estén inactivas o ejecutando operaciones que requieran menos recursos. Además, por defecto, las máquinas virtuales sólo utilizan funciones básicas de vídeo para mostrar los datos. En un entorno Microsoft Hyper-V, puede utilizar Hyper-V RemoteFX para permitir que las máquinas virtuales compartan los recursos de una tarjeta de vídeo y la aceleración 3D.

Lea esta entrada de blog para aprender sobre Hyper-V RemoteFX y cómo configurar RemoteFX en máquinas Windows.

NAKIVO for Hyper-V Backup

NAKIVO for Hyper-V Backup

Agentless, application-aware backups for Hyper-V. Anti-ransomware protection, instant VM boot from backup, other virtual/physical platform support and more.

Qué es RemoteFX

RemoteFX es una función que permite a las máquinas virtuales Hyper-V compartir una GPU (unidad de procesamiento gráfico) física. Los recursos de una tarjeta de vídeo se comparten entre varias máquinas virtuales. Este es el escenario óptimo para cargas de trabajo de gran ráfaga cuando no se requieren en todo momento los recursos dedicados de una tarjeta de vídeo. Hyper-V RemoteFX puede utilizarse para desplegar una VDI (infraestructura de escritorio virtual). Una GPU RemoteFX es un dispositivo virtual conectado a una máquina virtual que comparte los recursos de una tarjeta de vídeo física instalada en un host Hyper-V (comparte la GPU y la memoria de vídeo).

RemoteFX se introdujo en Windows 7 y ha estado disponible en Windows 8, Windows 10, Windows Server 2008 R2 SP1, Windows Server 2012 y Windows Server 2016. Esta función no está presente en Hyper-V Manager en la última versión de Windows Server 2019: no se puede habilitar Hyper-V RemoteFX en la interfaz gráfica de usuario (GUI). El uso de RemoteFX reduce la carga de la CPU (unidad central de procesamiento) y aumenta la escalabilidad en un entorno virtual. No es necesario conectar una GPU dedicada para cada VM cuando se utiliza Hyper-V RemoteFX porque las máquinas virtuales pueden compartir dinámicamente la GPU para la carga de trabajo.

El renderizado de vídeo, el procesamiento de imágenes pesadas, el trabajo con aplicaciones CAD y el modelado 3D son algunos de los casos en los que puede necesitar aceleración 3D y una GPU RemoteFX en una VM. Una GPU moderna está mejor adaptada al procesamiento paralelo que la CPU, maneja más amenazas simultáneamente y tiene más núcleos de procesamiento. El número de monitores y las resoluciones utilizadas dependen de la memoria de vídeo y del rendimiento de la GPU de una tarjeta de vídeo. Use Escritorio Remoto, no VMConnect (Conexión a Máquina Virtual), para conectarse a VMs usando RemoteFX.

La ventaja de RemoteFX es que puede utilizarse en versiones de Windows de escritorio y servidor. Aunque comprar una tarjeta de vídeo compatible con el hardware del servidor puede no ser fácil, la mayoría de los ordenadores de sobremesa que suelen ejecutar sistemas operativos Windows cliente tienen instalados adaptadores gráficos PCI Express.

Fin de la compatibilidad

Existe una vulnerabilidad (CVE-2020-1036) que puede ser utilizada por los ciberdelincuentes para la ejecución remota de código. Los hackers pueden ejecutar código remoto en una máquina host utilizando aplicaciones especialmente diseñadas en una máquina virtual con GPU RemoteFX para atacar los controladores de vídeo en un host Hyper-V. En este caso, un servidor anfitrión no puede validar correctamente la entrada de un usuario autenticado en un SO invitado. Microsoft no proporciona un parche para solucionar esta vulnerabilidad y afirma que se trata de un problema de arquitectura. Debido a estos problemas de seguridad, Microsoft decidió desactivar y eliminar RemoteFX de todas las versiones de Windows mediante actualizaciones automáticas:

  • RemoteFX vGPU se desactivó el 14 de julio de 2020 para todas las versiones de Windows.
  • RemoteFX vGPU se eliminó el 13 de abril de 2021.

RemoteFX funciona en Windows 10 versión 1803 y versiones anteriores de Windows (se puede configurar en unos pocos clics en la GUI de Hyper-V Manager). Después de la actualización KB4571756 (una actualización acumulativa publicada en septiembre de 2020), esta función está desactivada en la interfaz gráfica de usuario. Como resultado, la configuración de Windows 10 RemoteFX no está disponible en la GUI del Administrador de Hyper-V en Windows 10, versión 1809, porque la función se deshabilitó. Hasta las actualizaciones de abril de 2021, la GPU RemoteFX tenía que habilitarse en PowerShell con comandos especiales.

Requisitos de RemoteFX

  • Una versión de Windows compatible en un host Hyper-V (Windows 7 Ultimate/Enterprise, Windows 8 Ultimate/Enterprise, Windows 10; Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2016, Windows Server 2019). Las actualizaciones que eliminan Hyper-V RemoteFX no deben instalarse.
  • Una GPU debe ser compatible con DirectX 11 en una máquina host (DirectX 10 puede utilizarse en Windows Server 2008 y Windows 7 instalado en una máquina física). Si hay varias tarjetas de vídeo instaladas en el host Hyper-V, deben ser idénticas. DirectX 11 está disponible en Windows 8.1 y versiones más recientes de Windows en máquinas virtuales invitadas.
  • Una CPU debe ser compatible con SLAT (Second Level Address Translation). El nombre de esta función es Extended Page Tables (EPT) para procesadores Intel y Nested Page Tables (NPT) para procesadores AMD.
  • Los sistemas operativos invitados compatibles son Windows 7 SP1, Windows 8 y 8.1, Windows 10 1703 o posterior, Windows Server 2008 R2, Windows Server 2012, Windows Server 2016 (solo en una implementación de sesión única).

Cómo configurar RemoteFX

Prepare la máquina física que es el host Hyper-V. Asegúrese de que ha instalado los controladores gráficos para un adaptador gráfico en el host Hyper-V. Se recomienda instalar la última versión estable de los controladores proporcionada por el proveedor de la GPU (por ejemplo, NVIDIA o AMD).

Prepare una máquina virtual que esté ejecutando una versión compatible de Windows para utilizar Hyper-V RemoteFX. En mi ejemplo, el nombre de la VM es Windows-VM, y el nombre del host Hyper-V es Hyper-V-prim.

Instalación de las funciones necesarias

Instale el servicio Remote Desktop Virtualization Host en el host Hyper-V.

Abra Server Manager y haga clic en Manage > Add Roles and Features.

Se abrirá el Asistente para añadir funciones.

Tipo de instalación. Seleccione Instalación basada en roles o en funciones. Pulse Siguiente en cada paso del asistente para continuar.

Installing roles and features in Windows

Selección de servidor. Seleccione un servidor del grupo de servidores. Asegúrese de que su host Hyper-V está seleccionado.

Selecting a server to install a role or feature

Roles de servidor. Seleccione Servicios de Escritorio Remoto en la lista de roles. Si el rol Hyper-V no está instalado, seleccione e instale el rol Hyper-V.

Installing Remote Desktop Services to use Microsoft RemoteFX on Hyper-V

Funciones. Omita este paso.

Servicios de Escritorio Remoto. Lea la explicación y vaya al paso siguiente.

Role Services. Seleccione Host de Virtualización de Escritorio Remoto. Puede leer la descripción en el panel derecho.

Installing the Remote Desktop Virtualization Host service to use RemoteFX

Reinicie el host Hyper-V cuando finalice la instalación del rol.

Configuración de los ajustes de Hyper-V

Abra Hyper-V Manager ejecutando virtmgmt en la línea de comandos o utilizando la GUI de Windows. A continuación, abra los ajustes de Hyper-V.

En el panel de navegación de la ventana Ajustes de Hyper-V, haga clic en GPU físicas. En el menú desplegable, selecciona tu tarjeta de vídeo y, a continuación, la casilla Utilizar esta GPU con RemoteFX.

Selecting a video card to use the GPU with RemoteFX

Si no puede seleccionar esta casilla, entonces su adaptador de vídeo no puede utilizarse para RemoteFX, o RemoteFX está desactivado.

Detener la máquina virtual.

Abra Hyper-V Manager, seleccione su VM, haga clic con el botón derecho en la VM y abra Ajustes de VM.

En la ventana de ajustes de la máquina virtual, haga clic en Añadir hardware en el panel izquierdo (el panel de navegación). En el panel derecho, verá una lista de dispositivos que puede añadir a una máquina virtual. El flujo de trabajo es similar para las máquinas virtuales de Generación 1 y Generación 2.

Si hay un adaptador de vídeo 3D RemoteFX activo (se utiliza una fuente negra), seleccione este adaptador y haga clic en Añadir. Esta opción está activa en las versiones de Windows hasta el 14 de julio de 2020, se instalan las actualizaciones.

Si su Windows fue actualizado, la opción RemoteFX 3D Video Adapter está inactiva (se utiliza una fuente gris), y no puede agregar este adaptador en la GUI de Hyper-V Manager. Al mismo tiempo, la opción de GPUs físicas ya no aparece en los ajustes de Hyper-V.

Configuring virtual hardware for a VM – adding a RemoteFX 3D Video Adapter

Puede solucionarlo con PowerShell.

Ejecute el comando en PowerShell en el host Hyper-V para añadir un adaptador de vídeo 3D RemoteFX a una máquina virtual:

Add-VMRemoteFx3dVideoAdapter -VMName your_VM_name

Si el comando se ejecuta correctamente, se muestra un mensaje de advertencia.

ADVERTENCIA: Ya no admitimos el adaptador de vídeo 3D RemoteFX. Si sigue utilizando este adaptador, puede quedar expuesto a riesgos de seguridad.

Si ve el error Add-VMRemoteFx3dVideoAdapter: Para habilitar este dispositivo, utilice el Administrador de servidores para instalar el servicio de rol Remote Desktop Virtualization Host

El servicio Remote Desktop Virtualization no está instalado en el host Hyper-V. Consulte Instalación de las funciones necesarias más arriba en esta misma entrada.

Activación de Windows 10 RemoteFX tras instalar actualizaciones

Como he comentado anteriormente, si se instalan las actualizaciones de Windows del 14 de julio de 2020, se desactiva Microsoft RemoteFX. Si tiene máquinas virtuales configuradas para utilizar RemoteFX, no se iniciarán. El siguiente error de Windows 10 RemoteFX para Windows 10 con la actualización del 14 de julio de 2020 se muestra al intentar iniciar una máquina virtual:

Se ha producido un error al intentar iniciar la(s) máquina(s) virtual(es) seleccionada(s):

‘VM-name’ falló al iniciar.

Controlador de pantalla 3D sintética (ID de instancia xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx): Fallo en el encendido con el error ‘No existen recursos del sistema suficientes para completar el servicio solicitado’.

La máquina virtual no se puede iniciar porque todas las GPUs compatibles con RemoteFX están deshabilitadas en Hyper-V Manager. Debe habilitar al menos una GPU.

Otra variante del error:

La máquina virtual no se puede iniciar porque el servidor no tiene suficientes recursos de GPU.

Puede solucionar esto en PowerShell. Este método es aplicable para Windows 10 y las versiones correspondientes de Windows Server. Utilice comandos en PowerShell para solucionar este error y habilitar RemoteFX. Ejecute este comando para comprobar la información sobre el adaptador de vídeo en el host Hyper-V:

Get-VMRemoteFXPhysicalVideoAdapter

Encuentra esta cadena:

Enabled: False

Significa que RemoteFX está deshabilitado. Cambia este valor a True.

Windows 10 RemoteFX configuration in PowerShell

Copia el nombre de la tarjeta de vídeo (en mi ejemplo, NVIDIA GeForce GTX 1060).

Ejecuta el comando:

Enable-VMRemoteFXPhysicalVideoAdapter -Name "video_card_name"

Introduce el nombre de tu tarjeta gráfica.

Intenta arrancar tu VM usando RemoteFX de nuevo. La máquina virtual debería iniciarse ahora.

Tenga en cuenta también estos cmdlets de PowerShell para gestionar un adaptador de vídeo 3D RemoteFX:

Set-VMRemoteFx3dVideoAdapter

Get-VMRemoteFXPhysicalVideoAdapter

Después de añadir un adaptador de vídeo 3D RemoteFX a una máquina virtual, este adaptador debería ser visible en la lista de hardware de la máquina virtual con opciones para configurar la resolución, el número de monitores y la memoria de vídeo dedicada.

Si no ve estas opciones en la GUI de Hyper-V Manager, utilice parámetros adicionales cuando añada un adaptador de vídeo RemoteFX a una VM en PowerShell, por ejemplo:

. Set-VMRemoteFx3dVideoAdapter -VMName Windows-VM -MaximumResolution 1024x768 -VRAMSizeBytes 536870912

Si Microsoft RemoteFX se configuró correctamente, en el Windows invitado que se ejecuta en la VM, verá un dispositivo gráfico Microsoft RemoteFX – dispositivo WDDM en la sección Adaptadores de pantalla del Administrador de dispositivos. Este adaptador de vídeo 3D RemoteFX es un dispositivo virtual que comparte los recursos de la tarjeta de vídeo física instalada en el host físico Hyper-V mediante RemoteFX.

Solución de problemas

A veces pueden producirse errores adicionales. Permítanme explicar un error común cuando un usuario no puede conectarse a una VM en ejecución utilizando Remote desktop RemoteFX.

Síntomas:

  1. Se ha desconectado la videoconferencia remota y se muestra el mensaje correspondiente.
  2. RDP no ha podido conectarse: Su sesión de Escritorio Remoto ha finalizado, posiblemente por una de las siguientes razones.

Si se ha producido este error en su máquina virtual, edite una directiva de grupo en el Windows invitado de la máquina virtual.

Haga clic en Inicio > Ejecutar > gpedit.msc para abrir el Editor de directivas de grupo para un equipo local.

En el panel izquierdo de la ventana del Editor de directivas de grupo, vaya a

Configuración del equipo > Plantillas administrativas > Componentes de Windows > Servicios de Escritorio remoto > Host de sesión de Escritorio remoto > Entorno de sesión remota > RemoteFX para Windows Server. Haga doble clic en Configurar RemoteFX en el panel derecho de la ventana.

Se abre una ventana con las propiedades de Configurar RemoteFX. Seleccione Activado y pulse OK para guardar los ajustes.

Haga doble clic en Usar controlador de pantalla gráfica WDDM para Conexiones a Escritorio remoto (disponible para Windows 10 versión 1903 y versiones más recientes de Windows).

En la ventana que se abre, seleccione Desactivado y pulse Aceptar.

Actualice la configuración de las políticas de grupo para aplicar nuevos ajustes con el comando:

gpupdate /force

Reinicie su máquina virtual. Intente conectarse a su máquina virtual utilizando el modo de sesión mejorado.

Cómo evitar la desactivación de RemoteFX en un host Hyper-V

Después de instalar la actualización de Windows publicada en abril de 2021, las máquinas virtuales que utilizan un adaptador de vídeo 3D RemoteFX no se inician. Puede desactivar las actualizaciones automáticas en ordenadores Windows bajo su propia responsabilidad para seguir utilizando RemoteFX. Tenga en cuenta que los parches de seguridad no se instalan automáticamente en los equipos Windows si las actualizaciones de Windows están desactivadas. Las vulnerabilidades sin parchear son una amenaza para sus ordenadores, que corren el riesgo de infectarse con ransomware, virus y otros programas maliciosos.

Puede descargar actualizaciones de Windows (parches) manualmente desde el sitio de Microsoft e instalarlas. Sepa qué actualizaciones de Window están destinadas a eliminar RemoteFX y no las instale. Considere la posibilidad de implantar WSUS (Windows Server Update Services) en su organización y anule la selección de las actualizaciones que no necesite.

No olvide hacer backup de sus servidores Windows y máquinas virtuales Hyper-V. En caso de desastre o ataque de ransomware, hacer backups permite recuperar los datos, restaurar las cargas de trabajo y reanudar las operaciones en poco tiempo. Utilice NAKIVO Backup & Replication para hacer backup de sus máquinas físicas y virtuales.

1 Year of Free Data Protection: NAKIVO Backup & Replication

1 Year of Free Data Protection: NAKIVO Backup & Replication

Deploy in 2 minutes and protect virtual, cloud, physical and SaaS data. Backup, replication, instant recovery options.

Alternativas a Hyper-V RemoteFX

Microsoft recomienda que los clientes utilicen DDA en lugar de utilizar RemoteFX después de abril de 2021.

DDA (Discrete Device Assignment) es una función que permite adjuntar un dispositivo (en mi caso, un dispositivo PCI Express) directamente a una VM. En el caso de una tarjeta gráfica, la tarjeta debe desconectarse de la máquina anfitriona y conectarse a una máquina virtual. Sólo una máquina virtual puede utilizar una tarjeta de vídeo con DDA en un momento dado.

Un controlador de vídeo para una GPU debe instalarse en el sistema operativo invitado de una máquina virtual, no en una máquina host. En este caso, funciones como DirectX 12 y CUDA (Compute Unified Device Architecture) están disponibles en una VM (CUDA no está disponible en una VM cuando se utiliza RemoteFX). Cuando se utiliza la Asignación Directa de Dispositivos, no es posible la migración de máquinas virtuales entre hosts Hyper-V.

Considere la posibilidad de utilizar alternativas de VMware para servidores y ordenadores de sobremesa que ejecuten máquinas virtuales. Utilice Virtual Shared Graphics Acceleration (vSGA) y Virtual Shared Pass-Through Graphics Acceleration en VMware vSphere para compartir la GPU con varias máquinas virtuales. Utiliza tarjetas de vídeo compatibles que admitan la virtualización de GPU y tengan las funciones de hardware adecuadas:

  • nVidia GRID vGPU
  • GPU multiusuario AMD

Puede habilitar gráficos 3D acelerados para una VM en VMware Workstation si utiliza una máquina de escritorio en lugar de un servidor.

Conclusión

Hyper-V RemoteFX es una función útil que permite a las máquinas virtuales compartir los recursos de hardware de un adaptador de vídeo físico instalado en un host Hyper-V y utilizar la aceleración 3D para aplicaciones en máquinas virtuales. Para configurar RemoteFX en una máquina virtual, instale el servicio Remote Desktop Virtualization Host en el host Hyper-V, edite los ajustes generales de Hyper-V para seleccionar la GPU que debe utilizarse para la aceleración de vídeo y añada un adaptador de vídeo 3D RemoteFX en las opciones de hardware virtual de la máquina virtual. Desafortunadamente, Hyper-V RemoteFX está obsoleto por Microsoft, y el uso de RemoteFX sólo es posible hasta que instale las actualizaciones de Windows de abril de 2021.

Artículos recomendados