Compartir carpetes entre el teu sistema i una màquina virtual: com intercanviar arxius fàcilment
Un dels passos que més frustració genera quan es comença a treballar amb màquines virtuals és com passar arxius entre el sistema amfitrió i el convidat. Instal·lar un sistema operatiu en una VM és relativament directe, però tard o d’hora sorgeix la necessitat de copiar un script, un paquet, un directori de configuració o simplement un arxiu descarregat al host.
Hi ha diversos mètodes per resoldre-ho. Alguns depenen de característiques específiques del programari de virtualització, mentre que d’altres són més universals. El que convé és conèixer quines opcions ofereix cada plataforma, quines funcionen millor en escenaris reals i quins poden provocar problemes a mig termini.
Aquest article se centra en tres entorns habituals: VirtualBox, GNOME Boxes (basat en libvirt/virt-manager però amb una interfície simplificada) i virt-manager (KVM).
Dos enfocaments generals per compartir arxius
Abans d’ entrar a cada plataforma convé distingir dues grans formes d’ intercanviar dades entre amfitrió i convidat:
- Carpetes compartides gestionades per l’ hipervisor
- Es configuren en la interfície de VirtualBox, virt-manager o GNOME Boxes.
- Requereixen instal·lar “guest additions” o “qemu-guest-agent” a la màquina virtual.
- Permeten accés directe a directoris de la VM.
- Avantatge: integració transparent, ràpid per a casos simples.
- Inconvenient: compatibilitat desigual segons el sistema host; es pot trencar després d’actualitzacions del kernel.
- Mètodes de xarxa (NFS, Samba, SSHFS, scp/rsync)
- La VM accedeix al host com si fos un altre equip de la xarxa.
- No depenen d’eines de l’hipervisor.
- Més estables i controlables a llarg termini.
- Inconvenient: requereixen configurar la xarxa entre el host i VM.
A la pràctica, l’ideal és conèixer tots dos. Les carpetes compartides de VirtualBox són còmodes per a un ús ràpid, però en entorns de treball a llarg termini és més fiable muntar un recurs de xarxa.
VirtualBox: Guest Additions i carpetes compartides
VirtualBox ofereix un sistema propi de carpetes compartides que sol ser el primer que la gent prova.
Passes bàsiques
- Instal·lar Guest Additions dins de la VM.
- A Linux:
sudo apt install build-essential dkms linux-headers-$(uname -r)
sudo mount /dev/cdrom /mnt
sudo /mnt/VBoxLinuxAdditions.run
- A Windows: muntar el CD des del menú i executar l’instal·lador.
- Definir la carpeta compartida en la configuració de la VM:
- Configuració → Carpetes compartides → Afegir-ne de nova.
- Triar carpeta del host, activar “Automuntar” i opcionalment “Accés complet”.
- Reiniciar la VM. A Linux sol aparèixer a /media/sf_<nom>. A Windows es munta com una unitat de xarxa.
Detalls importants
- L’usuari convidat ha de pertànyer al grup vboxsf a Linux.
sudo usermod -aG vboxsf $USER
Després reiniciar sessió.
- Les Guest Additions poden deixar de funcionar després d’actualitzar el kernel. En aquests casos, reinstal·lar. Si es fan servir molt les carpetes compartides, convé tenir DKMS instal·lat per recompilar automàticament.
- En servidors Linux sense entorn gràfic, de vegades les Guest Additions no són necessàries si només es vol redirecció de ports o ús de xarxa. Però per a carpetes compartides sí que són obligatòries.
Alternativa estable: fer servir la xarxa
Per evitar dependre de Guest Additions, molts administradors prefereixen muntar un recurs NFS o Samba des del host. Amb NAT + port forwarding no sempre és còmode, però amb un adaptador en mode host-only s’obté una xarxa directa entre host i convidat.
Exemple amb Samba (host Linux, VM Linux o Windows):
- Instalar en host:
sudo apt install samba
- Editar /etc/samba/smb.conf i afegir:
[share]
path = /home/usuari/compartida
read only = no
browsable = yes
guest ok = yes
- Reiniciar servei:
sudo systemctl restart smbd
- Des de la VM: accedir a \\10.0.2.2\share a Windows o muntar amb smbclient/cifs a Linux.
D’aquesta forma s’evita reinstal·lar Guest Additions després de cada actualització del kernel.
GNOME Boxes: intercanvi simplificat però limitat
GNOME Boxes busca eliminar configuracions complicades, però això té un preu: menys opcions explícites de carpetes compartides.
Boxes fa servir SPICE com a canal de comunicació i permet dues formes d’ intercanvi:
- Arrossegar arxius
- Des de l’host a la VM.
- Funciona millor amb VM Linux modernes. Amb VM Windows pot ser erràtic.
- Només serveix per a arxius individuals, no carpetes senceres.
- Carpeta compartida automàtica a VM Linux
- Si s’instal·la spice-vdagent a la VM, Boxes crea un punt de muntatge a ~/Compartit o similar.
- No sempre es documenta bé, però sol aparèixer a l’explorador d’arxius.
Limitacions i solució pràctica
- Si l’arrossegar arxius falla, o si es necessita compartir directoris complets, el més pràctic és crear una xarxa interna entre host i VM i fer servir Samba o SSH com en el cas de VirtualBox.
- Boxes no té interfície per configurar xarxes avançades, però com està basat en libvirt, internament crea una xarxa NAT. Es pot accedir al host mitjançant la IP especial 10.0.2.2 en la majoria de configuracions. Això permet fer un recurs.
Exemple: des de la VM Linux accedir a un directori del host amb SSHFS:
sudo apt install sshfs
sshfs usuari@10.0.2.2:/home/usuari/compartida ~/host
Això munta el directori de l’host a la carpeta/host de la VM.
Virt-manager (KVM): carpetes compartides amb 9p i virtio-fs
Virt-manager permet configuracions més fines que GNOME Boxes. Hi ha dos sistemes habituals per compartir directoris: 9p (virtio-9p) i virtio-fs.
9p (Virtio-9p)
- Funciona en gairebé totes les distribucions, però el seu rendiment és limitat.
- Requereix editar la configuració de la VM en virt-manager.
Exemple:
- En virt-manager → Detalls de la VM → Hardware → Afegir Hardware → Filesystem.
- Tipus: mount.
- Source path: carpeta del host (ex. /home/usuari/compartida).
- Target path: hostshare.
A la VM Linux, muntar amb:
sudo mount -t 9p -o trans=virtio hostshare /mnt
Virtio-fs
- Substitueix 9p, amb millor rendiment i suport d’ atributs estesos.
- Requereix kernel recent (5.4+) i qemu amb virtio-fs habilitat.
Configuració:
- Igual que amb 9p, però seleccionant virtio-fs com a tipus de dispositiu.
- A la VM:
sudo mount -t virtiofs hostshare /mnt
Estabilitat i casos d’ ús
- Per a entorns de desenvolupament, virtio-fs és preferible.
- Per compartir arxius ocasionalment, 9p és suficient i més compatible.
- A VM Windows, el suport de virtio-fs no és complet; en aquests casos se sol recórrer a Samba.
Mètodes universals: quan l’ específic no és suficient
Tot i amb suport de Guest Additions, SPICE o virtio-fs, sovint el més estable és fer servir un mètode de xarxa. Dues opcions especialment pràctiques:
SSHFS
- Si el host té un servidor SSH, muntar directoris del host en el convidat és immediat.
- Exemple:
sshfs usuari@host:/ruta/del/host /mnt/host
- Recomanat per a entorns Linux on ja es fa servir SSH.
Rsync/Scp
- Còpia puntual d’ arxius sense muntar sistemes de fitxers.
- Exemple:
scp archivo.txt usuari@10.0.2.2:/home/usuari/
Samba / NFS
- Més apropiat quan diverses VMs necessiten accedir al mateix recurs.
- Samba és més universal (Windows i Linux).
- NFS sol rendir millor en entorns Linux purs.
Quin mètode triar segons el cas
- VirtualBox
- Per a un ús ràpid i no crític: carpetes compartides amb Guest Additions.
- Per a projectes més llargs: host-only + Samba o SSHFS.
- GNOME Boxes
- Per passar un arxiu puntual: arrossegar-lo.
- Per a alguna cosa més seriosa: muntar un recurs del host amb SSHFS o Samba.
- Virt-manager
- Si la VM és Linux: virtio-fs sempre que sigui possible.
- Si la VM és Windows o es vol una cosa estable entre diverses VMs: Samba.
Checklist pràctica
- A VirtualBox: instal·lar Guest Additions i afegir usuari a vboxsf.
- Per a carpetes compartides persistents: fer servir xarxa host-only + Samba.
- A GNOME Boxes: provar d’arrossegar; si falla, configurar SSHFS.
- En virt-manager: fer servir virtio-fs si el kernel el suporta; si no, 9p.
- Per a VM Windows en KVM: compartir via Samba des del host.
- Per a còpies puntuals en Linux: fer servir scp o rsync.
- Per a entorns multi-VM: preferir NFS o Samba abans que mecanismes propis de l’ hipervisor.
Conclusió
Conèixer aquestes opcions i aplicar la més adequada segons l’ entorn evita perdre temps en proves que no sempre funcionen com s’ espera. A VirtualBox, confiar cegament en Guest Additions pot acabar en problemes després d’una actualització; a GNOME Boxes, esperar que arrossegar pugui amb tot és poc realista; i en KVM, insistir en 9p quan ja es disposa de virtio-fs suposa renunciar a un rendiment notablement millor.
L’essencial és entendre que l’hipervisor dona facilitats, però els mètodes de xarxa continuen sent l’eina més fiable i universal quan es necessita una cosa més sòlida que un intercanvi puntual d’arxius.

