Come configurare smartphone e PC. Portale informativo
  • casa
  • Recensioni
  • Server Ubuntu 16.04 kvm creando una macchina virtuale. Utilizzo di KVM per creare macchine virtuali sul server

Server Ubuntu 16.04 kvm creando una macchina virtuale. Utilizzo di KVM per creare macchine virtuali sul server

KVM è uno dei soluzioni software per fornire la visualizzazione in un ambiente Linux. Recentemente, RedHat ha abbandonato lo sviluppo di diversi sistemi di virtualizzazione Xen e KVM contemporaneamente e, a partire dal ramo RHEL/CentOS 6, KVM è diventato il sistema principale. Il requisito principale di KVM è che il processore supporti la visualizzazione hardware. E i moduli KVM sono disponibili solo per l'architettura x86_64.

1. Installazione

Controlliamo il supporto per la virtualizzazione dell'hardware:

# egrep ‘(svm|vmx)’ /proc/cpuinfo
flag: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm costanti_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtprpdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority

Se l'output è vuoto, significa che il processore non supporta la virtualizzazione hardware e kvm non funzionerà, ma se l'output è simile a quello sopra, puoi procedere con l'installazione. Installa i componenti e avvia il servizio libvirt:

# gnam installa kvm libvirt virt-manager
# avvio del servizio libvirtd
Avvio del demone libvirtd: [OK]

Controlliamo se sono stati caricati i moduli KVM necessari: dovrebbero esserci due moduli, il primo kvm, il secondo kvm_intel o kvm_amd per il tipo di processore corrispondente.

# lsmod | grep kvm
kvm_intel 55496 4
kvm 337900 1 kvm_intel

In alcuni casi, nonostante la presenza del supporto per la virtualizzazione hardware sul processore, è necessario abilitare ulteriormente il supporto per la virtualizzazione nel BIOS o eseguire nuovamente il flashing del BIOS con la versione più recente.

2. Configurazione della rete
La prima cosa che devi fare è configurare un bridge di rete con l'interfaccia principale ed eliminare la rete predefinita. Un bridge di rete consentirà ai computer situati in rete fisicaè facile comunicare con il server virtuale come se fosse sulla stessa rete, ed è altrettanto semplice e trasparente per il server virtuale comunicare con i computer della rete fisica.

2.1. Impostazione del bridge0
Ad esempio, supponiamo che sul nostro server di virtualizzazione sia presente solo un'interfaccia eth0 con l'indirizzo IP 172.17.1.249 e che il file di configurazione dell'interfaccia /etc/sysconfig/network-scripts/ifcfg-eth0 sia simile a questo.

DISPOSITIVO=”eth0″
BOOTPROTO="statico"
HWADDR="78:24:AF:3C:C5:B5"
IPADDR=172.17.1.249
MASCHERA DI RETE=255.255.0.0
GATEWAY=172.17.1.30
ONBOOT="sì"
Portiamo il file /etc/sysconfig/network-scripts/ifcfg-eth0 nel seguente modulo.

DISPOSITIVO=”eth0″
BOOTPROTO="statico"
HWADDR="78:24:AF:3C:C5:B5"
PONTE=ponte0
ONBOOT="sì"
Crea /etc/sysconfig/network-scripts/ifcfg-bridge0 e compilalo.

DISPOSITIVO="bridge0"
TIPO=Ponte
BOOTPROTO="statico"
IPADDR=172.17.1.249
MASCHERA DI RETE=255.255.0.0
GATEWAY=172.17.1.30
ONBOOT="sì"
Riavviare il servizio di rete

# riavvio della rete del servizio
Spegnimento dell'interfaccia eth0: bridge bridge0 non esiste!
[OK]
Arresto dell'interfaccia di loopback: [OK]
Visualizzazione dell'interfaccia di loopback: [OK]
Apertura dell'interfaccia eth0: [OK]
Visualizzazione del bridge di interfaccia0: [OK]
Se lo si desidera, questa procedura può essere eseguita da remoto, ad esempio tramite ssh: in questo caso il riavvio del servizio di rete causerà un ritardo di due secondi, dopodiché la connessione verrà ripristinata senza riconnessione. Verifica del ponte creato:

Ora eliminiamo il file virbr0 predefinito

# lista di rete virsh
Nome Stato Avvio automatico
——————————————
attivo per impostazione predefinita sì
# virsh net-destroy predefinito
Impostazione predefinita della rete distrutta
# virsh net-undefine predefinito
L'impostazione predefinita della rete non è stata definita

È possibile utilizzare l'utilità brctl per verificare lo stato del bridge. Questo utilità standard per lavorare con i bridge Ethernet:

# brctl mostra
nome bridge ID bridge Interfacce abilitate STP
bridge0 8000.7824af3cc5b5 no eth0

3. Installazione e gestione macchine virtuali.
Sono disponibili molte opzioni per l'installazione e la gestione delle macchine virtuali. programma conveniente Virtual Machine Manager (Virt-Manager) per un ambiente grafico. Ha un'interfaccia abbastanza chiara che qualsiasi persona media può comprendere senza problemi. Amministratore di sistema. Puoi anche gestire e creare macchine virtuali utilizzando la console, sarà un po' più complicato, ma più possibilità per la messa a punto.

3.1. Installazione di macchine virtuali.
Come segno, proviamo a installare CentOS 6.0:

