Come utilizzare dispositivi USB con una macchina virtuale di VMware vSphere

La funzione principale di un hypervisor è emulare i dispositivi utilizzati dalle macchine virtuali a livello software. Dispositivi come controller virtuali, dischi, lettori DVD-ROM, schede video, schede di rete, dispositivi di input ecc., vengono creati in una macchina virtuale. Ma cosa succede se vuoi collegare una stampante, uno scanner, un pen drive USB, un hard drive USB, una lettura smart card USB, dongle di sicurezza, chiavi di licenza USB, ecc.?

Per dispositivi esterni con interfaccia USB, puoi collegarli a una macchina virtuale in esecuzione su VMware Workstation o un host ESXi utilizzando la funzione USB pass-through. Questo articolo tratta dell’utilizzo di questa funzione in VMware vSphere su host ESXi, inclusi i requisiti e i passaggi per collegare i dispositivi USB.

Cosa è il USB Passthrough?

Il pass-through USB per dispositivi VMware è una funzione che ti permette di collegare un dispositivo fisico USB connesso a un porto USB su un host ESXi fisico a una macchina virtuale come se il dispositivo USB fosse collegato direttamente alla macchina virtuale. Il pass-through VMware è una funzione disponibile a partire da ESXi 4.1.

Le ragioni dell’utilizzo del pass-through per un dispositivo USB da un host ESXi a un guest operativo (OS) di una macchina virtuale variano. Per esempio, se si ha uno scanner o una stampante più vecchie che non hanno driver per le ultime versioni del sistema operativo Windows. È possibile installare la versione più vecchia di Windows che supporta il dispositivo USB e collegare questo dispositivo a una macchina virtuale. Un’altra utilizzazione pratica di questa funzione è quando è necessario copiare file da/a un hard drive USB da/a una macchina virtuale direttamente con alta velocità. Può capitare che gli utenti abbiano bisogno di utilizzare software protetti da hardware USB in macchine virtuali.

Come Funziona il Pass-Through USB

Ci sono tre componenti principali richiesti perché il pass-through USB funzioni: l’arbitro, il controller USB e il dispositivo USB fisico.

L’arbitro è un servizio dedicato su un server ESXi. L’arbitro scannerizza i dispositivi USB fisici collegati al server fisico ed è responsabile per il routing del traffico del dispositivo USB tra un host fisico e una macchina virtuale. Una sola macchina virtuale può accedere al dispositivo USB alla volta. L’accesso al dispositivo USB collegato alla macchina virtuale è bloccato per altre macchine virtuali. L’arbitro USB supporta fino a 15 controller USB (vSphere 7.0). Il servizio Arbitro è abilitato in modo predefinito in ESXi.

Un controller USB utilizzato su un server ESXi fisico è il controller a cui sono connessi i porti USB fisici. Il controller USB fisico lavora con i dispositivi USB fisici inseriti nei porti USB fisici sul server. I controller USB possono essere integrati (anche detti integrati e costruiti in un chip sulla scheda madre) o esterni (realizzati come schede PCI o PCIe inserite nei corrispondenti slot sulla scheda madre del server). Il controller USB integrato agisce come ponte tra un bus USB e un bus PCIe (o PCI). Il controller USB integrato è fisicamente collegato tramite il numero corretto di lane PCIe a un chipset della scheda madre.

Un controller USB virtuale è un dispositivo emulato creato specificamente per una macchina virtuale in esecuzione su un hypervisor. Un controller USB virtuale interagisce con un controller USB fisico quando un dispositivo USB fisico è passato da un host ESXi fisico a un guest OS nella macchina virtuale. La presenza di un controller USB virtuale è richiesta nella configurazione della VM per utilizzare la funzione USB pass-through nella VM. Un massimo di otto controller USB virtuali può essere connesso a una macchina virtuale su un host ESXi. Se è necessario rimuovere un controller USB virtuale dalla configurazione della VM, devi prima rimuovere tutti i dispositivi USB collegati a quel controller. Il driver USB di VMware viene installato sull’OS ospite dopo aver aggiunto un controller USB virtuale alla configurazione della macchina virtuale.

Un dispositivo USB fisico è qualsiasi dispositivo con interfaccia USB e porta USB per connettersi a un computer. Un massimo di 20 dispositivi USB può essere collegato a una singola macchina virtuale o host ESXi.

Le norme USB e i modi del controller sono:

  • USB 2.0 e USB 1.1 (EHCI+UHCI)
  • USB 3.0 (xHCI) Versione hardware della VM 8 o superiore

