Utiliser virt-manager pour partager des fichiers entre l'hôte Linux et l'invité Windows?

26

Est-il possible d'utiliser l'option de matériel virtuel "Filesystem Passthrough" dans virt-manager pour partager un dossier sur mon hôte Linux avec mon invité Windows? J'ai trouvé des didacticiels sur la façon de procéder avec un invité Linux, mais lorsque j'essaie avec mon invité Windows, je reçois le message d'erreur suivant lorsque j'essaie de démarrer la machine virtuelle:

Error starting domain: Unable to read from monitor: Connection reset by peer

Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
    callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
    callback(*args, **kwargs)   File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
    self._backend.create()   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer

J'ai essayé de trouver de la documentation mais tout ce que j'ai pu trouver, c'est la page officielle reliant à une FAQ et "quelques captures d'écran" .

Blaker
la source

Réponses:

16

Je ne pense pas que cela soit possible en utilisant des invités Windows. J'installe généralement un serveur Samba sur l'hôte KVM Linux, puis partage un dossier à l'aide de celui-ci avec mes invités KVM.

Passthrough du système de fichiers

La documentation sur le partage d'un répertoire d'hôte KVM avec les invités KVM (Linux) est disponible ici sur le site Web virt-manager. La page est intitulée: Exemple de partage de fichiers hôte avec l'invité .

Configurer Samba

Le site Web linux-kvm contient également des instructions pour configurer Samba. Cette documentation est disponible ici, intitulée: Astuce: Comment partager des fichiers sur votre hôte Linux avec un invité Windows à l'aide de Samba .

slm
la source
bravo pour la partie "mise en place de la samba". C'est l'approche la plus sûre
pqnet
@pqnet: pourriez-vous préciser comment et pourquoi c'est plus sûr?
0xC0000022L du
4
@ 0xC0000022L car cela ne dépend pas du fait que le virtualiseur puisse tromper efficacement le système d'exploitation invité, ce qui peut se casser si le système d'exploitation change. Samba est un protocole réseau, donc le système d'exploitation invité a moins d'attentes sur ce qu'il peut et ne peut pas faire sur lui.
pqnet
6

Les gestionnaires de fichiers par défaut des environnements de bureau Gnome et KDE peuvent facilement accéder aux ressources partagées de Windows à l'aide du protocole SMB.
Vous n'avez pas besoin d'installer un serveur samba sur la machine hôte Linux car le système d'exploitation Windows est déjà livré avec des protocoles de communication samba intégrés.

Disons que votre système d'exploitation invité est " Windows XP " par exemple, choisissez le dossier que vous souhaitez partager ou créez-en un à cet effet, par exemple "hostshare" et faites un clic droit dessus -> " propriétés " -> onglet " partage " -> sélectionnez: " Partager ce dossier sur le réseau " et " Autoriser l'utilisateur du réseau à modifier mes fichiers ".

À ce stade, assurez-vous que le pare-feu de Windows donne accès aux fichiers partagés et aux ressources de l'imprimante. Allez dans " Menu Démarrer " -> " Paramètres " -> " Panneau de configuration " -> " Pare-feu Windows " -> Onglet " Exceptions " -> sélectionnez: -> " Partage de fichiers et d'imprimantes ".