# virt-install -n vm01 -r 2048 -l http://mirror.yandex.ru/centos/6.0/os/x86_64 -f /vmstore/vm01.img -s 10 —network bridge=bridge0 —vnc
Parametri di lancio:

N - nome macchina virtuale
-r - volume memoria ad accesso casuale
-l - percorso del file per l'installazione di rete
-f: percorso del file contenitore contenente il disco della macchina virtuale
-s: dimensione del file contenitore in gigabyte
—bridge di rete: connessione virtuale interfaccia di rete al bridge di rete
--vnc: utilizza la visualizzazione VNC
Per continuare l'installazione dovremo connetterci allo schermo della macchina virtuale tramite VNC. Per fare ciò controlliamo quale porta è stata selezionata per la connessione; può variare da 5900 in poi.

# virsh dumpxml vm01 | grepvnc

Ci colleghiamo tramite la porta 5900 e completiamo l'installazione.

se durante il ritiro

quindi vai e modifica qemu.conf:

# nano /etc/libvirt/qemu.conf
vnc_ascolta = "0.0.0.0"
….
vnc_password = "xxxx"
# /etc/init.d/libvrtd riavviare

3.2. Controllo della macchina
Lo strumento principale della console per la gestione delle macchine virtuali è il programma virsh. La prima cosa che possiamo fare è visualizzare un elenco di tutte le macchine virtuali e il loro stato:

# lista virsh —all
Stato nome ID
———————————-
- VM01 spento
Avviamo la macchina virtuale VM01:

# virsh avvia vm01
Dominio VM01 avviato

Fermarsi equivale a scollegare il computer dalla presa.

# virsh distrugge VM01
Dominio VM01 distrutto

I parametri della macchina virtuale possono essere modificati modificando i file xml. Un'opzione è salvare la configurazione in formato xml.

# virsh dumpxml vm01 > vm01.xml

Modifica vm01.xml e caricalo di nuovo:

# virsh definisce vm01.xml
Dominio vm01 definito da vm01.xml
Un altro è utilizzare la funzione di modifica di virsh, che aprirà automaticamente l'editor configurato nel sistema per impostazione predefinita e al termine della modifica salverà la configurazione.

# modifica virsh VM01

Nella maggior parte dei sistemi, vim è installato come editor predefinito; se non ti piace, puoi facilmente sostituirlo, ad esempio, con mcedit o nano:

# echo "esporta EDITOR=mcedit" >> .bash_profile
Per applicare le impostazioni è necessario effettuare nuovamente l'accesso.

Per gestire tramite la console grafica virt-manager:

Scarica Xming X Server per Windows, installalo, eseguilo.
Installare:
gnam installa xorg-x11-server-Xorg
yum installa xauth
yum installa liberation-sans-fonts
In PuTTY: Connection - SSH - X11, abilita "Abilita inoltro X11" e inserisci "Posizione display X" 127.0.0.1:0.0
Lanciamo:
#virt-manager
E guidiamo attraverso la faccia X :)

In Ubuntu si consiglia di utilizzare l'hypervisor KVM (gestore della macchina virtuale) e la libreria libvirt come strumento di gestione. Libvirt include una serie di API software e applicazioni di gestione personalizzate di macchine virtuali (VM), virt-manager ( GUI, GUI) o virsh ( riga di comando,CLI). Come gestori alternativi, puoi utilizzare convirt (GUI) o convirt2 (interfaccia WEB).

Attualmente, solo l'hypervisor KVM è ufficialmente supportato su Ubuntu. Questo hypervisor fa parte del codice del kernel sistema operativo Linux. A differenza di Xen, KVM non supporta la paravirtualizzazione, il che significa che per poterlo utilizzare, la tua CPU deve supportare le tecnologie VT. Puoi verificare se il tuo processore supporta questa tecnologia eseguendo il comando nel terminale:

Se come risultato ricevi il seguente messaggio:

INFO: esiste /dev/kvm È possibile utilizzare l'accelerazione KVM

Ciò significa che KVM funzionerà senza problemi.

Se all'uscita hai ricevuto il seguente messaggio:

La tua CPU non supporta le estensioni KVM L'accelerazione KVM NON può essere utilizzata

quindi potrai ancora utilizzare la macchina virtuale, ma sarà molto più lento.

    Installa sistemi a 64 bit come ospiti

    Assegna più di 2 GB di RAM ai sistemi ospiti

Installazione

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Questa è un'installazione su un server senza X, cioè non include un'interfaccia grafica. Puoi installarlo con il comando

Sudo apt-get install virt-manager

Successivamente nel menu apparirà la voce “Virtual Machine Manager” e, con un'alta probabilità, tutto funzionerà. Se i problemi persistono, dovrai leggere le istruzioni nel wiki inglese.

Creazione di un sistema ospite

La procedura per creare un sistema guest utilizzando la GUI è abbastanza semplice.

Ma la modalità testo può essere descritta.

qcow2

Quando si crea un sistema utilizzando l'interfaccia grafica come disco rigido, viene richiesto di selezionare un file immagine o un dispositivo di blocco esistente oppure di creare nuovo file con dati grezzi (RAW). Tuttavia, questo non è l’unico formato di file disponibile. Di tutti i tipi di disco elencati in man qemu-img, il più flessibile e moderno è qcow2. Supporta istantanee, crittografia e compressione. Deve essere creato prima di creare un nuovo ospite.

