He hecho la solución de VM Linux como la tuya durante años en múltiples plataformas. Pero diferente, y dependiendo del caso de uso específico, mucho mejor. (También he probado tu método. Demasiados problemas, sobre todo con el passthrough USB).
Esto es lo que hago, a grandes rasgos, usando VirtualBox (no es una guía paso a paso, pero debería ser suficiente para ponerte en marcha):
- No adjunto el volumen externo a través de la intercepción USB; primero creo un VMDK sin procesar de la unidad externa. Esto requiere un poco de magia script: Tienes que 1) Asegurarte de que la VM está apagada. 2) Eliminar el archivo de metadatos VMDK. 3) Desconectar el controlador de almacenamiento virtual dedicado a la unidad USB. 4) Crear un nuevo archivo VMDK sin procesar para la unidad USB [esta parte es un reto ya que la ubicación física cambia; yo uso un parámetro script para pasarlo al script]. 5) Crear un nuevo controlador de almacenamiento virtual para la VM. 6) Adjunte el VMDK sin procesar al nuevo controlador de almacenamiento. 7) Inicie la VM. La desventaja de este enfoque, por supuesto, es que la unidad USB y la VM están vinculadas durante toda la sesión de la VM. Si desconectas la unidad USB mientras la VM se está ejecutando, no volverá a ser válida (hasta que apagues la VM y ejecutes de nuevo el script). Pero los beneficios son enormes: A) Funciona sin problemas, a diferencia de la interceptación de USB con errores. Y B) El rendimiento es casi nativo [ya que el host está manejando la E/S del dispositivo de bajo nivel], lo que no se puede conseguir con la interceptación USB.
- He configurado la máquina virtual con dos adaptadores de red: 1) NAT con DHCP para el acceso regular a Internet desde la VM, y 2) sólo para el host con IP estática para el acceso del host a la VM. También puedes tener un solo adaptador puenteado, pero he encontrado que este enfoque es más ideal, ya que el acceso a Internet de la VM no está atado a ningún adaptador.
- He configurado la VM para compartir carpetas a través de SMB. En mi caso, se trata de carpetas montadas en encfs.
- Luego monto carpetas en el host, mapeadas vía SMB al huésped.
El rendimiento es bastante decente. SMB sobre gigabit ethernet entre hardware real tiene un máximo teórico de algo así como 120 MB/s (hay un número máximo específico pero es lo suficientemente cercano para esta discusión). Es probable que no se llegue a esa cifra en el tráfico SMB de host a vm, incluso utilizando el adaptador virtio sin límite de ancho de banda. En mi hardware más rápido, he visto en el mejor de los casos alrededor de 70 MB/s sostenidos. Pero mi hardware no es súper rápido, puede que te vaya mejor. (Aunque el USB y el disco giratorio de tu solución serán los factores limitantes).
Yo no me molestaría con sshfs. La sobrecarga es severa y el rendimiento terrible. El único beneficio de sshfs es cuando se monta en una red no segura. Host-to-vm existe completamente dentro de su propia computadora y por lo tanto es tan seguro como se puede, usted no necesita el cifrado, y el protocolo de red más ligero que puede obtener es ideal. (SMB no es exactamente ligero, pero él y prácticamente todos los hosts soportan todas las acciones de archivos remotos que puedas necesitar).
La solución que he esbozado parece compleja, y lo es. Pero si se documenta el proceso con éxito, es trivial la segunda vez. Tengo todo esto programado tanto en el host como en la VM, por lo que es casi automático para cada sesión, y fácilmente configurable para nuevos hosts y/o VMs. Y es una solución muy agradable y sin problemas para el uso diario.
Espero que esto ayude.