GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installa e configura KVM in Ubuntu 20.04 LTS

Questa guida passo passo spiega cos'è KVM, come installare e configurare KVM nel server Ubuntu 20.04 e come creare e gestire macchine guest KVM con il programma Virsh.

Cos'è KVM?

KVM , abbreviazione di K V basato su ernel irtuale M achine, è un modulo del kernel di FreeBSD e Linux che consente al kernel di agire come hypervisor. A partire dalla versione del kernel 2.6.20, KVM viene unito alla linea principale del kernel Linux.

Utilizzando KVM, puoi configurare facilmente un ambiente di virtualizzazione in una macchina Linux e ospitare un'ampia gamma di sistemi operativi guest tra cui Linux, Windows, BSD, Mac OS e molti altri.

In questa guida, vedremo come installare e configurare KVM nel server senza testa di Ubuntu 20.04. E vedremo anche come creare e gestire macchine guest KVM utilizzando l'utilità della riga di comando di Virsh.

Prerequisiti

Prima di installare KVM, assicurati innanzitutto che il processore del tuo sistema supporti la virtualizzazione hardware. Abbiamo documentato diversi modi per identificare se un sistema Linux supporta la virtualizzazione nella seguente guida.

  • Come scoprire se una CPU supporta la tecnologia di virtualizzazione (VT)

Se il tuo sistema supporta la virtualizzazione hardware, continua i seguenti passaggi.

1. Installa e configura KVM in Ubuntu 20.04 LTS

Ai fini di questa guida, utilizzerò i seguenti sistemi.

Server di virtualizzazione KVM:

  • OS – Server minimo Ubuntu 20.04 LTS (nessuna GUI)
  • Indirizzo IP :192.168.225.52/24

Cliente remoto:

  • OS – Ubuntu 20.04 GNOME Desktop

Innanzitutto, installiamo KVM nel server Ubuntu.

1.1. Installa KVM in Ubuntu 20.04 LTS

Installa Kvm e tutte le dipendenze necessarie per configurare un ambiente di virtualizzazione sul tuo server Ubuntu 20.04 LTS usando il comando:

$ sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system virtinst bridge-utils

Ecco,

  • qemu - Un emulatore di macchina generico e un virtualizzatore,
  • qemu-kvm - Metapacchetto QEMU per supporto KVM (ovvero QEMU Full virtualization su hardware x86),
  • client-libvirt - programmi per la libreria libvirt,
  • sistema-daemon-libvirt - File di configurazione del demone Libvirt,
  • virtuoso - programmi per creare e clonare macchine virtuali,
  • Utility bridge - utilità per la configurazione del bridge Ethernet Linux.

Una volta installato KVM, avvia il servizio libvertd (se non è già stato avviato):

$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd

Controlla lo stato del servizio libvirtd con il comando:

$ systemctl status libvirtd

Risultato di esempio:

● libvirtd.service - Virtualization daemon
     Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-07-04 08:13:41 UTC; 7min ago
TriggeredBy: ● libvirtd-ro.socket
             ● libvirtd-admin.socket
             ● libvirtd.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 4492 (libvirtd)
      Tasks: 19 (limit: 32768)
     Memory: 12.9M
     CGroup: /system.slice/libvirtd.service
             ├─4492 /usr/sbin/libvirtd
             ├─4641 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l>
             └─4642 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l>

Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: compile time options: IPv6 GNU-getopt DBus i18n>
Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: DHCP, IP range 192.168.122.2 -- 192.168.12>
Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: DHCP, sockets bound exclusively to interfa>
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: reading /etc/resolv.conf
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: using nameserver 127.0.0.53#53
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: read /etc/hosts - 7 addresses
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: read /var/lib/libvirt/dnsmasq/default.addnhosts>
Jul 04 08:13:42 ubuntuserver dnsmasq-dhcp[4641]: read /var/lib/libvirt/dnsmasq/default.host>
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: reading /etc/resolv.conf
Jul 04 08:13:42 ubuntuserver dnsmasq[4641]: using nameserver 127.0.0.53#53