Qemu-img create -o preallocation=metadati -f qcow2 qcow2.img 20G

Secondo lo stesso qemu-img, la preallocazione dei metadati (-o preallocation=metadata) rende inizialmente il disco un po' più grande, ma fornisce prestazioni migliori in quei momenti in cui l'immagine ha bisogno di crescere. Infatti, dentro in questo caso Questa opzione ti consente di evitare uno spiacevole bug. Immagine creata inizialmente occupa meno di un megabyte di spazio e cresce fino alla dimensione specificata secondo necessità. Il sistema ospite dovrebbe vedere immediatamente questa dimensione finale specificata, tuttavia, durante la fase di installazione potrebbe vederla dimensione reale file. Naturalmente rifiuterà l'installazione su un disco rigido da 200 KB. Il bug non è specifico di Ubuntu; appare almeno in RHEL.

Oltre al tipo di immagine, puoi successivamente scegliere il metodo per collegarla: IDE, SCSI o Virtio Disk. Le prestazioni dipenderanno da questa scelta sottosistema del disco. Non esiste una risposta corretta e definitiva, è necessario scegliere in base al compito che verrà assegnato al sistema ospite. Se il sistema ospite viene creato “da guardare”, allora qualsiasi metodo andrà bene. In generale, di solito si tratta di I/O collo di bottiglia macchina virtuale, quindi quando si crea un sistema molto carico, questo problema deve essere preso nel modo più responsabile possibile.

Scrivo questa nota per dimostrarlo installazione passo dopo passo e la configurazione di una macchina virtuale basata su KVM in Linux. In precedenza ho scritto sulla virtualizzazione, dove ho utilizzato il meraviglioso .

Ora mi trovo di fronte alla questione del noleggio di un buon server con una grande quantità di RAM e di grandi dimensioni disco rigido. Ma non voglio eseguire progetti direttamente sulla macchina host, quindi li separerò in piccoli server virtuali separati che eseguono contenitori Linux o Docker (ne parlerò in un altro articolo).

Tutti i moderni hosting cloud funzionano secondo lo stesso principio, ovvero un hoster su un buon hardware crea un gruppo di server virtuali, che chiamavamo VPS/VDS, e li distribuisce agli utenti o automatizza questo processo (ciao, DigitalOcean).

KVM (macchina virtuale basata sul kernel) è un software per Linux che utilizza l'hardware dei processori compatibili con x86 per funzionare con la tecnologia di virtualizzazione Intel VT/AMD SVM.

Installazione di KVM

Eseguirò tutte le macchinazioni per creare una macchina virtuale sul sistema operativo Ubuntu 16.04.1 LTS. Per verificare se i tuoi processi supportano la virtualizzazione dell'hardware su Basato su Intel VT/AMD SVM, eseguire:

Grep -E "(vmx|svm)" /proc/cpuinfo

Se il terminale non è vuoto, tutto è in ordine e KVM può essere installato. Ubuntu supporta ufficialmente solo l'hypervisor KVM (incluso con Kernel Linux) e consiglia di utilizzare la libreria libvirt come strumento per gestirla, che è ciò che faremo dopo.

Puoi anche verificare il supporto della virtualizzazione hardware in Ubuntu utilizzando il comando:

In caso di successo, vedrai qualcosa di simile a questo:

INFO: esiste /dev/kvm È possibile utilizzare l'accelerazione KVM

Installa i pacchetti per lavorare con KVM:

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Se hai accesso alla shell grafica del sistema, puoi installare il gestore della GUI libvirt:

Sudo apt-get install virt-manager

Usare virt-manager è abbastanza semplice (non più difficile di VirtualBox), quindi in questo articolo parleremo dell'opzione console per l'installazione e la configurazione di un server virtuale.

Installazione e configurazione di un server virtuale

Nella versione console di installazione, configurazione e gestione del sistema, uno strumento indispensabileè l'utilità virsh (un componente aggiuntivo della libreria libvirt). Lei ha un gran numero di opzioni e parametri, una descrizione dettagliata può essere ottenuta come segue:

Uomo vergognoso

oppure chiama lo standard "aiuto":

Aiuto Virsh

Mi attengo sempre seguenti regole quando si lavora con server virtuali:

  1. Memorizzo le immagini del sistema operativo ISO nella directory /var/lib/libvirt/boot
  2. Memorizzo le immagini della macchina virtuale nella directory /var/lib/libvirt/images
  3. Assegno esplicitamente a ciascuna nuova macchina virtuale il proprio indirizzo IP statico tramite il server DHCP dell'hypervisor.

Iniziamo l'installazione della prima macchina virtuale (server Ubuntu 16.04 LTS a 64 bit):

Cd /var/lib/libvirt/boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

Dopo aver scaricato l'immagine, avvia l'installazione:

Sudo virt-install \ --virt-type=kvm \ --name ubuntu1604\ --ram 1024 \ --vcpus=1 \ --os-variant=ubuntu16.04 \ --hvm \ --cdrom=/var/ lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \ --network network=default,model=virtio \ --graphics vnc \ --disk path=/var/lib/libvirt/images/ubuntu1604. img,dimensione=20,autobus=virtio

