Utilizzare virt-manager per condividere file tra host Linux e guest Windows?


26

È possibile utilizzare l'opzione hardware virtuale "Filesystem Passthrough" all'interno di virt-manager per condividere una cartella sul mio host Linux con il mio guest Windows? Ho trovato alcune esercitazioni su come eseguire questa operazione con un guest Linux, ma quando provo questo con il mio guest Windows ricevo il seguente messaggio di errore quando provo ad avviare la VM:

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

Ho provato a procurarmi un po 'di documentazione, ma tutto quello che ho potuto trovare era la pagina ufficiale che collega a una FAQ e "alcuni screenshot" .

Risposte:


16

Non credo che ciò sia possibile utilizzando gli ospiti Windows. Di solito installo un server Samba sull'host KVM di Linux e poi condivido una cartella usando quella per i miei ospiti KVM.

Passthrough del filesystem

La documentazione sulla condivisione della directory di un host KVM con i guest KVM (Linux) è disponibile qui sul sito Web di virt-manager. La pagina è intitolata: Esempio di condivisione dei file host con il Guest .

Configurare Samba

Il sito web linux-kvm contiene anche le istruzioni per configurare Samba. Tale documentazione è disponibile qui, intitolata: Suggerimento: come è possibile condividere file sul proprio host Linux con un guest Windows usando Samba .


pollice in alto per la parte "impostazione samba". È l'approccio più sicuro
pqnet

@pqnet: potresti qualificarti come e perché è più sicuro?
0xC0000022L

4
@ 0xC0000022L perché non dipende dal fatto che il virtualizzatore sia in grado di ingannare efficacemente il sistema operativo guest, che potrebbe interrompersi se il sistema operativo cambia. Samba è un protocollo di rete, quindi il sistema operativo guest ha meno aspettative su ciò che può e non può farci.
pqnet,

6

I file manager predefiniti sia dell'ambiente desktop Gnome che KDE possono accedere facilmente alle risorse condivise di Windows usando il protocollo SMB.
Non è necessario installare un server samba sul computer host Linux perché il sistema operativo Windows è già dotato di protocolli di comunicazione samba integrati.

Supponiamo che il tuo sistema operativo guest sia " Windows XP ", ad esempio, scegli la cartella che desideri condividere o semplicemente creane una a tale scopo, ad esempio "sharehare" e fai clic destro su di essa -> " proprietà " -> scheda " condivisione " -> seleziona: " Condividi questa cartella sulla rete " e " Consenti all'utente della rete di modificare i miei file ".

A questo punto, assicurarsi che il firewall di Windows dia accesso a risorse condivise di file e stampanti. Vai a " Menu Start " -> " Impostazioni " -> " Pannello di controllo " -> " Windows Firewall " -> Scheda " Eccezioni " -> seleziona: -> " Condivisione file e stampanti ".

Assicurarsi che la macchina host Linux sia visibile dalla VM guest di Windows attraverso la rete. Quindi, dal tipo di riga di comando di Windows: " ping 10.0.0.12 " dove in questo caso (come esempio) "10.0.0.12" è l'indirizzo IP dell'host; devi cambiarlo per conto tuo. Se non si dispone delle risposte dell'eco, è necessario risolvere il problema.
E fare la stessa cosa dalla riga di comando di Linux: " ping -c3 192.168.122.216 ", dove questi numeri (come esempio) appartengono all'indirizzo virt-IP assegnato alla VM guest; devi cambiarlo con il tuo.

Dal computer host Linux aprire " Nautilus " e andare su " File " -> " Connetti al server " -> Nella casella " Indirizzo server " digitare: " smb / 192.168.122.216 " -> " Connetti ".
La finestra di Nautilus si aprirà con le risorse navigabili del server Samba integrato di Windows. Sarai in grado di vedere e accedere al contenuto della cartella di Windows " sharehare ". È tutto!


2

Credo che @slm abbia fornito la migliore risposta. TUTTAVIA, esiste un altro caso d'uso. Questa alternativa è un po 'un trucco, però.

Guida approssimativa. Non considerare questi comandi definitivi:

  1. creare un file immagine (floppy ms-dos o CD ISO-9660)
  2. formattare l'immagine con un filesystem, ad esempio mkfs.msdos
  3. copiare e manipolare i file sull'immagine secondo necessità, ad esempio con mcopy, et al
  4. montare l'immagine sul cd-rom della VM ospite o sull'unità floppy

Non è l'ideale, ma può funzionare se la VM guest non consente connessioni di protocollo di rete tra dom0 e Guest (ad esempio durante una sessione VPN chiusa).

Maggiori informazioni qui:

/programming//q/11202706/3407600


1

È possibile una condivisione di sola lettura (il guest Windows ha R / W e l'host Linux può solo leggere), dal momento che l'host Linux può montare NTFS sul dispositivo di loopback, supponendo che tu usi uno storage di tipo 'raw' per il guest Windows:

Supponiamo di avere Win.img come immagine raw, che viene emulato come disco.

  • Passaggio 1: trova l'offset del tuo file system (poiché è un disco) usando 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

Ora calcola l'offset = 63 x 512 = 32256

  • Passaggio 2: montalo
mount Win.img /mntpoint -o ro,loop,offset=32256

ATTENZIONE

Puoi montarlo RW, e quindi Linux può scrivergli, ma il tuo file system sarà corrotto! Perché sia ​​Linux che Windows accedono al file system ALLO STESSO TEMPO! Possono allocare gli stessi blocchi liberi per scrivere i file che vogliono scrivere!

La lettura di Linux non è stabile, in rari casi

Con questo metodo il file system è sicuro e per lo più OK per avere una lettura stabile. Tuttavia, come ho detto, accedono contemporaneamente al file system, quindi quando Windows prova a scrivere qualcosa, Linux potrebbe non essere informato e quindi leggere qualcosa di corrotto. Tuttavia, se lo usi attentamente, la lettura dovrebbe essere molto stabile.


3
Quanto è affidabile questo? I dati possono essere nella cache. Le scritture non saranno atomiche rispetto alle letture su altri sistemi.
ctrl-alt-delor


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.