Bene, il servizio libvertd è stato abilitato e avviato! Ora facciamo il resto della configurazione.

1.2. Configurazione della rete Bridge con KVM in Ubuntu

Una rete con bridge condivide la vera interfaccia di rete del computer host con altre VM per connettersi alla rete esterna. Pertanto ogni VM può collegarsi direttamente a qualsiasi indirizzo IPv4 o IPv6 disponibile, proprio come un computer fisico.

Per impostazione predefinita, KVM configura un bridge virtuale privato, in modo che tutte le VM possano comunicare tra loro, all'interno del computer host. Fornisce la propria sottorete e DHCP per configurare la rete dell'ospite e utilizza NAT per accedere alla rete host.

Dai un'occhiata all'indirizzo IP delle interfacce virtuali predefinite KVM usando il comando "ip":

$ ip a

Risultato di esempio:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.52/24 brd 192.168.225.255 scope global dynamic enp0s3
       valid_lft 39559sec preferred_lft 39559sec
    inet6 2409:4072:6c0f:431d:a00:27ff:fe8a:5294/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe8a:5294/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.60/24 brd 192.168.225.255 scope global dynamic enp0s8
       valid_lft 39559sec preferred_lft 39559sec
    inet6 2409:4072:6c0f:431d:a00:27ff:fe10:7cc1/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe10:7cc1/64 scope link 
       valid_lft forever preferred_lft forever
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.51/24 brd 192.168.225.255 scope global dynamic enp0s9
       valid_lft 39559sec preferred_lft 39559sec
    inet6 2409:4072:6c0f:431d:a00:27ff:fe5d:6128/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe5d:6128/64 scope link 
       valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:f1:98:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:f1:98:9e brd ff:ff:ff:ff:ff:ff

Indirizzo IP dell'interfaccia virtuale predefinita KVM

Come puoi vedere, la rete predefinita KVM virbr0 utilizza l'indirizzo IP 192.168.122.1/24. Tutte le macchine virtuali utilizzeranno un indirizzo IP compreso nell'intervallo IP 192.168.122.0/24 e il sistema operativo host sarà raggiungibile a 192.168.122.1. Dovresti essere in grado di accedere al sistema operativo host (a 192.168.122.1) dall'interno del sistema operativo guest e utilizzare scp per copiare i file avanti e indietro.

Va bene se accedi alle VM all'interno solo dall'host stesso. Tuttavia non possiamo accedere alle VM da altri sistemi remoti nella rete.

Perché usano intervalli IP diversi, ad esempio 192.168.225.0/24 nel mio caso. Per accedere alle VM da altri host remoti, dobbiamo configurare un bridge pubblico che gira sulla rete host e utilizza qualsiasi server DHCP esterno sulla rete host.

Per dirla in parole povere, faremo in modo che tutte le macchine virtuali utilizzino la stessa serie IP utilizzata dal sistema host.

Prima di configurare una rete pubblica con bridge, dobbiamo disabilitare Netfilter per motivi di prestazioni e sicurezza . Netfilter è attualmente abilitato sui bridge per impostazione predefinita.

Per disabilitare netfilter, crea un file chiamato /etc/sysctl.d/bridge.conf :

$ sudo vi /etc/sysctl.d/bridge.conf

Aggiungi le seguenti righe:

net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
net.bridge.bridge-nf-call-arptables=0

Salva e chiudi il file.

Quindi crea un altro file chiamato /etc/udev/rules.d/99-bridge.rules :

$ sudo vi /etc/udev/rules.d/99-bridge.rules

Aggiungi la seguente riga:

ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"

Questo imposterà i flag necessari per disabilitare netfilter sui bridge nel punto appropriato all'avvio del sistema. Salva e chiudi il file. Riavvia il sistema per rendere effettive queste modifiche.

Successivamente, dovremmo disabilitare la rete predefinita che KVM ha installato per se stesso.

Trova il nome delle interfacce di rete predefinite di KVM usando il comando "ip link":

$ ip link