Traducendo tutti questi parametri in " linguaggio umano", si scopre che stiamo creando una macchina virtuale con sistema operativo Ubuntu 16.04, 1024 MB di RAM, 1 processore, una scheda di rete standard (la macchina virtuale accederà a Internet come se fosse dovuta a NAT), HDD da 20 GB.

Vale la pena prestare attenzione al parametro --os-variante, indica all'hypervisor a quale sistema operativo devono essere adattate le impostazioni.
Elenco Opzioni disponibili Il sistema operativo può essere ottenuto eseguendo il comando:

Osinfo-query os

Se tale utility non è presente sul tuo sistema, installa:

Sudo apt-get install libosinfo-bin

Dopo aver avviato l'installazione, nella console verrà visualizzato il seguente messaggio:

Installazione del dominio ancora in corso. È possibile riconnettersi alla console per completare il processo di installazione.

Questa è una situazione normale, continueremo l'installazione tramite VNC.
Diamo un'occhiata a quale porta è stata attivata sulla nostra macchina virtuale (nel terminale successivo, ad esempio):

Virsh dumpxml ubuntu1604... ...

Porta 5900, su indirizzo locale 127.0.0.1. Per connettersi a VNC, è necessario utilizzare il port forwarding tramite ssh. Prima di fare ciò, assicurati che l'inoltro tcp sia abilitato nel demone ssh. Per fare ciò, vai alle impostazioni sshd:

Cat /etc/ssh/sshd_config | grep PermetteTcpForwarding

Se non è stato trovato nulla o viene visualizzato:

ConsentiTcpInoltro no

Quindi modifichiamo la configurazione in

Consenti TcpForwarding sì

e riavviare sshd.

Configurazione del port forwarding

Eseguiamo il comando sulla macchina locale:

Ssh -fN -l login -L 127.0.0.1:5900:localhost:5900 server_ip

Qui abbiamo configurato ssh Port forwarding Con porto locale 5900 alla porta del server 5900. Ora puoi connetterti a VNC utilizzando qualsiasi client VNC. Preferisco UltraVNC per la sua semplicità e praticità.

Una volta stabilita la connessione, verrà visualizzata la schermata finestra standard saluti per aver avviato l'installazione di Ubuntu:

Al termine dell'installazione e del consueto riavvio, verrà visualizzata la finestra di accesso. Dopo aver effettuato l'accesso, determiniamo l'indirizzo IP della macchina virtuale appena creata per renderla successivamente statica:

Ifconfig

Ricordiamo e andiamo alla macchina host. Tiriamo fuori l'indirizzo mac della scheda “rete” della macchina virtuale:

Virsh dumpxml ubuntu1604 | grep "indirizzo mac"

Ricordiamo il nostro indirizzo mac:

La modifica impostazioni di rete ipervisore:

Sudo virsh net-edit predefinito

Cerchiamo DHCP e aggiungiamo questo:

Dovrebbe assomigliare a qualcosa di simile a questo:

Affinché le impostazioni abbiano effetto, è necessario riavviare il server DHCP dell'hypervisor:

Sudo virsh net-destroy default sudo virsh net-start default sudo service libvirt-bin restart

Successivamente, riavviamo la macchina virtuale, ora le sarà sempre assegnato l'indirizzo IP: 192.168.122.131.

Esistono altri modi per impostare un IP statico per una macchina virtuale, ad esempio modificando direttamente le impostazioni di rete all'interno del sistema ospite, ma qui è tutto ciò che desideri. Ho appena mostrato l'opzione che preferisco utilizzare.

Per connetterti al terminale della macchina virtuale, esegui:

Ssh192.168.122.131

L'auto è pronta per la battaglia.

Virsh: elenco dei comandi

Per vedere correre host virtuali(tutti quelli disponibili possono essere ottenuti aggiungendo --all):

Elenco sudo virsh

Puoi riavviare l'host:

Sudo virsh riavvia $VM_NAME

Arresta una macchina virtuale:

Sudo virsh stop $VM_NAME

Esegui arresto:

Sudo virsh distrugge $VM_NAME

Sudo virsh avvia $VM_NAME

Disattivare:

Sudo virsh shutdown $VM_NAME

Aggiungi all'esecuzione automatica:

Sudo virsh avvio automatico $VM_NAME

Molto spesso è necessario clonare un sistema per poterlo utilizzare in futuro come framework per altri sistemi operativi virtuali; per questo viene utilizzata l'utilità virt-clone.

Virt-clone --aiuto

Clona una macchina virtuale esistente e modifica i dati sensibili dell'host, ad esempio l'indirizzo mac. Password, file e altre informazioni specifiche dell'utente nel clone rimangono gli stessi. Se l'indirizzo IP sulla macchina virtuale clonata è stato registrato manualmente, potrebbero verificarsi problemi con l'accesso SSH al clone a causa di un conflitto (2 host con lo stesso IP).

Oltre a installare una macchina virtuale tramite VNC, è anche possibile utilizzare X11Forwarding tramite l'utility virt-manager. Su Windows è possibile utilizzare ad esempio Xming e PuTTY.

Ho già scritto sull'installazione Qemu-KVM V Debian. Ma, a mio avviso, le informazioni si sono rivelate incomplete. In più non ho tenuto conto di alcune sfumature. Pertanto, porto alla tua attenzione un articolo aggiornato sull'installazione della macchina virtuale Qemu-KVM. Vecchio articolo Ovviamente lo eliminerò.

