web-dev-qa-db-fra.com

Partage de fichiers entre Ubuntu VM et Windows 7

Ubuntu 12.04 s’exécute en tant qu’invité dans une session virtualisée de VMware Workstation 9 sur un hôte Windows 7. La machine Windows partage un dossier avec la machine Ubuntu via CIFS et la machine Ubuntu monte automatiquement le dossier partagé au démarrage grâce à cette ligne dans le fichier /etc/fstab:

//<remotehost>/<sharename> <localsharepath> cifs soft,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

Le partage de fichiers via le montage fonctionne correctement jusqu'à ce qu'il soit nécessaire de reprendre la machine virtuelle Ubuntu après sa pause ou de la restaurer à partir d'un instantané. Cela se produit généralement après le redémarrage de l'ordinateur hôte Windows ou après un arrêt nocturne.

Une fois Ubuntu repris, le dossier contenant le montage du dossier partagé ne répertorie aucun élément. La fenêtre de Nautilus reste pendant longtemps complètement vide avec le message "Chargement ..." dans son coin inférieur droit, malgré le fait qu'il y a beaucoup d'autres dossiers et fichiers dans ce dossier à afficher.

Redémarrer la machine Ubuntu aide, mais ce n’est pas pratique: Ubuntu met un temps fou à s’éteindre, il se bloque sur l’un de ces derniers écrans de ligne de commande attendant désespérément quelque chose (lorsque le montage est accessible, il n’ya pas de tel problème). Pour l'instant, la seule option consiste à éteindre brutalement Ubuntu, puis à le rallumer afin de pouvoir accéder au support, ce qui, bien sûr, n'est pas pratique non plus.

Je suppose que lorsque certains paramètres de communication CIFS/Samba sont modifiés (après le redémarrage de Windows), l'image restaurée de la machine virtuelle Ubuntu ne parvient pas à se rattraper.

Même avec les outils VMware installés sur la machine Ubuntu, la fonctionnalité de dossier partagé de VMware, qui pourrait servir d'alternative, ne fonctionne pas pour Ubuntu 12 (et de nombreuses autres distributions Linux). Mais même si c'était le cas, le partage CIFS/Samba serait toujours requis pour le partage de fichiers avec d'autres machines virtuelles.

4
Desmond Hume

1. umount -f

Ce n'est pas une solution ni une solution de contournement, mais une procédure (ennuyeuse).

Après la reprise de VM, n'essayez pas de visualiser le lecteur de partage avec Nautilus ou tout autre programme. Ne faites pas ls à cela. Tout type d'accès déclenchera un délai d'attente de 5 minutes et rendra le partage occupé. Il suffit de faire le umount -f avant tout.

    umount -f <localsharepath>

- f Force le démontage (dans le cas d'un serveur inaccessible).

Tant que le partage n'est pas occupé, cela sera démonté immédiatement sans déclencher le délai d'attente 5min cifs.

Ce n'est certainement pas idéal, mais cela ne nécessite pas de redémarrage et le partage peut être monté à nouveau tout de suite.

2. Changez smbfs en cifs avec defaults

//<remotehost>/<sharename> <localsharepath> cifs defaults,uid=1000,username=<remoteusername>,password=<remotepassword> 0 0

Il est officiel que smbfs ne soit plus mainten

smbfs n'a pas été maintenu ces dernières années. Au lieu de cela, le développement s'est concentré sur une autre implémentation du protocole CIFS dans le noyau. Voir le CIFS VFS pour plus d'informations.

Base sur le commentaire de ce blog (impossible de trouver une référence plus fiable)

vendredi 9 mai 2008: Une autre bonne chose à propos de CIFS est qu’il devrait survivre à une panne de réseau ou même à un redémarrage du système pour lequel vous montez un partage.

3. Désactivez le verrouillage opportuniste et la mise en cache des recherches (aucun effet sur la réduction du délai de connexion de 5 minutes)

echo '0' > /proc/fs/cifs/OplockEnabled
echo '0' > /proc/fs/cifs/LookupCacheEnabled

4. Vérifier le fichier ouvert (base non applicable sur le commentaire)

Après Ubuntu VM resume, vérifiez si un utilisateur/processus est en utilisant un fichier/répertoire dans le dossier partagé

lsof | grep '<localsharepath>'

Si un utilisateur/processus utilise des fichiers/répertoire dans <localsharepath>, vous obtiendrez device busy (quelle que soit la méthode de montage, locale ou distante).

2
John Siu

Je recommande d'utiliser autofs au lieu d'une entrée statique fstab. Voir: https://help.ubuntu.com/community/Autofs

2
tlo

Si vous partagez fréquemment des fichiers entre l'hôte et l'invité, utilisez FTP ou SFTP, ou même un logiciel de contrôle de révision tel que Git. Ils sont plus stables et utiles par rapport à ces choses-mont.

Sinon, installez VMTools sur l'invité Ubuntu. Ensuite, vous pouvez faire glisser et déposer des fichiers entre l'hôte et l'invité.

0
caiguanhao