Output di esempio:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:1f:a2:e7 brd ff:ff:ff:ff:ff:ff
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:1f:a2:e7 brd ff:ff:ff:ff:ff:ff

Visualizza le interfacce di rete predefinite di KVM

Come puoi vedere nell'output sopra, le voci "virbr0" e "virbr0-nic" sono le reti KVM.

Rimuoviamo la rete KVM predefinita con il comando:

$ virsh net-destroy default

Risultato di esempio:

Network default destroyed

Annulla la definizione della rete predefinita con il comando:

$ virsh net-undefine default

Risultato di esempio:

Network default has been undefined

rimuovere le interfacce di rete KVM predefinite

Se i comandi precedenti non funzionano per qualsiasi motivo, puoi utilizzare questi comandi per disabilitare e annullare la definizione della rete KVM predefinita:

$ sudo ip link delete virbr0 type bridge
$ sudo ip link delete virbr0-nic

Ora esegui di nuovo "ip link" per verificare se le interfacce virbr0 e virbr0-nic sono state effettivamente eliminate:

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff

Vedere? Le reti predefinite di KVM sono sparite.

Ora, impostiamo il bridge pubblico KVM da utilizzare durante la creazione di una nuova VM.

Nota:

Non utilizzare schede di interfaccia di rete wireless per i bridge. La maggior parte degli interlacciati wireless non supporta il bridging. Usa sempre le interfacce di rete cablate per una connettività senza interruzioni!

Per creare un bridge di rete nell'host, modifica /etc/netplan/00-installer-config.yaml file e aggiungi i dettagli del bridge.

Ecco il contenuto predefinito di 00-installer-config.yaml file nel mio server LTS Ubuntu 20.04.

$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp0s8:
      dhcp4: true
    enp0s9:
      dhcp4: true
  version: 2

Come vedi, ho tre interfacce di rete cablate, vale a dire enp0s3, enp0s8 ed enp0s9 nel mio server Ubuntu.

Prima di modificare questo file, esegui il backup del file /etc/netplan/00-installer-config.yaml esistente:

$ sudo cp /etc/netplan/00-installer-config.yaml{,.backup}

Quindi modifica il file di configurazione predefinito utilizzando il tuo editor preferito:

$ sudo vi /etc/netplan/00-installer-config.yaml

Aggiungi/modifica come di seguito:

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      dhcp4: false
      dhcp6: false
    enp0s8:
      dhcp4: false
      dhcp6: false
    enp0s9:
      dhcp4: false
      dhcp6: false
  bridges:
    br0:
      interfaces: [ enp0s3 ]
      addresses: [192.168.225.52/24]
      gateway4: 192.168.225.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no
  version: 2

crea un bridge di rete in Ubuntu

Qui, l'interfaccia di rete bridge "br0" è collegata all'interfaccia di rete dell'host "enp0s3". L'indirizzo IP di br0 è 192.168.225.52. Il gateway è 192.168.225.1. Uso i server DNS di Google (8.8.8.8 e 8.8.4.4) per collegarmi a Internet. Assicurati che il rientro dello spazio sia esattamente lo stesso di cui sopra. Se i rientri di riga non sono corretti, l'interfaccia di rete con bridge non si attiverà. Sostituisci i valori precedenti che corrispondono alla tua rete.

Dopo aver modificato il file di configurazione di rete, salvarlo e chiuderlo. Applica le modifiche eseguendo il comando seguente:

$ sudo netplan --debug  apply

Ora controlla se l'indirizzo IP è stato assegnato all'interfaccia bridge:

$ ip a

Risultato di esempio:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:10:7c:c1 brd ff:ff:ff:ff:ff:ff
    inet6 2409:4072:48b:ab02:a00:27ff:fe10:7cc1/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe10:7cc1/64 scope link 
       valid_lft forever preferred_lft forever
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:5d:61:28 brd ff:ff:ff:ff:ff:ff
    inet6 2409:4072:48b:ab02:a00:27ff:fe5d:6128/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe5d:6128/64 scope link 
       valid_lft forever preferred_lft forever
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:00:27:8a:52:94 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.52/24 brd 192.168.225.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe8a:5294/64 scope link 
       valid_lft forever preferred_lft foreve

