¿Utiliza virt-manager para compartir archivos entre el host de Linux y el invitado de Windows?


26

¿Es posible usar la opción de hardware virtual "Sistema de archivos" dentro de virt-manager para compartir una carpeta en mi host Linux con mi invitado Windows? Encontré algunos tutoriales sobre cómo hacer esto con un invitado de Linux, pero cuando lo intento con mi invitado de Windows recibo el siguiente mensaje de error cuando intento iniciar 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

Traté de obtener un poco de documentación, pero todo lo que pude encontrar fue la página oficial que enlaza con un FAQ y "algunas capturas de pantalla" .

Respuestas:


16

No creo que esto sea posible con invitados de Windows. Normalmente configuro un servidor Samba en el host KVM de Linux y luego comparto una carpeta con mis invitados KVM.

Paso del sistema de archivos

La documentación sobre cómo compartir el directorio de un host KVM con los invitados KVM (Linux) está disponible aquí en el sitio web virt-manager. La página se titula: Ejemplo de compartir archivos de host con el invitado .

Configurando Samba

El sitio web linux-kvm también contiene instrucciones para configurar Samba. Esa documentación está disponible aquí, titulada: Consejo: Cómo puede compartir archivos en su Host Linux con un Invitado de Windows usando Samba .


aprobado para la parte de "configuración de samba". Es el enfoque más seguro
pqnet

@pqnet: ¿podría calificar cómo y por qué es más seguro?
0xC0000022L

44
@ 0xC0000022L porque no depende de que el virtualizador pueda engañar eficazmente al sistema operativo invitado, que puede romperse si el sistema operativo cambia. Samba es un protocolo de red, por lo tanto, el sistema operativo invitado tiene menos expectativas sobre lo que puede y no puede hacer.
pqnet

6

Los administradores de archivos predeterminados del entorno de escritorio Gnome y KDE pueden acceder fácilmente a los recursos compartidos de Windows utilizando el protocolo SMB.
No necesita instalar un servidor samba en la máquina host de Linux porque el sistema operativo Windows ya viene con protocolos de comunicación samba incorporados.

Digamos que su sistema operativo invitado es " Windows XP ", por ejemplo, elija la carpeta que desea compartir o simplemente cree una para ese propósito, por ejemplo, "hostshare" y haga clic derecho en ella -> " Propiedades " -> pestaña " Compartir " -> seleccione: " Compartir esta carpeta en la red " y " Permitir que el usuario de la red cambie mis archivos ".

En este punto, asegúrese de que el firewall de Windows dé acceso a los archivos compartidos y a los recursos de la impresora. Vaya a " menú de inicio " -> " configuración " -> " Panel de control " -> " firewall de Windows " -> pestaña " Excepciones " -> seleccione: -> " Compartir archivos e impresoras ".

Asegúrese de que la máquina host de Linux se pueda ver desde la máquina virtual invitada de Windows a través de la red. Entonces, desde la línea de comando de Windows, escriba: " ping 10.0.0.12 " donde en este caso (como ejemplo) "10.0.0.12" es la dirección IP del host; tienes que cambiarlo a la tuya. Si no tiene las respuestas de echo, tendrá que solucionarlo.
Y haga lo mismo desde la línea de comandos de Linux: " ping -c3 192.168.122.216 ", donde estos números (como ejemplo) pertenecen a la dirección virt-IP asignada a la máquina virtual invitada; debes cambiarlo por el tuyo.

Desde la máquina host de Linux, abra " Nautilus " y vaya a " Archivo " -> " Conectar al servidor " -> En " Dirección del servidor " escriba el tipo: " smb / 192.168.122.216 " -> " Conectar ".
La ventana de Nautilus se abrirá con los recursos navegables de su servidor Samba incorporado de Windows. Podrá ver y acceder al contenido de la carpeta de Windows " hostshare ". ¡Eso es todo!


2

Creo que @slm ha proporcionado la mejor respuesta. SIN EMBARGO, hay otro caso de uso. Sin embargo, esta alternativa es un poco hack.

Guía aproximada. No considere estos comandos definitivos:

  1. crear un archivo de imagen (disquete de ms-dos o CD ISO-9660)
  2. formatee la imagen con un sistema de archivos, por ejemplo, mkfs.msdos
  3. copie y manipule archivos en la imagen según sea necesario, como con mcopy, et al
  4. montar la imagen en el cd-rom o VM de la máquina virtual

No es lo ideal, pero puede funcionar si su VM invitada no permite conexiones de protocolo de red entre dom0 e Invitado (como durante una sesión VPN cerrada).

Más información aquí:

/programming//q/11202706/3407600


1

Es posible un recurso compartido de solo lectura (el invitado de Windows tiene R / W, y el host de Linux solo puede leer), ya que el host de Linux puede montar NTFS en un dispositivo de bucle invertido, supongamos que usa almacenamiento de tipo 'sin procesar' para el invitado de Windows:

Suponga que tiene Win.img como imagen en bruto, se emula como un disco.

  • Paso 1: encuentre el desplazamiento de su sistema de archivos (ya que es 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

Ahora, calcule el desplazamiento = 63 x 512 = 32256

  • Paso 2: móntalo
mount Win.img /mntpoint -o ro,loop,offset=32256

PRECAUCIÓN

Puede montarlo en RW y, por lo tanto, Linux puede escribir en él, ¡ pero su sistema de archivos estará dañado! ¡Porque tanto su Linux como Windows están accediendo al sistema de archivos AL MISMO TIEMPO! ¡Pueden asignar los mismos bloques libres para escribir los archivos que quieren escribir!

La lectura de Linux no es estable, en casos raros

Con este método, el sistema de archivos es seguro y, en general, está bien tener una lectura estable. Sin embargo, como dije, acceden al sistema de archivos al mismo tiempo y, por lo tanto, cuando Windows intenta escribir algo, Linux puede no ser informado y, por lo tanto, leer algo dañado. Sin embargo, si lo usa con cuidado, la lectura debe ser muy estable.


3
¿Qué tan confiable es esto? Los datos pueden estar en cachés. Las escrituras no serán atómicas con respecto a las lecturas en otro sistema.
ctrl-alt-delor


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.