Dopo aver collegato un dispositivo USB fisico ad una macchina virtuale utilizzando la funzione di pass-through USB di VMware, potrebbe essere necessario installare driver per il dispositivo USB collegato nel sistema operativo ospite.

Requisiti per USB 3.0

USB 3.0 è disponibile per i server ESXi a partire dalla versione VMware vSphere 5.5 patch 3. Questo richiede il driver USB xHCI nella configurazione VM. I requisiti del sistema operativo per l’utilizzo del pass-through USB 3.0 sono: Windows 8.1 o successivi, Windows Server 2012 R2 o successivi, o Linux con il kernel Linux 2.6.35 o successivi. I dispositivi USB 3.1 sono supportati a tutta velocità a partire dalla versione VMware vSphere 7.0.

Limitazioni del Pass-Through USB

Ci sono alcune limitazioni che dovreste essere a conoscenza prima di iniziare ad utilizzare la funzione di pass-through USB:

  • Un drive USB non può essere utilizzato come unità di avvio per una macchina virtuale.
  • Se un drive USB è utilizzato per avviare ESXi, questo drive USB non può essere collegato ad una macchina virtuale.
  • È richiesta una versione virtuale di hardware 7 o superiore per una macchina virtuale.

Alcuni dispositivi USB potrebbero non essere supportati da VMware:

  • Hub USB
  • Dispositivi audio e videocamere che utilizzano un trasferimento di dati asincrono
  • Alcuni mouse e tastiere USB (più dettagli si trovano negli articoli VMware 1021345).
  • Alcune smart card che utilizzano CCID potrebbero richiedere una configurazione aggiuntiva per connettersi a una macchina virtuale.

vMotion è possibile per le macchine virtuali con dispositivi USB pass-through collegati. Dopo aver configurato correttamente la macchina virtuale e aver abilitato vMotion, i dispositivi USB rimangono collegati alla macchina virtuale dopo la migrazione ad un altro host ESXi.

Esistono limitazioni di vMotion per macchine virtuali che utilizzano dischi pass-through USB:

  • Il Gestore di Potenza Distribuito (DPM) non è supportato perché un host ESXi non può essere spento per risparmiare energia senza disconnettere un dispositivo USB dalla macchina virtuale (un dispositivo USB viene disconnesso se il host viene spento utilizzando DPM). Il DPM dovrebbe essere disabilitato su questo host.
  • La protezione contro gli errori non è supportata.
  • Una macchina virtuale non può essere sospesa o spenta (altrimenti, i dispositivi USB vengono disconnessi dalla macchina virtuale e possono essere riconnessi solo dopo la migrazione della macchina virtuale sul primo host ESXi a cui i dispositivi USB sono fisicamente collegati). La macchina virtuale deve essere spostata manualmente sul host ESXi con il dispositivo USB collegato quando è necessario accendere questa macchina virtuale. I ospiti Linux che sono stati riattivati possono montare i dispositivi USB in mount point diversi dopo la riconnessione.
  • Gli host ESXi che hanno macchine virtuali con dispositivi USB pass-through devono essere accessibili tramite l’interfaccia del kernel della macchina virtuale vmk0 (per le reti di gestione) e il porto TCP 902.

Scollegare i dispositivi USB dalla macchina virtuale prima di utilizzare la funzione hot-add e aggiungere CPU, memoria o dispositivi PCI. Altrimenti, i dispositivi USB vengono automaticamente scollegati e potrebbero essere perse alcune informazioni durante l’utilizzo della funzione hot-add. Se si sospende una macchina virtuale e poi la ripristina, i dispositivi USB vengono scollegati e poi riconnessi alla macchina virtuale.

Pertanto, riguardo la creazione di una unità virtuale USB o una unità virtuale USB da collegare a una macchina virtuale in esecuzione su ESXi o VMware Workstation, come si farebbe con un floppy disk virtuale o un CD/DVD virtuale, questa opzione non è attualmente supportata.

Come collegare un dispositivo USB a una macchina virtuale