controlla l'indirizzo IP della rete del bridge KVM

Come puoi vedere nell'output sopra, l'interfaccia di rete con bridge br0 è assegnato con l'indirizzo IP 192.168.225.52 e la voce enp0s3 ora ha la voce "master br0". Significa che enp0s3 appartiene al bridge.

Puoi anche utilizzare "brctl" comando per mostrare lo stato del bridge:

$ brctl show br0

Risultato di esempio:

bridge name    bridge id       STP enabled interfaces
br0     8000.0800278a5294   yes     enp0s3

Ora dovremmo configurare KVM per utilizzare questo bridge. Per farlo, crea un file XML chiamato host-bridge.xml :

$ vi host-bridge.xml

Aggiungi le seguenti righe:

<network>
  <name>host-bridge</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

Esegui i seguenti comandi per avviare il bridge appena creato e impostarlo come bridge predefinito per le VM:

$ virsh net-define host-bridge.xml
$ virsh net-start host-bridge
$ virsh net-autostart host-bridge

avviare il bridge host KVM

Per verificare se il bridge è attivo e avviato, esegui:

$ virsh net-list --all

Output di esempio:

Name          State    Autostart   Persistent
------------------------------------------------
 host-bridge   active   yes         yes

verifica lo stato del bridge host KVM

Congratulazioni! Abbiamo impostato correttamente il bridge KVM ed è attivo ora.

Lettura correlata:

  • Installa e configura KVM nel server CentOS 8
  • Installa e configura KVM in OpenSUSE Tumbleweed

2. Crea e gestisci macchine virtuali KVM utilizzando Virsh

Usiamo "virsh" utilità della riga di comando per gestire le macchine virtuali. Il programma virsh viene utilizzato per creare, elencare, mettere in pausa, riavviare, arrestare ed eliminare VM dalla riga di comando.

Per impostazione predefinita, i file della macchina virtuale e altri file correlati sono archiviati in /var/lib/libvirt/ Posizione. Il percorso predefinito per archiviare le immagini ISO è /var/lib/libvirt/boot/ . Ovviamente possiamo modificare queste posizioni durante l'installazione di una nuova VM.

2.1. Elenca tutte le macchine virtuali

Per prima cosa, controlliamo se esistono macchine virtuali.

Per visualizzare l'elenco di tutte le macchine virtuali disponibili, eseguire:

$ sudo virsh list --all

Risultato di esempio:

Elenca le macchine virtuali usando virsh

Come puoi vedere, non ci sono macchine virtuali esistenti.

2.2. Crea macchine virtuali KVM

Creiamo una macchina virtuale Ubuntu 18.04 con 2 GB di RAM, 1 CPU core, 10 GB di HDD. Per farlo, esegui:

$ sudo virt-install --name Ubuntu-18.04 --ram=2048 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/ubuntu-18.04-vm1,size=10 --cdrom /home/ostechnix/ubuntu18.iso --network bridge=br0 --graphics vnc

Analizziamo il comando precedente e vediamo cosa fa ciascuna opzione.

  • --nome Ubuntu-18.04 :il nome della macchina virtuale
  • --ram=2048 :alloca 2 GB di RAM alla VM.
  • --vcpus=1 :indica il numero di core della CPU nella VM.
  • --host della CPU :ottimizza le proprietà della CPU per la VM esponendo la configurazione della CPU dell'host al guest.
  • --hvm :Richiedi la virtualizzazione hardware completa.
  • --percorso disco=/var/lib/libvirt/images/ubuntu-18.04-vm1,size=10 :la posizione in cui salvare l'HDD della VM e le sue dimensioni. In questo caso, ho allocato 10 GB di dimensione dell'HDD.
  • --cdrom /home/otechnix/ubuntu18.iso :la posizione in cui hai l'effettiva immagine ISO del programma di installazione di Ubuntu.
  • --bridge di rete=br0 :indica alla macchina virtuale di utilizzare la rete bridge. Se non hai configurato la rete bridge, ignora questo parametro.
  • --graphics vnc :consente l'accesso VNC alla VM da un client remoto.