Penso che dovrei spiegare di cosa si tratta macchina virtuale, non ne vale la pena. Probabilmente lo sai (visto che stai leggendo questo articolo). Altrimenti - . Ci concentreremo direttamente sull'argomento. Qemu-KVMè un progetto che combina due delle tecnologie di virtualizzazione completa più sognanti (secondo me). Qemuè una sorta di "emulatore di computer" che supporta una grande varietà di architetture hardware. Può eseguire quasi tutti i sistemi operativi per qualsiasi dispositivo (ad esempio, ho eseguito versioni precedenti Mac OS X, che è per PowerPC). Lo svantaggio di Qemu è la sua lentezza dovuta alla mancanza di accelerazione hardware. E poi un altro progetto arriva in soccorso - KVM. O macchina virtuale del kernel. KVM è una tecnologia del kernel Linux che ti consente di fornire accelerazione hardware con virtualizzazione completa. Lo svantaggio di KVM è che supporta solo l'architettura x86

Perché Qemu-KVM? Per Linux, questo è il progetto di virtualizzazione più consigliato. Funziona più velocemente di VirtualBox E Lettore VMware(secondo i miei test), KVM è una tecnologia nativa per Linux. Inoltre, se hai un buon computer da gioco con due schede video, puoi installare Qemu-KVM finestre, inserisci una delle schede video e dimentica di riavviare su un altro sistema operativo. Se vuoi giocare, avvia una macchina virtuale con Windows e gioca. Le prestazioni saranno pari al 95% delle prestazioni di Windows installato sull'hardware. Ma è semplicemente stupendo, secondo me. Scriverò un articolo separato su questo. Sarà interessante:)

Adesso descriverò il nostro piano d’azione. Innanzitutto, eseguirò l'installazione utilizzando un esempio Debian 8.2 GNOME 64 bit, anche se non ci saranno differenze significative in altri ambienti grafici. In secondo luogo, descriverò il lavoro con KVM solo in modalità grafica(Non lo installeremo sul server). Pertanto, niente terminali, script, ecc., come di solito si fa nel caso di virtualizzazione dei server. In terzo luogo, ti consiglio di leggere ulteriormente la documentazione su Qemu e KVM (fornirò i collegamenti alla fine dell'articolo). Questo ti sarà molto utile se vuoi sfruttare al massimo il potenziale di questo pacchetto. Ebbene, il nostro piano d'azione è chiaro. Ora l'azione procede:

  • installa qemu-kvm;
  • installazione di un gestore grafico e utilità aggiuntive;
  • creazione di un bridge di rete;
  • creazione di spazio di archiviazione per macchine virtuali;
  • installazione di un sistema ospite.
Innanzitutto, controlliamo se il tuo computer supporta la virtualizzazione dell'hardware. Per fare ciò, esegui il comando nel terminale:

egrep "(vmx|svm)" /proc/cpuinfo

L'output del comando deve contenere uno dei due vmx, O svm. Se non sono presenti, controlla se la virtualizzazione è abilitata nel BIOS (cerca elementi Intel VT-i o simile per AMD). Se non c'è nulla, allora sei sfortunato.

Installare i componenti necessari:

sudo apt install qemu-kvm bridge-utils libvirt-bin virt-manager

Aggiungiti al gruppo libvirt:

sudo adduser $USER libvirt

Ora impostiamo la rete. Affinché tutte le macchine virtuali possano accedere alla rete e comunicare tra loro, è necessario creare un bridge di rete e schede di rete virtuali per ciascuna macchina virtuale ( toccare i dispositivi). Poiché installeremo le macchine virtuali dall'interfaccia grafica, non è necessario creare manualmente i tocchi. Responsabile virtuale lo farà per noi ogni volta che inizieremo. Dobbiamo solo configurare il bridge. Innanzitutto, abilitiamo il routing nel kernel:

sudo nano /etc/sysctl.conf

Cerchiamo la riga net.ipv4_forward=0 e cambiamo il suo valore in 1 . Salviamo anche:

sudo sysctl -p

