GNU/Linux >> Tutoriales Linux >  >> Linux

Configurar una carpeta compartida entre el host y el invitado de KVM

Después de crear una nueva máquina virtual, es posible que desee compartir archivos y carpetas entre el host KVM y la máquina virtual KVM. En esta breve guía, veremos cómo configurar una carpeta compartida entre el host KVM y la máquina virtual invitada usando Virt-manager en Linux.

Antes de configurar una carpeta compartida, asegúrese de haber instalado Virt-manager en su host KVM.

  • Cómo administrar máquinas virtuales KVM con Virt-Manager

Si ya instaló el grupo completo de paquetes de virtualización KVM, no necesita instalar Virt-manager por separado. Virt-manager es parte del grupo de paquetes de virtualización KVM. De lo contrario, es posible que deba instalarlo como se muestra en el enlace anterior.

Cree una nueva máquina virtual desde la interfaz de Virt-manager. ¡Es muy directo y fácil! No inicie la máquina virtual todavía. Necesitamos crear una carpeta compartida en nuestro host KVM.

Crear carpetas compartidas en el host KVM

Cree una nueva carpeta compartida en su sistema host KVM que desee compartir con las máquinas invitadas.

A los efectos de esta guía, creé una carpeta compartida denominada "KVM_Share " en mi $HOME directorio.

[[email protected] ~]$ mkdir ~/KVM_Share

A continuación, configure los permisos necesarios para la carpeta compartida. Quería editar y modificar el contenido de esta carpeta compartida desde mis máquinas virtuales invitadas, así que otorgué permisos completos a la carpeta compartida.

[[email protected] ~]$ chmod 777 ~/KVM_Share

A continuación, establezca el tipo de SELinux correcto para la carpeta compartida de KVM:

$ sudo semanage fcontext -a -t svirt_image_t "/home/sk/KVM_Share(/.*)?"

Este comando establece el contexto de archivo predeterminado para todo lo que se encuentre debajo de la carpeta compartida incluida, es decir, /home/sk/KVM_Share en nuestro caso.

Después de ejecutar el comando anterior, agrega una línea a /etc/selinux/targeted/contexts/files/file_contexts.local archivo que hace que el cambio sea persistente.

La línea adjunta puede verse así:

$ cat /etc/selinux/targeted/contexts/files/file_contexts.local
 This file is auto-generated by libsemanage
 Do not edit directly.
 /usr/lib/chromium-browser    system_u:object_r:bin_t:s0
 /usr/lib/chromium-browser/chromium-browser.sh    system_u:object_r:bin_t:s0
 /usr/lib/chrome-sandbox    system_u:object_r:chrome_sandbox_exec_t:s0
 /home/sk/KVM_Share(/.*)?    system_u:object_r:svirt_image_t:s0

A continuación, ejecute el siguiente comando para decirle a SELinux que restaure los contextos de archivo en todo lo que se encuentra debajo del directorio compartido a lo que tenemos como predeterminado (es decir, qué cambio de semana).

$ sudo restorecon -vR /home/sk/KVM_Share

Si no configura el tipo de SELinux correcto para la carpeta compartida de KVM, encontrará el siguiente error al iniciar la VM.

