Stai copiando file da una VM Hyper‑V verso un disco USB 3.0 e ottieni appena 50‑90 Mbps? Non è un’anomalia: è il limite pratico del reindirizzamento USB via RDP. In questa guida spieghiamo perché accade e come arrivare a velocità vicine a quelle dell’host con procedure passo‑passo, senza trucchi inefficaci.
Panoramica del problema
Scenario reale: un host Windows Server 2019 Datacenter installato su Dell R740xd trasferisce dati verso un disco esterno USB 3.0 intorno a 1 Gbps. La stessa unità, però, quando viene reindirizzata a una VM Generation 2 Windows Server 2016 tramite Enhanced Session Mode (USB redirection su canale RDP) si ferma a 50‑90 Mbps. L’utente ha provato a disabilitare/abilitare VMQ, senza risultati. La domanda è chiara: come aumentare la velocità di copia dalla VM?
Perché il reindirizzamento USB via RDP è lento
Il reindirizzamento USB dell’Enhanced Session Mode incapsula i comandi USB in un canale virtuale RDP e li invia come flusso di messaggi, non come I/O storage nativo. Questo introduce:
- Overhead di protocollo: la comunicazione non è un semplice flusso sequenziale, ma una conversazione a pacchetti che simula l’albero USB.
- Serializzazione lato servizio: la pipeline RDP‑USB tende a comportarsi come un percorso CPU‑bound, dove la latenza per messaggio e la gestione dei trasferimenti bulk frenano il throughput.
- Assenza di ottimizzazioni storage: cache, queue depth e coalescing tipici dello stack disco non sono pienamente sfruttati.
Il risultato pratico è che, anche con hardware performante, la copia su dispositivi reindirizzati via RDP si colloca di frequente nell’ordine di 50‑100 Mbps. Questo non dipende dal bus USB dell’host, che infatti – nello stesso scenario – può saturare la porta con prestazioni prossime o superiori a 1 Gbps.
Cosa non incide in modo decisivo
- VMQ, RSS, vSwitch: intervengono sul traffico di rete, non sul canale di USB redirection dell’Enhanced Session. È normale che non cambino la situazione.
- Integration Services/driver: aggiornamenti sono sempre consigliati, ma non eliminano il collo di bottiglia intrinseco del canale RDP‑USB.
- Più vCPU/RAM alla VM: utile per carichi generali, ma il limite è nel percorso di reindirizzamento, non nella capacità di elaborazione della VM.
Soluzioni rapide a confronto
Se l’obiettivo è la velocità, occorre uscire dal reindirizzamento USB e riportare i dati su percorsi storage o rete più efficienti. Di seguito gli approcci con aspettative reali.
Approccio | Descrizione | Aspettativa di velocità |
---|---|---|
Approccio A – Montare il disco direttamente nella VM | Metti offline il disco USB sull’host e aggiungilo alla VM come Hard Disk fisico (Controller SCSI in Hyper‑V). Funziona solo se Windows vede il disco come “fisso”, non “rimovibile”. | ~ pari all’host, spesso > 800 Mbps |
Approccio B – VHDX su USB | Crea un file VHDX fisso sul disco USB, allegalo alla VM come disco SCSI. Il traffico passa sul bus di storage virtuale, non via RDP. | Vicino a 1 Gbps |
Approccio C – Copia di rete dal host | Condividi la cartella USB sull’host via SMB/NFS e copia dalla VM tramite la NIC virtuale (ideale se lo switch virtuale poggia su 10 GbE). | 600‑900 Mbps (dipende dalla NIC virtuale) |
Approccio D – Hardware/Software USB‑over‑IP | Soluzioni dedicate (es. concentratori USB‑over‑IP) esportano il controller via rete, riducendo parte dell’overhead rispetto a RDP. | Variabile, spesso 200‑400 Mbps |
Approccio E – RDP Enhanced Session | Stato attuale. Il reindirizzamento USB usa il canale virtuale RDP con overhead e limiti architetturali. | 50‑100 Mbps tipici |
Vantaggi, svantaggi e prerequisiti
Approccio | Pro | Contro | Prerequisiti |
---|---|---|---|
Approccio A | Prestazioni massime, semplicità operativa, nessun trasferimento via rete. | Non funziona con dischi visti come “rimovibili”; lock esclusivo; rimozione da gestire con attenzione. | Disco USB esposto come fisso; possibilità di metterlo offline sull’host. |
Approccio B | Affidabile, vicino alle prestazioni native, controllo totale dal guest. | Richiede spazio file sul disco; meglio VHDX a dimensione fissa; gestione file di grandi dimensioni. | Permessi sull’host; Hyper‑V; spazio sufficiente per il VHDX. |
Approccio C | Nessun lock fisico del disco, facile da scriptare, scalabile su rete veloce. | Dipende dallo stack di rete; attenzione a non usare la condivisione RDP dei drive locali. | SMB/NFS sull’host; risorse di rete adeguate; preferibile switch virtuale su 10 GbE. |
Approccio D | Gestione centralizzata di dispositivi USB; compatibilità con scenari particolari. | Costo/complessità; prestazioni inferiori rispetto agli approcci storage o SMB. | Appliance o software dedicati; rete stabile, preferibilmente cablata. |
Approccio E | Zero configurazione, ottimo per usabilità e periferiche leggere. | Collo di bottiglia intrinseco; non adatto a copie massicce. | RDP con Enhanced Session abilitato; driver standard. |
Procedura dettagliata
Approccio A – Montare il disco USB direttamente nella VM
Quando usarlo: prioritario se il disco USB è visto come “fisso” dal sistema (molti box USB‑SATA recenti lo permettono). È il percorso più vicino alle prestazioni dell’host.
- Identifica il disco sull’host
Get-Disk | Where-Object { $_.BusType -eq 'USB' } | Format-Table Number,FriendlyName,BusType,IsRemovable,IsOffline,Size -Auto
- Metti il disco offline sull’host
Set-Disk -Number <N> -IsOffline $true Set-Disk -Number <N> -IsReadOnly $false
Attenzione: verifica due volte di non agire sul disco di sistema. - Aggiungi il disco fisico alla VM
In Hyper‑V Manager ► Impostazioni della VM ► Controller SCSI ► Aggiungi ► Hard Disk fisico e seleziona il disco USB ora offline sull’host. - Accendi la VM e porta online il disco
Dalla Gestione disco del guest o con PowerShell:Get-Disk | Where-Object { $.BusType -eq 'USB' -and $.IsOffline } | Set-Disk -IsOffline $false
- Rimozione sicura: spegni o arresta la VM, rimuovi il disco dalle impostazioni della VM, quindi riportalo online sull’host e usa la rimozione sicura.
Se il disco è “rimovibile”: Hyper‑V non lo offrirà nella lista di pass‑through. In questo caso passa all’Approccio B.
Approccio B – VHDX fisso posizionato sul disco USB
Quando usarlo: soluzione robusta e veloce, funziona con qualsiasi box USB perché alla VM presenti un file VHDX, non l’USB in sé.
- Crea un VHDX fisso sull’host
New-VHD -Path 'E:\Portable\DatiPortabili.vhdx' -SizeBytes 2TB -Fixed
Preferisci Fixed per evitare frammentazione e variazioni di latenza. Valuta cluster NTFS da 64 KB se il carico è sequenziale e con file grandi. - Allega il VHDX alla VM
Add-VMHardDiskDrive -VMName 'FS-VM' -ControllerType SCSI -Path 'E:\Portable\DatiPortabili.vhdx'
- Inizializza e formatta dal guest
Initialize-Disk -Number <N> -PartitionStyle GPT New-Partition -DiskNumber <N> -UseMaximumSize -AssignDriveLetter Format-Volume -DriveLetter <L> -FileSystem NTFS -NewFileSystemLabel 'VHDXUSB'
- Uso e rimozione: non montare il VHDX sull’host mentre è attaccato alla VM. Per rimuovere, scollegalo dalla VM, quindi scollega il disco USB.
Approccio C – Copia di rete dall’host
Quando usarlo: perfetto se non vuoi bloccare il disco alla VM. Con uno switch virtuale su 10 GbE e NIC adeguate arrivi molto vicino a 1 Gbps anche su USB.
- Condividi la cartella sull’host: crea una share SMB sulla radice o sulla cartella di destinazione del disco USB.
- Mappa dalla VM usando UNC
New-PSDrive -Name U -PSProvider FileSystem -Root \\HOST\USB -Persist
- Usa Robocopy multithread
robocopy D:\Origine U:\Destinazione /E /MT:64 /R:0 /W:0 /NP /NFL /NDL /TEE
Evita il drive mapping di RDP (Reindirizza le unità nel client) perché usa lo stesso canale RDP‑Device‑Redirection, ricadendo nel collo di bottiglia.
Ottimizzazioni di rete:
- Usa l’adattatore Hyper‑V Network Adapter (sintetico) nella VM, non quello emulato.
- Abilita vRSS e verifica coda/scheduling sul vSwitch. VMQ incide sul traffico verso la rete fisica; con host e VM sullo stesso nodo il traffico resta interno allo switch virtuale.
- Se l’host ha 10 GbE, preferisci lo switch esterno su quell’interfaccia.
Approccio D – USB‑over‑IP dedicato
Quando usarlo: se serve USB “vero” a livello di protocollo (dongle licenze, periferiche particolari) ma vuoi fare meglio di RDP. Le prestazioni sono comunque inferiori a pass‑through o VHDX, ma spesso superano RDP‑USB.
Note operative:
- Prediligi collegamenti cablati stabili e segmenti di rete senza congestione.
- Considera l’impatto sulla CPU delle soluzioni software e il QoS se condividi il link con altri flussi.
Approccio E – Continuare con Enhanced Session
Utile per accesso rapido e periferiche leggere, ma non pensato per saturare USB 3.0. Non esistono tweak affidabili per superare in modo sostanziale i 100 Mbps.
Diagnosi e misurazioni corrette
Prima di cambiare architettura, conviene misurare in modo ripetibile.
Misurare throughput reale
- Robocopy multithread (sequenziale):
/MT:64
,/R:0
,/W:0
,/NP
,/NFL
,/NDL
. Per file molto grandi, valuta/J
(I/O non bufferizzato), che riduce la pressione sulla cache ma può abbassare o aumentare la velocità a seconda del disco. - DiskSpd (random/sequenziale): profila il dispositivo con pattern realistici (es. 1 MB sequenziale in lettura/scrittura, QD 4‑8). Eseguilo dal guest contro la destinazione vera (pass‑through, VHDX, share).
Contatori utili
- PhysicalDisk – Disk Bytes/sec: saturazione del target.
- Network Interface – Bytes Total/sec sull’host e sulla VM (per approccio C/D).
- Process – CPU del servizio RDP/VMMS se sospetti colli CPU‑bound.
Best practice di configurazione
File system e layout
- NTFS vs exFAT: per ambienti Windows Server, NTFS offre più controllo e integrità. exFAT è comodo in ambienti misti ma meno ottimale per copie massicce con file piccoli.
- Allocazione 64 KB: su volumi dedicati a file grandi/sequenziali, l’unità di allocazione a 64 KB riduce l’overhead di metadati.
- VHDX fisso: riduce la frammentazione rispetto al dinamico e offre latenza più stabile.
Evita doppie cache e filtri
- Su copie massicce, gli antivirus in tempo reale possono incidere. Valuta esclusioni temporanee sulla cartella di destinazione (solo in ambienti controllati).
- Non montare mai lo stesso VHDX in contemporanea su host e guest.
Sicurezza e integrità
- Prima del pass‑through, verifica due volte il numero di disco. Un errore può togliere offline il disco sbagliato.
- Gestisci la rimozione sicura: spegni la VM o rimuovi il dispositivo dalla configurazione prima di staccare il cavo USB.
Procedura rapida consigliata
Se cerchi il miglior compromesso tra compatibilità e prestazioni, adotta questa sequenza:
- Tenta il pass‑through (Approccio A). Se il disco appare nella lista “Hard Disk fisico” di Hyper‑V, usa questo metodo.
- In alternativa crea un VHDX fisso sul disco USB e allegalo alla VM (Approccio B). È la scelta universale che aggira il limite RDP.
- In mancanza di entrambe, condividi via SMB sull’host e copia dalla VM con Robocopy multithread (Approccio C), evitando la condivisione RDP dei drive.
Domande frequenti
Perché l’host arriva a 1 Gbps e la VM no?
Perché l’host scrive sul bus USB nativo; la VM, via Enhanced Session, parla con un proxy USB su RDP progettato per compatibilità e usabilità, non per throughput massivo.
Posso accelerare il reindirizzamento USB RDP con parametri nascosti?
No in modo significativo. Ottimizzazioni minori non trasformano il canale in uno storage path competitivo. Occorre cambiare approccio.
VMQ, RSS e SR‑IOV aiutano?
Aiutano la rete virtuale/fisica, quindi l’Approccio C, ma non cambiano la natura del canale RDP‑USB. Se host e VM sono sullo stesso server, il traffico resta interno allo vSwitch; l’impatto di VMQ può essere marginale.
Il VHDX dinamico è davvero così penalizzante?
Per workload di copia massiva e sequenziale può comportare crescite e allocazioni a scatti. Nella pratica, un VHDX fisso è più prevedibile e spesso più veloce.
E se il box USB viene visto come “rimovibile”?
Passa all’Approccio B. Il pass‑through richiede che il disco sia esposto come fisso. Molti bridge USB moderni hanno un flag coerente, ma non c’è garanzia.
Checklist operativa
- Conferma il percorso: RDP‑USB o storage/SMB?
- Se USB‑RDP: accetta che 50‑100 Mbps è normale; non perdere tempo in tweak marginali.
- Se serve velocità: prova pass‑through; in alternativa VHDX fisso; infine SMB con Robocopy.
- Misura con Robocopy/DiskSpd prima e dopo per verificare il miglioramento.
- Proteggi i dati: offline/online corretti, rimozione sicura, backup.
Conclusione
Il reindirizzamento USB in Enhanced Session Mode è pensato per comodità, non per saturare USB 3.0. Se vuoi velocità comparabili all’host, devi cambiare percorso dei dati: pass‑through del disco fisico alla VM, VHDX fisso ospitato sull’USB oppure copia di rete dall’host. Tutto il resto – VMQ, più vCPU, driver – offre benefici marginali o nulli su questo specifico collo di bottiglia. Applicando le procedure qui sopra, porti la tua copia dalla fascia 50‑90 Mbps a valori molto più vicini al gigabit, in modo stabile e ripetibile.
Appendice – Comandi utili
# Elenco dischi USB sull'host
Get-Disk | Where-Object { $_.BusType -eq 'USB' } |
Format-Table Number,FriendlyName,IsRemovable,IsOffline,Size -Auto
Mettere offline un disco USB (host)
Set-Disk -Number -IsOffline $true
Aggiungere un VHDX fisso su USB
New-VHD -Path 'E:\Portable\DatiPortabili.vhdx' -SizeBytes 2TB -Fixed
Add-VMHardDiskDrive -VMName 'FS-VM' -ControllerType SCSI -Path 'E:\Portable\DatiPortabili.vhdx'
Copia SMB dalla VM con Robocopy (64 thread, nessun retry)
robocopy D:\Origine \HOST\USB\Destinazione /E /MT:64 /R:0 /W:0 /NP /NFL /NDL
Nota finale: Hyper‑V non fornisce un “controller USB 3.0” interno al guest come fanno altri hypervisor. Se trovi guide che citano un’opzione del genere nelle impostazioni della VM, sappi che si riferiscono a piattaforme diverse e non sono applicabili qui.