Ora che abbiamo familiarizzato con la teoria, possiamo passare alla parte pratica e vedere la configurazione in VMware vSphere.

  1. Inserire un dispositivo USB in un porto USB sulla server ESXi. Nel mio caso, inserirò un’unità USB.
  2. Potete poi controllare se il dispositivo USB è connesso all’ESXi tramite l’interfaccia command line di ESXi:

    lsusb

  3. Come potete vedere dallo screenshot seguente, la mia unità USB è ora connessa al server ESXi.

  4. Il servizio dell’arbitro USB deve essere in esecuzione. Puoi controllare lo stato del servizio con il comando:

    chkconfig usbarbitrator --list

  5. Se l’arbitro USB è arrestato, puoi avviarlo con il comando

    /etc/init.d/usbarbitrator start

    Nota: Per maggiori informazioni su ESXiCLI, leggi il post del blog.

    La VM si trova sull’host ESXi gestito da vCenter Server nel mio esempio. Windows è installato come sistema operativo ospite nella mia macchina virtuale. Apri il client VMware vSphere, vai a Host e Cluster. Nella sezione Navigator pannello seleziona una macchina virtuale a cui vuoi connettere il dispositivo USB utilizzando la funzione pass-through. La macchina virtuale deve essere spenta. Devi installare VMware Tools sul sistema operativo ospite.

  6. Una volta selezionata la macchina virtuale, clicca su Azioni > Modifica impostazioni.

  7. Nella finestra Modifica Impostazioni, controlla se c’è un controller USB nelle impostazioni della macchina virtuale. Se il controller USB manca, clicca su Aggiungi Nuovo Dispositivo > Controller USB, e seleziona il tipo di controller USB (USB 2.0 o USB 3.0).
  8. Se il controller USB è presente, devi aggiungere il dispositivo USB collegato all’host ESXi alla tua VM. Clicca su Aggiungi Nuovo Dispositivo > Dispositivo Host USB.
  9. Viene aggiunto un nuovo stringa alla configurazione della macchina virtuale. Nella stringa Nuovo Host USB selezionare un dispositivo USB a cui connettere la macchina virtuale. Ora ho due chiavette USB connesse al mio server fisico ESXi, e sto connetendo la chiavetta Verbatim alla mia macchina virtuale (prodotto Verbatim 0x0302). Se serve abilitare il supporto vMotion, espandere il dispositivo Nuovo Host USB e selezionare la casella di controllo “Supportare vMotion mentre il dispositivo è connesso”. Notare i requisiti e le limitazioni di vMotion. Cliccare OK per salvare le impostazioni e chiudere questa finestra.
  10. Avviare una macchina virtuale. Una volta caricato il sistema operativo ospite, attendere che si inizializzi e installi la chiavetta USB. Successivamente, aprire il Windows Device Manager. Cliccare con il tasto destro su My Computer e dal menu contestuale, selezionare Gestisci. Nella finestra Gestione computer, fare clic su Pannello strumenti e espandere la sezione Unità a disco (poiché abbiamo connesso una chiavetta USB, questo dispositivo dovrebbe comparire in questa categoria di dispositivi). Possiamo vedere il dispositivo USB Verbatim, che è il nome della mia chiavetta USB connessa alla macchina virtuale utilizzando la funzione USB Passthrough di VMware.
  11. Aprire Gestione dischi nella finestra Gestione computer e assicurarsi che alla chiavetta USB sia assegnato un lettore di dischi. Nel mio caso, tutto è corretto, e ora posso copiare dati dalla chiavetta USB nel disco virtuale di una VM nel host Windows o viceversa.

VMware PCI Passthrough

Se il dispositivo USB che vuoi connettere a una VM utilizzando la funzione USB passthrough di VMware non è supportato da VMware, puoi provare a usare la funzione PCI passthrough e connettere l’intero controller fisico USB dotato di interfaccia PCI ad una VM.

Se il tuo server ESXi ha un controller USB inserito in un slot PCI, puoi passare questo dispositivo PCI ad una macchina virtuale. VMware PCI passthrough è anche chiamato VMDirectPass. Questo metodo è meno conveniente rispetto all’uso di USB passthrough, ma può aiutarti nell’impresa.

Requisiti

Deve essere supportata da hardware server Intel Directed I/O o AMD I/O Virtualization Technology (AMD IOMMU) e deve essere abilitata nell’UEFI/BIOS. Se hai solo un controller USB sul tuo server, dovresti collegare un controller USB aggiuntivo per evitare di perdere le connessioni ai dispositivi USB utilizzati dal tuo host fisico ESXi.

Limitazioni e Restrizioni:

  • Non puoi sospendere una macchina virtuale.
  • Una VM non può essere migrata ad altri host ESXi utilizzando vMotion.
  • Le istantanee delle macchine virtuali non sono supportate.

