Ho fatto la soluzione VM Linux come la tua da anni su più piattaforme. Ma diverso, e in base al caso d'uso specifico, molto meglio. (Ho provato anche il tuo metodo. Troppi problemi, in particolare con passthrough USB.)
Ecco cosa faccio, grosso modo, usando VirtualBox (non una guida passo passo ma dovrebbe essere sufficiente per farti andare avanti):
- Non collego il volume esterno tramite intercetta USB; Creo prima un VMDK grezzo dell'unità esterna. Ciò richiede un po 'di magia di script: Devi 1) Assicurati che la VM sia spenta. 2) Elimina il file di metadati VMDK. 3) Scollegare il controller di archiviazione virtuale dedicato all'unità USB. 4) Creare un nuovo file VMDK grezzo per l'unità USB [questa parte è difficile dal momento che la posizione fisica cambia; Uso un parametro di script per passarlo allo script]. 5) Creare un nuovo controller di archiviazione virtuale per la VM. 6) Collegare il VMDK grezzo al nuovo controller di archiviazione. 7) Avvia la VM. Lo svantaggio di questo approccio, naturalmente, è che l'unità USB e la VM sono collegate per l'intera sessione della VM. Se si scollega l'unità USB mentre la VM è in esecuzione, non sarà più valida (fino a quando non si spegne la VM e si esegue nuovamente lo script). Ma i benefici sono enormi: A) Funziona perfettamente, a differenza delle intercettazioni USB buggy. E B) Le prestazioni sono near-native [poiché l'host gestisce l'I / O del dispositivo di basso livello], che non è possibile ottenere con l'intercettazione USB.
- Ho impostato la VM con due schede di rete: 1) NAT con DHCP per l'accesso a Internet regolare dalla VM e 2) Solo host con IP statico per l'accesso da host a VM. Potresti anche avere un solo adattatore a ponte, ma ho trovato che questo approccio è più ideale, poiché l'accesso a Internet VM non è legato a nessun adattatore.
- Ho impostato la VM per condividere le cartelle tramite SMB. Nel mio caso, queste sono cartelle montate su encfs.
- Quindi monto le cartelle sull'host, mappato via SMB al guest.
La performance è abbastanza decente. SMB su gigabit ethernet tra hardware reale ha un massimo teorico di qualcosa come 120 MB / s (c'è un numero specifico massimo ma è abbastanza vicino per questa discussione). Probabilmente non otterrai così tanto traffico SMB da host a vm, nemmeno usando la virtio adapter senza limiti di larghezza di banda. Sul mio hardware più veloce, ho visto al massimo circa 70 MB / s sostenuti. Ma il mio hardware non è super veloce, potresti fare di meglio. (Anche se l'USB e il disco rotante nella soluzione saranno i fattori limitanti.)
Non mi preoccuperei di sshfs. Il sovraccarico è grave e il rendimento è terribile. L'unico vantaggio di sshfs è il montaggio su una rete non protetta. Host-to-vm esiste completamente all'interno del tuo computer ed è quindi sicuro come si ottiene, non hai bisogno di crittografia e il protocollo di rete più leggero che puoi ottenere è l'ideale. (SMB non è esattamente leggero ma praticamente tutti gli host supportano tutte le azioni dei file remoti di cui potresti aver bisogno.)
La soluzione che ho delineato sembra complessa - e lo è. Ma se si documenta il processo di successo, è banalmente facile la seconda volta. Ho tutto questo script sia nell'host che nella VM, quindi è quasi automatico per ogni sessione e facilmente configurato per nuovi host e / o VM. Ed è una soluzione molto bella e perfetta per l'uso quotidiano.
Spero che questo aiuti.