L'output di esempio del comando precedente sarebbe:

WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING No console to launch for the guest, defaulting to --wait -1

Starting install...
Allocating 'ubuntu-18.04-vm1'                                                                                                                      |  10 GB  00:00:06     
Domain installation still in progress.
Waiting for installation to complete.

Questo messaggio continuerà a essere visualizzato fino a quando non ti connetterai alla VM da un sistema remoto tramite qualsiasi applicazione VNC e non completerai l'installazione del sistema operativo.

Poiché il nostro sistema host KVM (server Ubuntu) non ha la GUI, non possiamo continuare l'installazione del sistema operativo guest. Quindi, utilizzerò una macchina di riserva con GUI per completare l'installazione del sistema operativo guest con l'aiuto di un client VNC.

Abbiamo finito con il server Ubuntu qui. I seguenti passaggi dovrebbero essere eseguiti su un sistema client.

2.3. Accedi alle macchine virtuali da sistemi remoti tramite client VNC

Vai ai sistemi remoti che hanno un ambiente desktop grafico e installa qualsiasi applicazione client VNC se non è già installata. Ho un desktop Ubuntu con Remmina client desktop remoto installato.

SSH nel sistema host KVM:

$ ssh [email protected]

Ecco,

  • Ostechnix è il nome dell'utente nell'host KVM (server Ubuntu 20.04)
  • 192.168.225.52 è l'indirizzo IP dell'host KVM.

Trova la porta VNC utilizzata dalla VM in esecuzione usando il comando:

$ sudo virsh dumpxml Ubuntu-18.04 | grep vnc

Sostituisci "Ubuntu-18.04" con il nome della tua VM.

Risultato di esempio:

<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>

Il numero della porta VNC è 5900 .

Digita il seguente comando di port forwarding SSH dal tuo terminale:

$ ssh [email protected] -L 5900:127.0.0.1:5900

Avvia l'applicazione client VNC e scegli il protocollo "VNC", quindi digita "localhost:5900" nella barra degli indirizzi e infine premi INVIO:

Connettiti a macchine virtuali remote utilizzando il client desktop remoto Remmina

L'applicazione VNC ora ti mostrerà la finestra di installazione del sistema operativo guess.

Accedi alle macchine virtuali da sistemi remoti tramite client VNC

Continua semplicemente l'installazione del sistema operativo guest. Al termine dell'installazione, chiudere la finestra dell'applicazione VNC.

2.4. Elenca le macchine virtuali in esecuzione

Esegui il comando "virt list" per visualizzare l'elenco delle macchine virtuali in esecuzione:

$ sudo virsh list

Risultato di esempio:

 Id   Name           State
------------------------------
 2    Ubuntu-18.04   running

Come puoi vedere, Ubuntu 18.04 VM è attualmente in esecuzione e il suo ID è 2.

2.5. Avvia VM

Per avviare una macchina virtuale, esegui:

$ sudo virsh start Ubuntu-18.04

Puoi anche utilizzare l'ID della VM per avviarla:

$ sudo virsh start 2

2.6. Riavvia le VM

Per riavviare una macchina virtuale in esecuzione, procedere come segue:

$ sudo virsh reboot Ubuntu-18.04

Oppure,

$ sudo reboot 2

2.7. Metti in pausa le VM

Per mettere in pausa una macchina virtuale in esecuzione, procedere come segue:

$ sudo suspend Ubuntu-18.04

Oppure,

$ sudo suspend 2

2.8. Riprendi le macchine virtuali

Per ripristinare una VM sospesa, procedere come segue:

$ sudo virsh resume Ubuntu-18.04

Oppure,

$ sudo resume 2

2.9. Spegnimento delle macchine virtuali

Per spegnere una macchina virtuale in esecuzione, procedere come segue:

$ sudo virsh shutdown Ubuntu-18.04

Oppure,

$ sudo shutdown 2

