Installazione ESXi su USB e passthrough

Come ben saprete ESXi si può tranquillamente installare su chiavetta USB. I pro e i contro di questa cosa esulano da questo articolo ma resta il fatto che in installazioni molto ridotte può essere decisamente comodo avere l’unico array di dischi dedicato interamente ai dati in modo da non trovarsi in situazioni delicate duranti gli eventuali upgrade di versione dell’hypervisor.

Un’altra cosa che si fa spesso nelle piccole installazioni è passare delle periferiche USB come chiavette hardware o dischi di backup alle macchine virtuali. Ci sono due modi di fare questo in VMware, il primo è di aggiungere un USB Controller alla VM e quindi aggiungere l’USB Device e lasciare che l’emulazione USB faccia il suo lavoro, il secondo invece è di usare il DirectIO per assegnare i controller USB fisici direttamente alla macchina virtuale. La seconda soluzione è più veloce perché salta un intero strato di emulazione.

Il problema arriva quando si combinano le due situazioni, ovvero boot da USB e passthrough tramite DirectIO dei controller USB, cosa che VMware dichiara non supportata nella KB sotto elencata ma che risulta comunque possibile da client. Se capita quindi di trovarsi in questa situazione succede che il kernel di VMware perde l’accesso all’hardware USB non appena ha terminato di avviarsi. La cosa interessante è che mentre questo causa pochissimi problemi all’hypervisor, che riesce a fare il boot e lavorare lo stesso stesso, ne crea molti a chi deve poi gestire il server:

  • Se viene passato ad una VM il controller che ha collegati mouse e tastiera non sarà più possibile fare il logon dalla console
  • Se viene passato il controller che ha collegato il device di boot non sarà più possibile installare i VMware Tools da menu perché le immagini sono sul supporto USB e non vengono precaricate in RAM come il resto del sistema
  • Se viene passato il controller che ha collegato il device di boot VMware non salverà più alcuna modifica alla configurazione perché durante lo spegnimento non sarà in grado di scrivere sul dispositivo perché non disponibile

Nella malaugarata ipotesi in cui venga abilitato il DirectIO del controller di boot non è purtroppo facile tornare in una situazione completamente funzionante. Spostare la chiavetta su un altra USB non mappata può essere la soluzione più veloce, se ci sono però altri controller disponibili. In caso contrario ci sono solo due soluzioni: reinstallare completamente ESXi o montare la chiavetta su un sistema Linux ed editare il file /etc/vmware/esx.conf marcando gli opportuni device come “vmkernel”.

La KB VMware originale che spiega il problema è la 2068645.