D'ora in poi darò per scontato quanto segue: 1) ce n'è uno sul tuo computer scheda LAN, che riceve un indirizzo IP dal router. 2) accedi a Internet tramite un modem 3G e la tua scheda di rete è gratuita. Questa opzione comporta più lavoro manuale, ma è stata testata più volte (l'ho fatto io stesso su una delle macchine). Quindi, apri il file delle interfacce:

sudo nano /etc/network/interfaces

I suoi contenuti predefiniti sono:



auto lo
iface lo inet loopback

Ne modifichiamo il contenuto. Per la prima opzione:

fonte /etc/network/interfaces.d/*

# L'interfaccia di rete di loopback
auto lo
iface lo inet loopback

auto eth0
manuale iface eth0 inet

autobr0
iface br0 inet statico
indirizzo 192.168.0.2
gateway 192.168.0.1
maschera di rete 255.255.255.0
rete 192.168.0.0
trasmesso 192.168.0.255
bridge_ports eth0
bridge_stp disattivato
bridge_maxattesa 0
ponte_fd 0

Per la seconda opzione:

fonte /etc/network/interfaces.d/*

# L'interfaccia di rete di loopback
auto lo
iface lo inet loopback

ppp0 automatico
iface ppp0 inet wvdial

auto eth0
manuale iface eth0 inet

autobr0
iface br0 inet statico
indirizzo 192.168.0.2
gateway 192.168.0.1
maschera di rete 255.255.255.0
rete 192.168.0.0
trasmesso 192.168.0.255
bridge_ports eth0
bridge_stp disattivato
bridge_maxattesa 0
ponte_fd 0
up percorso del default br0

Nota: se non è necessaria una connessione Internet automatica tramite modem dopo l'avvio del sistema, rimuovere le righe auto ppp0 e
iface ppp0 inet wvdial . Altrimenti assicuratevi che all'avvio del sistema il modem sia inserito nella porta USB.

Salva. Ora, per l'opzione con modem, è necessario installare un programma di connessione wvdial:

sudo apt installa wvdial

Modifica della configurazione (nota: come esempio viene utilizzato un modem 3G Beeline. Puoi facilmente trovare esempi di configurazioni per altri modem su Internet):

sudo nano /etc/wvdial.conf


Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","home.beeline.ru"
Modalità stupida = 1
ISDN = 0
Tipo di modem = Modem USB
Nuovo PPPD = sì
Telefono = *99#
Modem = /dev/ttyACM0
Nome utente = beeline
Parola d'ordine = dritta
Baud = 9600
Paese = Russia
Riconnessione automatica=attiva
DNS automatico = disattivato
Secondi di inattività = 0

Salva. Ora il modem si accenderà immediatamente dopo l'avvio del sistema. L'allineamento del percorso predefinito br0 elimina il percorso predefinito attraverso il ponte. Se ciò non viene fatto, non potrai connetterti a Internet, poiché il traffico passerà attraverso il bridge e non attraverso il modem 3G.

L'ultimo passo che dobbiamo dire firewall, in modo che passi il traffico dalle nostre macchine virtuali alla rete e viceversa. Per fare ciò, puoi procedere in due modi: scrivere uno script con diverse regole per iptables, che verrà eseguito insieme al sistema, oppure inserisci queste regole manualmente e salvale. Utilizzerò la prima opzione. Per il secondo dovrai installare il pacchetto iptables-persistente e inserisci semplicemente le regole una per una (usando sudo). COSÌ. creare uno script (in qualsiasi editor di testo). Incolla lì il seguente contenuto:

#!/bin/sh

# Definisce l'interfaccia di output per la quale verrà applicata la sostituzione dell'indirizzo (NAT).
iptables -v -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Inoltriamo tutti i pacchetti che arrivano al modem da rete globale(0.0.0.0/0) alla rete locale (192.168.0.0/24)
iptables -v -A AVANTI -i ppp0 -o br0 -s 0.0.0.0/0 -d 192.168.0.0/24 -j ACCETTA

# Inoltra tutti i pacchetti provenienti da rete locale(192.168.0.0/24) a globale (0.0.0.0/0)
iptables -v -A AVANTI -i br0 -o ppp0 -s 192.168.0.0/24 -d 0.0.0.0/0 -j ACCETTA

Salvalo come gateway.sh e fornire i diritti di esecuzione (nelle proprietà del file o nel terminale con il comando chmod +x gateway.sh). Ora puoi avviarlo manualmente dopo l'avvio del sistema o aggiungerlo all'avvio. Per fare ciò, sposta lo script in ~/.config/autostart(V gestore di file accendi lo spettacolo file nascosti e vedrai la directory .config nella tua directory home).

Adesso è tutto pronto per installare la macchina virtuale. Dal menu dell'applicazione, avviare Virt Manager (gestore della macchina virtuale):

Clic fare clic con il tasto destro in linea localhost e scegli Dettagli. Vai alla scheda Magazzinaggio. Dobbiamo specificare la directory (o la partizione/disco del disco) in cui archiviare le macchine virtuali.

Nell'angolo in basso a sinistra, fare clic sul segno più ( Aggiungi una piscina), indicare il tipo di archiviazione e il percorso ad esso.

Sulla scheda Interfacce di rete, puoi verificare se tutto funziona.

Ora premiamo File: nuova macchina virtuale. Specificare il percorso dell'immagine del disco e il tipo di macchina virtuale. Successivamente, indichiamo la quantità di RAM e il numero di core del processore. Successivamente, indica il nostro spazio di archiviazione e fai clic Nuovo volume . Specificare il nome, lasciare la tipologia qcow2 e dimensione. Questo sarà un disco rigido virtuale. Se prevedi di installare il sistema con guscio grafico e un mucchio di programmi, danno più spazio (50 concerti). Nell'ultima scheda, seleziona la casella Modifica le impostazioni prima del lancio, controlliamo che la qualità dispositivo di rete Il nostro bridge è selezionato, scrivi un nome qualsiasi per la macchina virtuale e fai clic Completare. La finestra dei parametri per questa macchina virtuale si aprirà davanti a te.





Vai alla scheda processore e metti un segno di spunta Copia le impostazioni del processore host.

Accanto alla scheda Netto(successivo) e anche indicare vitio. Sulla scheda Schermo per favore, indica Spezia e nella scheda video - QXL. In genere questo collegamento fornisce massima performance disegnando grafica, ma se vuoi puoi sperimentare. Si prega di notare che per gli ospiti Sistemi Windows, richiede l'installazione separata del driver QXL (in Windows stesso).


Ora che tutto è pronto, a sinistra angolo superiore clic Avvia l'installazione. E installa il sistema come al solito, con un'eccezione: non appena il programma di installazione inizia a configurare automaticamente la rete, fai clic Annulla e selezionare Configura la rete manualmente. Specificare l'indirizzo IP desiderato per la macchina virtuale (nel nostro caso 192.168.0.3 ), Maschera di sottorete ( 255.255.255.0 ), gateway (il gateway sarà l'indirizzo host, ovvero 192.168.0.2 ) e server DNS (qui basta specificare Google 8.8.8.8 ). È tutto. Non è necessario fare altro. Installa il sistema e configuralo. In generale, questo è tutto. I passaggi descritti sono un modo per sostituire, ad esempio, VirtualBox con altro migliore alternativa. Dopo aver letto la documentazione, capirai quanto sono ampie le capacità di Qemu-KVM. Volutamente non ho descritto ulteriori parametri della console e metodi per avviare macchine virtuali tramite terminale, poiché questo non è sempre necessario auto di casa. Scriverò un articolo separato a riguardo, sulla configurazione di un server multifunzionale domestico (che può fungere anche da server di una macchina virtuale). Per chi, per qualche motivo, non ha capito cosa è stato scritto, o ci sono ancora momenti incomprensibili, consiglio di guardare un video in cui non descriverò, ma mostrerò come installare e configurare tutta questa roba. Se avete suggerimenti o integrazioni all'articolo scrivete nei commenti.

KVM o Kernel Virtual Module è un modulo di virtualizzazione per il kernel Linux che ti consente di trasformare il tuo computer in un hypervisor per la gestione delle macchine virtuali. Questo modulo funziona a livello di kernel e supporta tecnologie di accelerazione hardware come Intel VT e AMD SVM.

Da solo Software KVM nello spazio utente non virtualizza nulla. Utilizza invece il file /dev/kvm per configurare gli spazi degli indirizzi virtuali per il guest nel kernel. Ogni macchina ospite avrà la propria scheda video, rete e scheda audio, HDD e altre attrezzature.

Inoltre, il sistema ospite non avrà accesso ai componenti del sistema operativo reale. La macchina virtuale viene eseguita in uno spazio completamente isolato. Puoi utilizzare kvm sia su un sistema GUI che sui server. In questo articolo vedremo come installare kvm Ubuntu 16.04

Prima di procedere con l'installazione KVM stessa, è necessario verificare se il processore supporta l'accelerazione della virtualizzazione hardware da Intel-VT o AMD-V. Per fare ciò, esegui il seguente comando:

egrep -c "(vmx|svm)" /proc/cpuinfo

Se il risultato restituisce 0, il tuo processore non supporta la virtualizzazione hardware, se 1 o più, puoi utilizzare KVM sul tuo computer.

Ora possiamo procedere all'installazione di KVM, una serie di programmi possono essere ottenuti direttamente dai repository ufficiali:

sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker

Abbiamo installato non solo l'utilità kvm, ma anche la libreria libvirt e il gestore della macchina virtuale. Una volta completata l'installazione, devi aggiungere il tuo utente al gruppo libvirtd, perché solo root e gli utenti di questo gruppo possono utilizzare le macchine virtuali KVM:

sudo gpasswd -a USER libvirtd

Dopo aver eseguito questo comando, disconnettersi e accedere nuovamente. Successivamente, controlliamo se tutto è stato installato correttamente. Per fare ciò, usa il comando kvm-ok:

INFORMAZIONI: /dev/kvm esiste
È possibile utilizzare l'accelerazione KVM

Se tutto è stato fatto correttamente, vedrai lo stesso messaggio.

Utilizzo di KVM su Ubuntu 16.04

Hai completato l'attività di installazione di KVM in Ubuntu, ma non puoi ancora utilizzare questo ambiente di virtualizzazione ma deve ancora essere configurato. Successivamente, vedremo come è configurato kvm Ubuntu. Per prima cosa devi configurare la tua rete. Dobbiamo creare un bridge con il quale la macchina virtuale si collegherà alla rete del computer.

Configurazione di un bridge in NetworkManager

Questo può essere fatto in diversi modi, ad esempio è possibile utilizzare il programma di configurazione di rete NetworkManager.

Fare clic sull'icona NetworkManager nel pannello, quindi selezionare cambiare connessioni, quindi fare clic sul pulsante Aggiungere:

Quindi seleziona il tipo di connessione Ponte e premere Creare:

Nella finestra che si apre, clicca sul pulsante Aggiungere, per collegare il nostro bridge alla connessione internet:

Dall'elenco, seleziona Ethernet e premere Creare:

Nella finestra successiva, seleziona nel campo dispositivo, interfaccia di rete a cui associare il nostro bridge:

Ora sulla lista le connessioni di rete vedrai il tuo ponte. Non resta che riavviare la rete per applicare completamente le modifiche, per fare ciò eseguire:

Configurazione manuale del bridge

Per prima cosa devi installare il set di utilità bridge-utils se non lo hai già fatto:

sudo apt installa bridge-utils

Quindi, utilizzando il programma brctl, possiamo creare il bridge di cui abbiamo bisogno. Per fare ciò, utilizzare i seguenti comandi:

sudo brctl addbr bridge0
$ sudo indirizzo IP mostra
$ sudo addif bridge0 eth0

Il primo comando aggiunge il dispositivo bridge br0, con il secondo è necessario determinare a quale interfaccia di rete si trova la connessione principale rete esterna, nel mio caso è eth0. E con l'ultimo comando colleghiamo il bridge br0 a eth0.

Ora devi aggiungere alcune righe alle impostazioni di rete in modo che tutto si avvii automaticamente all'avvio del sistema. Per fare ciò, apri il file /etc/network/interfaces e aggiungi lì le seguenti righe:

sudo gedit /etc/network/interfaces

loopback
auto lo bridge0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0

Una volta aggiunte le impostazioni, riavviare la rete:

sudo systemctl riavvia la rete

Ora l'installazione e la configurazione di KVM sono completamente completate e puoi creare la tua prima macchina virtuale. Successivamente, puoi visualizzare i bridge disponibili utilizzando il comando:

Creazione di macchine virtuali KVM

Impostazioni KVM Ubuntu completato e ora possiamo passare al suo utilizzo. Innanzitutto, diamo un'occhiata all'elenco delle macchine virtuali esistenti:

virsh -c qemu:///elenco di sistema

È vuoto. Puoi creare una macchina virtuale tramite il terminale o nell'interfaccia grafica. Per creare tramite il terminale, utilizzare il comando virt-install. Per prima cosa andiamo alla cartella libvirt:

cd /var/lib/libvirt/boot/

Per Installazioni CentOS il comando sarà simile al seguente:

sudo virt-install\
--tipo-virt=kvm \
--nome centos7\
--ram 2048\
--vcpus=2 \
--os-variante=rhel7 \
--hvm\
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1511.iso \
--network=bridge=br0,modello=virtio \
--grafica vnc\
--percorso disco=/var/lib/libvirt/images/centos7.qcow2,dimensione=40,bus=virtio,format=qcow2

Diamo uno sguardo più da vicino a cosa significano i parametri di questo comando:

  • tipo virt- tipo di virtualizzazione, nel nostro caso kvm;
  • nome- Nome nuova auto;
  • ariete- quantità di memoria in megabyte;
  • vcpus- numero di core del processore;
  • os-variante- tipologia di sistema operativo;
  • cd rom - immagine di installazione sistemi;
  • ponte di rete- il bridge di rete che abbiamo configurato in precedenza;
  • grafica- un modo per accedere all'interfaccia grafica;
  • diskpath- indirizzo del nuovo disco rigido per questa macchina virtuale;

Una volta completata l'installazione della macchina virtuale, puoi scoprire i parametri di connessione VNC utilizzando il comando:

sudo virsh vncdisplay centos7

Ora puoi inserire i dati ricevuti nel tuo client VNC e connetterti alla macchina virtuale anche da remoto. Per Debian il comando sarà leggermente diverso, ma tutto sembra simile:

Vai alla cartella delle immagini:

cd /var/lib/libvirt/boot/

Se necessario, è possibile scaricare l'immagine di installazione da Internet:

sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso

Quindi creiamo una macchina virtuale:

sudo virt-install\
--tipo-virt=kvm \
--name=debina8 \
--ram=2048\
--vcpus=2 \
--os-variante=debian8 \
--hvm\
--cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
--network=bridge=bridge0,modello=virtio \
--grafica vnc\
--percorso disco=/var/lib/libvirt/images/debian8.qcow2,dimensione=40,bus=virtio,formato=qcow2

Ora diamo nuovamente un'occhiata all'elenco delle macchine disponibili:

virsh -c qemu:///elenco di sistema

Per avviare la macchina virtuale è possibile utilizzare il comando:

sudo virsh start nomemacchina

Fermare:

sudo virsh shutdown nomemacchina

Per passare alla modalità di sospensione:

sudo virsh sospende nomemacchina

Riavviare:

sudo virsh riavviare nomemacchina

sudo virsh ripristina nomemacchina

Per rimozione completa macchina virtuale:

sudo virsh distruggi nomemacchina

Creazione di macchine virtuali nella GUI\

Se si ha accesso a un'interfaccia grafica, non è necessario utilizzare un terminale; è possibile utilizzare l'interfaccia grafica completa del gestore della macchina virtuale Virtual Manager. Il programma può essere lanciato dal menu principale:

Per creare una nuova macchina, fare clic sull'icona con l'icona del monitor. Successivamente, dovrai selezionare l'immagine ISO del tuo sistema. Puoi anche utilizzare una vera unità CD/DVD:

Nella schermata successiva, seleziona la quantità di memoria che sarà disponibile per la macchina virtuale, nonché il numero di core del processore:

In questa schermata, devi selezionare la dimensione del disco rigido che sarà disponibile nella tua macchina:

Nell'ultimo passaggio della procedura guidata, devi verificare che le impostazioni della macchina siano corrette e inserire anche il suo nome. È inoltre necessario specificare il bridge di rete attraverso il quale la macchina si connetterà alla rete:

Successivamente la macchina sarà pronta per l'uso e apparirà nell'elenco. Puoi avviarlo utilizzando il triangolo verde sulla barra degli strumenti del gestore.

conclusioni

In questo articolo abbiamo visto come è fatto Installazione KVM Ubuntu 16.04, abbiamo esaminato come preparare completamente questo ambiente per il lavoro, nonché come creare macchine virtuali e utilizzarle. Se avete domande, fatele nei commenti!

Per concludere, una conferenza di Yandex su cosa sia la virtualizzazione in Linux:

I migliori articoli sull'argomento