2.10. Elimina le macchine virtuali

Per rimuovere completamente una VM, eseguire:

$ sudo virsh undefine Ubuntu-18.04
$ sudo virsh destroy Ubuntu-18.04

Virsh ha molti comandi e opzioni. Per impararli tutti, fai riferimento alla sezione di aiuto di virsh:

$ virsh --help

3. Gestisci graficamente i guest KVM

Ricordare tutti i comandi virsh è quasi impossibile. Se sei un amministratore Linux in erba, potresti trovare difficile eseguire tutte le operazioni di gestione di Kvm dalla riga di comando. Nessun problema! Sono disponibili alcuni strumenti basati sul Web per gestire graficamente le macchine guest KVM. Le seguenti guide spiegano in dettaglio come gestire gli ospiti Kvm utilizzando Cockpit e Virt-manager.

  • Gestisci macchine virtuali KVM utilizzando Cockpit Web Console
  • Come gestire macchine virtuali KVM con Virt-Manager

4. Abilita l'accesso alla console Virsh per le macchine virtuali

Dopo aver creato gli ospiti KVM, posso accedervi tramite SSH, client VNC, Virt-viewer, Virt-manager e console web Cockpit ecc. Ma non ho potuto accedervi usando il comando "virsh console". Per accedere ai guest KVM utilizzando la "console virsh", fare riferimento alla seguente guida:

  • Come abilitare l'accesso alla console Virsh per gli ospiti KVM
Altre guide relative a KVM
  • Crea una macchina virtuale KVM utilizzando l'immagine Qcow2 in Linux
  • Come migrare le VM Virtualbox in VM KVM in Linux
  • Abilita il supporto UEFI per macchine virtuali KVM in Linux
  • Come abilitare la virtualizzazione annidata in KVM in Linux
  • Visualizza le statistiche dei sistemi di virtualizzazione con Virt-top in Linux
  • Come trovare l'indirizzo IP di una macchina virtuale KVM
  • Come rinominare la macchina virtuale guest KVM
  • Accedi e modifica le immagini del disco della macchina virtuale con Libguestfs
  • Crea rapidamente immagini di macchine virtuali con Virt-builder
  • Come salvare macchine virtuali con Virt-rescue
  • Come estendere la dimensione del disco della macchina virtuale KVM in Linux
  • Imposta una cartella condivisa tra host KVM e guest
  • Come modificare la posizione dello storage pool predefinito di KVM Libvirt
  • [Risolto] Impossibile accedere al file di archiviazione, autorizzazione negata Errore in KVM Libvirt
  • Come esportare e importare macchine virtuali KVM in Linux

Conclusione

In questa guida, abbiamo discusso di come installare e configurare KVM in Ubuntu 20.04 LTS Server Edition.

Abbiamo anche esaminato come creare e gestire macchine virtuali KVM dalla riga di comando utilizzando virsh strumento e utilizzando gli strumenti della GUI Cockpit e Virt-manager.

Infine, abbiamo visto come abilitare l'accesso alla console virsh per le macchine virtuali KVM. A questo punto, dovresti avere un ambiente di virtualizzazione completamente funzionante nel tuo server Ubuntu 20.04.


Ubuntu
  1. Come installare e configurare KVM su Ubuntu 18.04 LTS Server

  2. Come installare e configurare Kubernetes (k8s) su Ubuntu 18.04 LTS

  3. Come installare e configurare GitLab su Ubuntu 18.04 LTS

  4. Come installare e configurare Ansible su Ubuntu 18.04 LTS

  5. Come installare e configurare Fail2ban su Ubuntu 20.04 LTS

Come installare e configurare GitLab CE su Ubuntu 18.04 LTS

Come installare e configurare Docker-CE su Ubuntu 18.04 LTS

Come installare e configurare Odoo ERP su Ubuntu 20.04 LTS

Installa e configura Wildfly (JBoss) su Ubuntu 18.04 LTS

Come installare e configurare MySQL in Ubuntu 20.04 LTS

Come installare KVM su Ubuntu 20.04 LTS