GNU/Linux >> Linux Esercitazione >  >> Linux

Imposta una cartella condivisa tra host KVM e guest

Dopo aver creato una nuova macchina virtuale, potresti voler condividere file e cartelle tra l'host KVM e la macchina virtuale KVM. In questa breve guida, vedremo come configurare una cartella condivisa tra host KVM e macchina virtuale guest utilizzando Virt-manager in Linux.

Prima di configurare una cartella condivisa, assicurati di aver installato Virt-manager sul tuo host KVM.

  • Come gestire macchine virtuali KVM con Virt-Manager

Se hai già installato il gruppo di pacchetti di virtualizzazione KVM completo, non è necessario installare Virt-manager separatamente. Virt-manager fa parte del gruppo di pacchetti di virtualizzazione KVM. In caso contrario, potrebbe essere necessario installarlo come mostrato nel link sopra.

Crea una nuova macchina virtuale dall'interfaccia Virt-manager. È molto semplice e diretto! Non avviare ancora la VM. Dobbiamo creare una cartella condivisa nel nostro host KVM.

Crea cartelle condivise nell'host KVM

Crea una nuova cartella condivisa nel tuo sistema host KVM che desideri condividere con le macchine guest.

Ai fini di questa guida, ho creato una cartella condivisa denominata "KVM_Share " nel mio $HOME directory.

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

Quindi, imposta le autorizzazioni richieste per la cartella condivisa. Volevo modificare e modificare il contenuto di questa cartella condivisa dalle mie macchine virtuali guest, quindi ho concesso i permessi completi alla cartella condivisa.

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

Quindi imposta il tipo SELinux corretto per la cartella condivisa KVM:

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

Questo comando imposta il contesto del file predefinito per qualsiasi cosa sotto e inclusa la cartella condivisa, ad esempio /home/sk/KVM_Share nel nostro caso.

Dopo aver eseguito il comando precedente, aggiunge una riga a /etc/selinux/targeted/contexts/files/file_contexts.local file che rende la modifica persistente.

La riga aggiunta potrebbe assomigliare a questa:

$ 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

Quindi, esegui il comando seguente per dire a SELinux di ripristinare i contesti dei file su tutto ciò che si trova sotto la directory condivisa a ciò che abbiamo come predefinito (cioè cosa cambia il semanage).

$ sudo restorecon -vR /home/sk/KVM_Share

Se non si imposta il tipo SELinux corretto per la cartella condivisa KVM, si verificherà il seguente errore all'avvio della 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

Ora è il momento di configurare la cartella condivisa in Virt-manager.

Imposta una cartella condivisa tra host KVM e guest

Apri Virt-manager e assicurati che il sistema guest sia spento. Seleziona la macchina ospite e fai clic su Apri pulsante sulla barra dei menu per mostrare la console e i dettagli della macchina virtuale.

Nella finestra successiva, fai clic su "Mostra dettagli hardware virtuali" nella barra dei menu e fai clic su "Aggiungi hardware" pulsante nel riquadro di sinistra.

Fai clic sulla scheda "Filesystem" nel riquadro di sinistra e inserisci la posizione della cartella condivisa nel percorso di origine e inserisci il tag di montaggio nel percorso di destinazione. Qui, sto condividendo "~/KVM_Share" directory e il mio tag di montaggio è /hostshare . Puoi specificare il nome di mount_tag come desideri. Tieni presente che mount_tag non è un percorso. Il mount_tag è solo un nome usato per identificare la condivisione dell'host. Fai clic su Fine e applica per aggiornare le modifiche.

Un'ultima cosa da fare è selezionare la modalità di accesso corretta per accedere alla cartella condivisa.

Ci sono tre valori possibili. Sono passthrough , mapped e squash .

  • passthrough - Specifica che si accede all'origine (ovvero alla cartella condivisa) con le impostazioni di autorizzazione dell'utente che sono impostate dall'interno della macchina virtuale guest. ovvero i file vengono archiviati utilizzando le stesse credenziali create sul guest. Questa è la modalità di accesso predefinita se non ne viene specificata una.
  • mappato - Specifica che si accede all'origine con le impostazioni di autorizzazione dell'hypervisor. Se vuoi avere accesso in lettura e scrittura dalla macchina ospite, devi scegliere questa modalità.
  • zucca - Simile a 'passthrough', l'eccezione è il fallimento di operazioni privilegiate come chown vengono ignorati. Ciò rende utilizzabile una modalità simile al passthrough per le persone che eseguono l'hypervisor come non root.

Dopo aver selezionato la modalità di accesso preferita, fare clic sul pulsante Applica. Abbiamo ora configurato la cartella condivisa per l'host KVM e il sistema guest da Virt-manager.

Ora, accendi la macchina virtuale guest e crea un punto di montaggio nella tua macchina guest per montare la cartella condivisa del sistema host KVM:

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

Infine, monta la cartella condivisa nella macchina guest usando il comando:

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

La cartella condivisa ~/KVM_Share è montato su hostfiles directory nella tua macchina virtuale. D'ora in poi, puoi accedere ai contenuti della cartella condivisa dalla tua macchina virtuale guest. Puoi anche modificare ed eliminare il contenuto della cartella condivisa su entrambi i sistemi host e guest KVM.

Per montare automaticamente la cartella condivisa ogni volta all'avvio, aggiungi la seguente riga a /etc/fstab file nel tuo sistema ospite:

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

Spero che questo aiuti.


Linux
  1. Differenza tra firewall hardware condiviso e firewall hardware dedicato

  2. Windows:cartella condivisa tra Qemu Windows Guest e Linux Host?

  3. Differenza tra Qemu e KVM

  4. Utilizzo di Samba per condividere una cartella da un guest Linux con un host Windows in VirtualBox

  5. Guest e host non possono vedersi usando linux-kvm e macvtap

Cartella condivisa in Virtualbox (ubuntu e Windows 7)?

Come copiare file tra host e contenitore Docker

Come configurare le aggiunte e la rete degli ospiti di VirtualBox

Come installare KVM Linux e creare VM guest con esempi

Differenza tra oggetti condivisi (.so), librerie statiche (.a) e DLL (.so)?

differenza copia la cartella dei contenuti tra /. e /* in Linux