Consideriamo il flusso di lavoro per la connessione di un dispositivo USB ad una macchina virtuale (VM) usando il pass-through PCI e la connessione dell’intero controller USB a cui è collegato il dispositivo USB ad una VM.

  1. Per identificare il dispositivo USB e il controller USB a cui è collegato il tuo dispositivo USB (se sono installati più controller USB sul tuo server) usa questo comando:

    lsusb -v | grep -e Bus -e iSerial

  2. Trova la stringa con il nome del tuo dispositivo USB collegato al controller USB e identificalo id del controller (ad esempio bus002).
  3. Puoi controllare il log del VMkernel quando connetti un dispositivo USB ad un server ESXi:

    tail -f /var/log/vmkernel.log | grep -i USB

  4. Apri il client VMware vSphere e vai a Hosts and Clusters.
  5. Seleziona l’host ESXi su cui risiede la tua macchina virtuale (a cui devi connettere un dispositivo USB).
  6. Vai alla scheda Configure e seleziona PCI Devices nella sezione Hardware.
  7. Trova e seleziona il controller USB richiesto dalla lista dei dispositivi PCI utilizzando l’ID rilevato precedentemente.
  8. Lo stato del driver selezionato dovrebbe ora cambiare in Disponibile.
  9. Clicca su OK per salvare le impostazioni.
  10. Riavvia l’host ESXi perché le modifiche abbiano effetto.
  11. Assicurarsi che la macchina virtuale sia spenta. Vai alle impostazioni della macchina virtuale, clicca su Aggiungi Nuovo Dispositivo > Dispositivo PCI > Aggiungi. Seleziona il tuo controller USB dalla lista a discesa utilizzando l’ID corretto.
  12. Accendi la macchina virtuale. Controlla i dispositivi nell’OS ospite. Se Windows è installato sulla macchina virtuale, apri il gestore di dispositivi e controlla i driver e i dispositivi di archiviazione.

Connessione Smart Card USB

Alcuni dispositivi USB che hanno la classe CCID appropriata potrebbero non essere supportati per default per la connessione alle macchine virtuali. La messaggiodi errore “Impossibile connettere ‘path:0/1/6/1’ a questa macchina virtuale. Il dispositivo non è stato trovato”. Nei log puoi vedere il messaggio:

(vmx-vcpu-0) non ha richiesto l’interfaccia 0 prima dell’uso

PCSCD è il demone di ESXi che controlla i lettori di smart card. La connessione agli USB smart card è disabilitata per le macchine virtuali per evitare conflitti, poiché un host ESXi richiede una smart card. Come risultato, il pass-through USB non può essere utilizzato con le impostazioni di default per le smart card USB. Devi modificare la configurazione dell’host ESXi per abilitare il pass-through USB per le smart card USB.

  1. Ferma la macchina virtuale. Apri le impostazioni della macchina virtuale, seleziona la scheda Opzioni VM e clicca su Modifica Configurazione.

  2. Nel pannello Configurazione Parametri, fare clic su Aggiungi Parametri di Configurazione.

    In alternativa, è possibile modificare il file di configurazione VMX della macchina virtuale tramite interfaccia da riga di comando, connettendosi alla console ESXi con un client SSH.

  3. Se il parametro non è presente, modificare o aggiungere questa riga alla configurazione della macchina virtuale:

    usb.generic.allowCCID = "TRUE"

  4. Salvare le impostazioni della macchina virtuale.
  5. Interrompere il servizio PCSCD utilizzando questo comando sulla riga di comando ESXi:

    sudo /etc/init.d/pcscd stop

  6. Assicurarsi che il servizio PCSCD non sia in esecuzione:

    ps | grep pcscd

  7. Accendere la macchina virtuale e verificare i dispositivi per assicurarsi che il lettore di smart card USB sia connesso alla macchina virtuale.

Conclusione

Puoi connettere direttamente ai virtual machine i vari dispositivi collegati ai porti USB sui host fisici ESXi e usarli nei sistemi operativi ospitati negli stessi virtual machine, proprio come fareste con quei dispositivi USB su computer fisici normali. Anche se ci sono alcune limitazioni, la funzione di pass-through USB di VMware aggiunge capacità e flessibilità in diversi scenari.

Le copie di sicurezza delle VM di VMware sono importanti per chi utilizza VMware vSphere. Scarica NAKIVO Backup & Replication e prova questa soluzione universale di protezione dati per proteggere le vostre macchine virtuali di VMware vSphere e altri dati presenti nel tuo ambiente.

Source:
https://www.nakivo.com/blog/vmware-administration-essentials-configuring-esxi-vm-networks-2/