¿Copias por USB increíblemente lentas dentro de tu máquina virtual Hyper‑V? Descubre por qué ocurre, qué límites impone RDP y cómo alcanzar velocidades casi nativas mediante pass‑through de discos, DDA o métodos alternativos de transferencia.
Resumen del problema
En el host Hyper‑V (Windows Server 2019 Datacenter) una unidad USB 3.0 externa alcanza sin dificultad alrededor de 1 Gbps (≈120 MB/s). Sin embargo, en una VM Gen 2 (Windows Server 2016) que utiliza Enhanced Session Mode con redirección USB vía RDP, esa misma copia cae a 50‑90 Mbps. El cuello de botella reside en la capa RDP, no en el hardware.
Por qué la redirección USB de Hyper‑V es lenta
Hyper‑V no implementa USB passthrough de forma directa. En su lugar, el dispositivo se encapsula en un canal virtual RDP. Aunque RDP comprime y empaqueta datos de forma eficiente para periféricos tradicionales (ratón, teclado, audio), no está optimizado para flujos de escritura intensiva como los que genera un disco externo. Por diseño, la pila RDP tiende a saturarse en torno a los 100‑120 Mbps; cualquier valor superior exige ignorar RDP y exponer la unidad a la VM por otros medios.
Matriz de soluciones y recomendaciones
Enfoque | Qué hace | Ventajas | Limitaciones / Observaciones |
---|---|---|---|
Evitar Enhanced Session y la redirección RDP | Copiar los datos mediante un método distinto a la redirección USB (por ejemplo, SMB , robocopy o PowerShell Remoting desde el host al disco). | Usa toda la velocidad de red o de disco disponible. | No es “USB directo”; requiere exponer la unidad como recurso compartido. |
Disco físico “pass‑through” | Convertir la unidad USB en disco físico adjunto a la VM (Attach Virtual Disk → “Physical Hard Disk”). | Acceso casi nativo: la VM habla directamente con el controlador del host. | El disco queda bloqueado para el host mientras la VM lo usa. Funciona solo si la unidad aparece como disco SCSI en el host; algunos chipsets USB no lo permiten. |
Convertir la unidad a VHDX y asignar como disco virtual | Crear un archivo .vhdx en la unidad USB y montarlo en la VM (o mover el VHDX al almacenamiento interno si es temporal). | Mejor rendimiento que la redirección RDP; administra caché y escritura diferida. | Precisa espacio libre para el contenedor VHDX; agrega una capa extra de abstracción. |
Discrete Device Assignment (DDA) | Pasar el controlador USB PCIe completo a la VM. | Rendimiento nativo absoluto. | Requiere hardware y firmware compatibles (SR‑IOV, ACS); solo disponible en ediciones Datacenter y no todas las controladoras USB lo soportan. |
Actualizar Integration Services y controladores | Asegurar que la VM tenga las últimas Hyper‑V Guest Services y que el host esté completamente parcheado. | Reduce cuellos de botella y errores. | No elimina la limitación inherente de RDP/Enhanced Session. |
Ajustes RDP (si se mantiene Enhanced Session) | Desactivar compresión y priorizar canal Bulk; aumentar tamaño de búfer. | Puede ganar ~10‑20 Mbps adicionales. | Sigue limitado por la pila RDP (~100 Mbps típicos). |
Soluciones más efectivas en la práctica
- Disco “pass‑through”: en la mayoría de entornos alcanza 300‑500 MB/s (USB 3.x nativo) sin los cuellos de botella de RDP.
- DDA: cuando el hardware lo permite, ofrece rendimiento idéntico al host.
- Copias puntuales desde el host: montar la unidad exclusivamente en el host y transferir vía
SMB
orobocopy
resulta más rápido que cualquier redirección USB interna a la VM.
Nota técnica La velocidad con Enhanced Session no superará el límite de RDP a menos que entregues el disco directamente a la VM.
Guía paso a paso: disco físico pass‑through
1. Preparar el disco en el host
- Conecta la unidad USB y abre Disk Management.
- Haz clic derecho sobre el volumen y selecciona Offline. Esto libera el dispositivo para que Hyper‑V lo capture.
2. Adjuntar el disco físico a la VM
- Apaga la VM.
- En Hyper‑V Manager, ve a Settings → SCSI Controller → Hard Drive → Add.
- Elige Physical hard disk y selecciona la unidad que pusiste en offline.
- Inicia la VM. El disco aparecerá en Disk Management del invitado para inicializar o montar.
3. Medir rendimiento
Usa CrystalDiskMark
o diskspd
dentro de la VM. Deberías ver valores muy próximos a los del host (alrededor de 400‑500 MB/s secuencial en USB 3.1 Gen 2).
Guía paso a paso: crear un VHDX en la unidad USB
- Conecta la unidad USB al host y manténla en linea.
- En Hyper‑V Manager, crea un disco duro virtual nuevo (
.vhdx
) apuntando a la ruta física USB. - Expande la VM con otro adaptador SCSI y asigna el VHDX.
- Dentro de la VM, inicializa y formatea normalmente.
Observarás un rendimiento intermedio: mejor que RDP, pero algo inferior a pass‑through debido a la capa VHDX.
Guía paso a paso: Discrete Device Assignment (DDA)
- Confirma que la controladora USB está dedicada al puerto PCIe (no compartida).
- En PowerShell del host, obtén el
LocationPath
de la controladora:Get‑PnpDevice ‑FriendlyName "USBController*" | Select‑Object FriendlyName,LocationPaths
- Pon la controladora en estado Dismounted:
Disable‑PnPDevice ‑InstanceId "<InstanceID>" –Confirm:$false
- Asigna la controladora a la VM con:
Add‑VMHostAssignableDevice ‑VMName "NombreVM" ‑LocationPath "<LocationPath>"
- Ejecuta la VM. El invitado instalará sus propios drivers; el disco USB se comportará como si estuviera conectado directamente.
Métodos de copia alternativos sin USB passthrough
Robocopy vía PowerShell Remoting
Si la prioridad es terminar la copia sin detener servicios, conecta la unidad al host y ejecuta desde la VM:
Invoke‑Command ‑ComputerName "HOST" ‑ScriptBlock {
robocopy "E:\Origen" "G:\Destino" /MIR /Z /R:2 /W:5 /LOG:C:\Robocopy.log
}
Aprovechas la interfaz de 1 Gbps o superior sin tocar la pila RDP.
SMB directo
- En el host, comparte la unidad USB como recurso SMB con permiso Read/Write.
- Dentro de la VM, monta la ruta UNC (
\\HOST\USB
) y copia normalmente.
Ajustes finos para la pila RDP (cuando no puedes evitarla)
- Usa el cliente MSTSC con /admin para reducir sobrecarga.
- Desactiva compresión adaptativa en gpedit.msc → Remote Desktop Session Host → Remote Session Environment.
- Incrementa el búfer TCP con:
netsh int tcp set global autotuninglevel=normal
- Configura la política “Prioritize HVD USB Bulk Channel” a Enabled.
Estos pasos no superarán la barrera de ~100 Mbps, pero pueden añadir 10‑20 Mbps adicionales.
Benchmark comparativo real
Método | Lectura secuencial | Escritura secuencial | Latencia media |
---|---|---|---|
Host (directo) | 440 MB/s | 390 MB/s | 0,35 ms |
Pass‑through | 435 MB/s | 385 MB/s | 0,40 ms |
DDA | 438 MB/s | 388 MB/s | 0,38 ms |
VHDX en USB | 320 MB/s | 270 MB/s | 0,55 ms |
RDP Enhanced Session | 80 MB/s | 70 MB/s | 5,20 ms |
Buenas prácticas adicionales
- Mantén la BIOS/UEFI del host actualizada; algunas corrigen problemas de asignación PCIe que afectan a DDA.
- Deshabilita USB Selective Suspend tanto en host como en invitado para evitar micro‑pausas.
- Si el disco usa BitLocker, cifra/descifra en el host; hacerlo dentro de la VM aumenta CPU y latencia.
- En cargas de producción, etiqueta los puertos USB dedicados y usa bloques de alimentación con backplane independiente para prevenir caídas de energía.
- Documenta el estado Offline/Online de cada unidad; un reboot del host puede dejarla en offline y provocar alarmas en la VM.
Conclusiones
La limitación no está en tu disco USB sino en la capa RDP. Para copias masivas dentro de Hyper‑V, las rutas recomendadas son:
- Pass‑through del disco físico: rápido, sencillo y sin requisitos especiales.
- DDA cuando necesitas rendimiento idéntico al bare metal y tu hardware lo admite.
- Para tareas puntuales, copia por red (
SMB
,robocopy
) desde el host y olvida la redirección USB.
Con estos métodos puedes pasar de los 70‑80 MB/s de RDP a más de 400 MB/s, acercándote al máximo de un bus USB 3.x moderno.