Assurez-vous que la machine hôte Linux peut être vue à partir de la machine virtuelle invitée Windows via le réseau. Ainsi, à partir de la ligne de commande de Windows, tapez: " ping 10.0.0.12 " où dans ce cas (à titre d'exemple) "10.0.0.12" est l'adresse IP de l'hôte; vous devez le changer pour le vôtre. Si vous ne disposez pas des réponses d'écho, vous devrez résoudre ce problème.
Et faites la même chose à partir de la ligne de commande Linux: " ping -c3 192.168.122.216 ", où ces numéros (à titre d'exemple) appartiennent à l'adresse virt-IP attribuée à la machine virtuelle invitée; vous devez le changer pour le vôtre.

Depuis la machine hôte Linux, ouvrez " Nautilus " et allez dans " Fichier " -> " Se connecter au serveur " -> Dans la zone " Adresse du serveur ", tapez: " smb / 192.168.122.216 " -> " Se connecter ".
La fenêtre Nautilus s'ouvrira avec les ressources navigables de votre serveur Samba intégré à Windows. Vous serez en mesure de voir et d'accéder au contenu du dossier Windows " hostshare ". C'est tout!

Andy
la source
2

Je pense que @slm a fourni la meilleure réponse. TOUTEFOIS, il existe un autre cas d'utilisation. Cette alternative est un peu un hack, cependant.

Guide approximatif. Ne considérez pas ces commandes définitives:

  1. créer un fichier image (disquette ms-dos ou CD ISO-9660)
  2. formater l'image avec un système de fichiers, par exemple mkfs.msdos
  3. copier et manipuler des fichiers sur l'image selon les besoins, comme avec mcopy, et al
  4. monter l'image sur le CD-ROM ou le lecteur de disquette de la VM invitée

Ce n'est pas idéal, mais cela peut fonctionner si votre machine virtuelle invitée n'autorise pas les connexions de protocole réseau entre dom0 et invité (comme lors d'une session VPN fermée).

Plus d'infos ici:

/programming//q/11202706/3407600

0xSheepdog
la source
1

Un partage en lecture seule est possible (l'invité Windows a R / W et l'hôte Linux peut lire uniquement), car l'hôte Linux peut monter NTFS sur le périphérique de bouclage, supposons que vous utilisez un stockage de type «brut» pour l'invité Windows:

Supposons que vous ayez Win.img comme image brute, elle est émulée en tant que disque.

  • Étape 1: Trouvez l'offset de votre système de fichiers (puisqu'il s'agit d'un disque) à l'aide de fdisk:
$ fdisk -lu Win.img

Disk Win.img: 16.3 GB, 16252928000 bytes
255 heads, 63 sectors/track, 1975 cylinders, total 31744000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3a793a79

    Device Boot      Start         End      Blocks   Id  System
    Win.img   *          63    31712309    15856123+   7  HPFS/NTFS/exFAT

Maintenant, calculez le décalage = 63 x 512 = 32256

  • Étape 2: montez-le
mount Win.img /mntpoint -o ro,loop,offset=32256

MISE EN GARDE

Vous pouvez le monter RW, et donc Linux peut y écrire, mais votre système de fichiers sera corrompu! Parce que Linux et Windows accèdent au système de fichiers EN MÊME TEMPS! Ils peuvent allouer les mêmes blocs libres pour écrire les fichiers qu'ils veulent écrire!

La lecture Linux n'est pas stable, dans de rares cas

Avec cette méthode, le système de fichiers est sûr, et surtout OK pour avoir une lecture stable. Cependant, comme je l'ai dit, ils accèdent au système de fichiers en même temps, et donc lorsque Windows essaie d'écrire quelque chose, Linux peut ne pas être informé, et donc lire quelque chose de corrompu. Cependant, si vous l'utilisez avec précaution, la lecture doit être très stable.

Robin Hsu
la source
3
Est-ce fiable? Les données peuvent être dans des caches. Les écritures ne seront pas atomiques par rapport aux lectures sur un autre système.
ctrl-alt-delor
0

J'utilise Dokany + Win-SSHFS pour monter des dossiers distants sur ssh. Laissez-les jouer au rattrapage, et non l'inverse < sourire maléfique >

Arie Skliarouk
la source
0

La solution d'Andy a fonctionné pour moi, hôte Debian et invité Windows. Notez que j'ai les outils spice-guest installés avec un pilote réseau spécial de redhat.

De plus, j'ai dû supprimer la protection par mot de passe via smb Ici, sur ce lien, j'ai trouvé comment supprimer le mot de passe https://pureinfotech.com/setup-network-file-sharing-windows-10/

Thierry Vilmart
la source