Error starting domain: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied
 Traceback (most recent call last):
   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 65, in cb_wrapper
     callback(asyncjob, *args, *kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 101, in tmpcb     callback(args, **kwargs)
   File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn
     ret = fn(self, *args, **kwargs)
   File "/usr/share/virt-manager/virtManager/object/domain.py", line 1329, in startup
     self._backend.create()
   File "/usr/lib64/python3.9/site-packages/libvirt.py", line 1353, in create
     raise libvirtError('virDomainCreate() failed')
 libvirt.libvirtError: internal error: qemu unexpectedly closed the monitor: 2021-05-06T09:30:21.239353Z qemu-system-x86_64: -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/hostshare,bus=pci.5,addr=0x0: cannot initialize fsdev 'fsdev-fs0': failed to open '/home/sk/KVM_Share': Permission denied

Ahora es el momento de configurar la carpeta compartida en Virt-manager.

Configure una carpeta compartida entre el host y el invitado de KVM

Abra Virt-manager y asegúrese de que el sistema invitado esté apagado. Seleccione la máquina invitada y haga clic en Abrir en la barra de menú para mostrar la consola de la máquina virtual y los detalles.

En la siguiente ventana, haga clic en "Mostrar detalles de hardware virtual" en la barra de menú y haga clic en "Agregar hardware" en el panel izquierdo.

Haga clic en la pestaña "Sistema de archivos" en el panel izquierdo e ingrese la ubicación de la carpeta compartida en la ruta de origen e ingrese la etiqueta de montaje en la ruta de destino. Aquí, estoy compartiendo "~/KVM_Share" directorio y mi etiqueta de montaje es /hostshare . Puede especificar el nombre de mount_tag como desee. Tenga en cuenta que mount_tag no es una ruta. mount_tag es solo un nombre que se usa para identificar el recurso compartido del host. Haga clic en Finalizar y Aplicar para actualizar los cambios.

Una última cosa que debe hacer es seleccionar el modo de acceso adecuado para acceder a la carpeta compartida.

Hay tres valores posibles. Son passthrough , mapped y squash .

  • transferencia - Especifica que se accede a la fuente (es decir, la carpeta compartida) con la configuración de permisos del usuario que se establece desde dentro de la máquina virtual invitada. es decir, los archivos se almacenan con las mismas credenciales que se crearon en el invitado. Este es el modo de acceso predeterminado si no se especifica uno.
  • mapeado - Especifica que se accede a la fuente con la configuración de permisos del hipervisor. Si desea tener acceso de lectura y escritura desde la máquina invitada, debe elegir este modo.
  • calabaza - Similar a 'passthrough', la excepción es la falla de operaciones privilegiadas como chown son ignorados. Esto hace que un modo de transferencia sea útil para las personas que ejecutan el hipervisor como no root.

Después de seleccionar su modo de acceso preferido, haga clic en el botón Aplicar. Ahora hemos configurado la carpeta compartida para el host KVM y el sistema invitado desde Virt-manager.

Ahora, encienda la máquina virtual invitada y cree un punto de montaje en su máquina invitada para montar la carpeta compartida del sistema host KVM:

[[email protected] ~]$ mkdir ~/hostfiles

Finalmente, monte la carpeta compartida en la máquina invitada usando el comando:

[[email protected] ~]$ sudo mount -t 9p -o trans=virtio /hostshare hostfiles/

La carpeta compartida ~/KVM_Share está montado en los hostfiles directorio en su máquina virtual. A partir de ahora, puede acceder al contenido de la carpeta compartida desde su máquina virtual invitada. También puede editar y eliminar el contenido de la carpeta compartida tanto en el host KVM como en los sistemas invitados.

Para montar automáticamente la carpeta compartida cada vez que se inicia, agregue la siguiente línea a /etc/fstab archivo en su sistema invitado:

/hostshare /hostfiles 9p trans=virtio,version=9p2000.L,rw 0 0

Espero que esto ayude.


Linux
  1. Cómo instalar y configurar Debian 8 Docker Host minimalista

  2. Diferencia entre el firewall de hardware compartido y el firewall de hardware dedicado

  3. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  4. Linux:¿compartir archivos entre el host de Linux y el invitado de Windows?

  5. Diferencia entre Qemu y KVM

¿Carpeta compartida en Virtualbox (ubuntu y Windows 7)?

Cómo copiar archivos entre el host y el contenedor Docker

Cómo configurar las adiciones y la red de invitados de VirtualBox

Cómo instalar Linux KVM y crear una VM invitada con ejemplos

Copiar y pegar entre el invitado y el host de Hyper-V

¿Cómo enviar/cargar un archivo desde el sistema operativo host al sistema operativo invitado en KVM? (sin compartir carpetas)