Come configurare smartphone e PC. Portale informativo
  • casa
  • Programmi
  • Installazione della console Ubuntu del server KVM. Utilizzo di KVM per creare macchine virtuali sul server

Installazione della console Ubuntu del server KVM. Utilizzo di KVM per creare macchine virtuali sul server

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.

Il software KVM in sé non virtualizza nulla nello spazio utente. 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, disco rigido e altre apparecchiature.

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 macchine virtuali. 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, con cui dovrebbe essere collegato 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 installare CentOS il comando sarà simile al seguente:

sudo virt-install\
--tipo-virt=kvm \
--name 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 hai accesso a un'interfaccia grafica non è necessario utilizzare un terminale, puoi utilizzarne uno completo GUI gestore virtuale Macchine virtuali 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 esaminato come installare 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:

Personalmente, per me è più semplice pensare a KVM (Kernel-based Virtual Machine) come a un livello di astrazione rispetto alle tecnologie di virtualizzazione hardware Intel VT-x e AMD-V. Prendiamo una macchina con un processore che supporta una di queste tecnologie e scommettiamo su questa Macchina Linux, in Linux installiamo KVM, di conseguenza otteniamo l'opportunità di creare macchine virtuali. Questo è più o meno il modo in cui funziona il cloud hosting, ad esempio Amazon Web Services. Insieme a KVM, a volte viene utilizzato anche Xen, ma una discussione su questa tecnologia va oltre lo scopo di questo post. A differenza delle tecnologie di virtualizzazione dei container, ad esempio Docker, KVM consente di eseguire qualsiasi sistema operativo come sistema ospite, ma ha anche O Overhead più elevato per la virtualizzazione.

Nota: I passaggi descritti di seguito sono stati testati da me su UbuntuLinux 14.04, ma in teoria per molti aspetti saranno altrettanto veri che per altri Versioni di Ubuntu, e altri Distribuzioni Linux. Tutto dovrebbe funzionare sia sul desktop che sul server, accessibile tramite SSH.

Installazione di KVM

Controlliamo se Intel VT-x o AMD-V è supportato dal nostro processore:

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

Se qualcosa si surriscalda, significa che è supportato e puoi andare avanti.

Installazione di KVM:

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Cosa viene solitamente archiviato dove:

  • /var/lib/libvirt/boot/ - Immagini ISO per l'installazione dei sistemi guest;
  • /var/lib/libvirt/images/ — immagini dei dischi rigidi dei sistemi ospiti;
  • /var/log/libvirt/ - qui dovresti cercare tutti i log;
  • /etc/libvirt/ - directory con file di configurazione;

Ora che KVM è installato, creiamo la nostra prima macchina virtuale.

Creazione della prima macchina virtuale

Ho scelto FreeBSD come sistema ospite. Scarica l'immagine ISO del sistema:

cd /var/lib/libvirt/boot/
sudo wget http:// ftp.freebsd.org/ percorso/ to/ some-freebsd-disk.iso

Le macchine virtuali vengono gestite nella maggior parte dei casi utilizzando l'utilità virsh:

sudo virsh --aiuto

Prima di avviare la macchina virtuale, dovremo raccogliere alcune informazioni aggiuntive.

Guardiamo l'elenco delle reti disponibili:

sudo virsh net-list

Visualizza le informazioni su una rete specifica (denominata predefinita):

sudo virsh net-info predefinito

Diamo un'occhiata all'elenco delle ottimizzazioni disponibili per i sistemi operativi guest:

sudo virt-install --os-variant list

Quindi, ora creiamo una macchina virtuale con 1 CPU, 1 GB di RAM e 32 GB di spazio su disco, connessa alla rete predefinita:

sudo virt-install\
--tipo-virt =kvm\
--nome freebsd10\
--ram 1024\
--vcpus=1\
--os-variante =freebsd8 \
--hvm\
--cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--network rete =default,modello =virtio \
--grafica vnc\
--percorso disco =/ var/ lib/ libvirt/ immagini/ freebsd10.img,dimensione =32, bus =virtio

Puoi vedere:

ATTENZIONE Impossibile connettersi alla console grafica: virt-viewer no
installato. Installa il pacchetto "virt-viewer".

Installazione del dominio ancora in corso. Puoi riconnetterti alla console
per completare il processo di installazione.

Questo è normale, è così che dovrebbe essere.

Quindi guarda le proprietà della macchina virtuale in formato XML:

sudo virsh dumpxml freebsd10

Le informazioni più complete sono fornite qui. Ciò include, ad esempio, un indirizzo MAC, di cui avremo bisogno in seguito. Per ora stiamo trovando informazioni su VNC. Nel mio caso:

Utilizzando il tuo client preferito (io personalmente utilizzo Rammina) effettuiamo l'accesso tramite VNC, se necessario utilizzando SSH Port forwarding. Entriamo direttamente nel programma di installazione di FreeBSD. Quindi tutto è come al solito: Avanti, Avanti, Avanti, otteniamo il sistema installato.

Comandi di base

Diamo ora un'occhiata ai comandi di base per lavorare con KVM.

Ottenere un elenco di tutte le macchine virtuali:

sudo virsh list --all

Ottenere informazioni su una macchina virtuale specifica:

sudo virsh dominfo freebsd10

Avvia la macchina virtuale:

sudo virsh avvia freebsd10

Arresta la macchina virtuale:

sudo virsh shutdown freebsd10

Difficilmente inchioda la macchina virtuale (nonostante il nome, this Non cancellazione):

sudo virsh distrugge freebsd10

Riavvia la macchina virtuale:

sudo virsh riavviare freebsd10

Clonare macchina virtuale:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file /var/lib/libvirt/images/freebsd10-clone.img

Abilita/disabilita l'esecuzione automatica:

sudo virsh avvio automatico freebsd10
sudo virsh autostart --disable freebsd10

Esecuzione di virsh in modalità dialogo (tutti i comandi in modalità dialogo - come descritto sopra):

sudo virsh

Modificando le proprietà della macchina virtuale in XML, anche qui è possibile modificare il limite sulla quantità di memoria, ecc.:

sudo virsh modifica freebsd10

Importante! I commenti dall'XML modificato sono purtroppo rimossi.

Quando la macchina virtuale viene arrestata, è anche possibile ridimensionare il disco:

sudo qemu-img ridimensiona /var/ lib/ libvirt/ images/ freebsd10.img -2G
sudo qemu-img info /var/lib/libvirt/images/freebsd10.img

Importante! Probabilmente al tuo sistema operativo guest non piacerà che il disco diventi improvvisamente più grande o più piccolo. Nella migliore delle ipotesi, verrà caricato modalità di emergenza con una proposta per ripartizionare il disco. Probabilmente non dovresti volerlo fare. Potrebbe essere molto più semplice creare una nuova macchina virtuale e migrarvi tutti i dati.

Il backup e il ripristino sono abbastanza semplici. È sufficiente salvare l'output dumpxml da qualche parte, così come l'immagine del disco, e quindi ripristinarli. Su Youtube sono riuscito a trovare il video Con una dimostrazione di questo processo, tutto non è davvero difficile.

Impostazioni di rete

Una domanda interessante: come determinare quale indirizzo IP ha ricevuto la macchina virtuale dopo il caricamento? KVM lo fa in modo intelligente. Ho finito per scrivere questo script in Python:

#!/usr/bin/env python3

# script virt-ip.py
# (c) 2016 Aleksander Alekseev
#http://sito/

importare il sistema
importare ri
importare il sistema operativo
sottoprocesso di importazione
da xml .etree importa ElementTree

def eprint(str):
stampa(str, file = sys.stderr)

se len(sys.argv)< 2 :
eprint("UTILIZZO: " + sys .argv [ 0 ] + " " )
eprint("Esempio: " + sys .argv [ 0 ] + " freebsd10" )
sys.uscita(1)

se os .geteuid() != 0 :
eprint("ERRORE: dovresti essere root" )
eprint("Suggerimento: esegui `sudo " + sys .argv [ 0 ] + " ...`" ) ;
sys.uscita(1)

if sottoprocesso .call ( "quale arpeggio 2>&1 >/dev/null", shell = Vero ) != 0 :
eprint("ERRORE: arping non trovato" )
estampa( "Suggerimento: esegui `sudo apt-get install arping`")
sys.uscita(1)

Dominio = sys.argv[1]

in caso contrario, .match ("^*$", dominio):
estampa( "ERRORE: caratteri non validi nel nome di dominio")
sys.uscita(1)

Domout = sottoprocesso .check_output ("virsh dumpxml " +dominio+" || true" ,
conchiglia = Vero)
domout = domout.decode("utf-8").strip()

ifdomout == "" :
# messaggio di errore già stampato da dumpxml
sys.uscita(1)

Doc = ElementTree.fromstring(domout)

# 1. elenca tutte le interfacce di rete
# 2. esegui `arping` su ogni interfaccia in parallelo
#3.risposte grep
cmd= "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
"grep "byte da") || vero"

per bambino in doc.iter() :
if bambino.tag == "mac" :
macaddr = child.attrib["indirizzo"]
macout = sottoprocesso .check_output (cmd .format (macaddr) ,
conchiglia = Vero)
print(macout.decode("utf-8"))

Lo script funziona sia con la rete predefinita che con la rete a ponte, la cui configurazione vedremo più avanti. Tuttavia, in pratica, è molto più conveniente configurare KVM in modo che assegni sempre gli stessi indirizzi IP ai sistemi ospiti. Per fare ciò, modifica le impostazioni di rete:

sudo virsh net-edit predefinito

... qualcosa come questo:

>



>

Dopo aver apportato queste modifiche


>

... e sostituirlo con qualcosa come:




>

Riavviamo il sistema ospite e controlliamo che abbia ricevuto un IP tramite DHCP dal router. Se lo desidera sistema ospite avevo indirizzo IP statico, questo viene configurato come di consueto all'interno del sistema ospite stesso.

programma virt-manager

Potrebbe interessarti anche il programma virt-manager:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd NOMEUTENTE

Ecco come appare la sua finestra principale:

Come puoi vedere, virt-manager non è solo una GUI per macchine virtuali in esecuzione localmente. Con il suo aiuto, puoi gestire macchine virtuali in esecuzione su altri host, oltre a guardare splendide grafiche in tempo reale. Personalmente trovo particolarmente comodo in virt-manager il fatto che non sia necessario cercare nelle configurazioni per scoprire su quale porta VNC è in esecuzione su un particolare sistema guest. Basta trovare la macchina virtuale nell'elenco, fare doppio clic e accedere al monitor.

Con l'aiuto di virt-manager è anche molto comodo fare cose che altrimenti richiederebbero un'intensa modifica di file XML e, in alcuni casi, l'esecuzione comandi aggiuntivi. Ad esempio, rinominando le macchine virtuali, Impostazioni della CPU affinità e cose simili. A proposito, uso della CPU l'affinità riduce significativamente l'effetto dei vicini rumorosi e l'impatto delle macchine virtuali sul sistema host. Usatelo sempre se possibile.

Se decidi di utilizzare KVM in sostituzione di VirtualBox, tieni presente che non saranno in grado di condividere tra loro la virtualizzazione dell'hardware. Affinché KVM funzioni sul tuo desktop, non dovrai solo arrestare tutte le macchine virtuali in VirtualBox e Vagrant, ma anche riavviare il sistema. Personalmente trovo KVM molto più conveniente di VirtualBox, almeno perché non richiede l'esecuzione di un comando sudo /sbin/rcvboxdrv installazione dopo ogni aggiornamento del kernel funziona adeguatamente con Unity e generalmente consente di nascondere tutte le finestre.

Come appassionato di Linux, controllo molto Open Source e applicazioni Linux, nonché distribuzioni ogni giorno. Fondamentalmente uso Oracle VirtualBox per testare e riprodurre vari sistemi operativi. VirtualBox è un popolare strumento di virtualizzazione per distribuire o testare vari tipi di distribuzioni. Come Oracle VirtualBox, esistono molti prodotti di virtualizzazione come , OpenVZ, KVM, Proxmox, ecc. Oggi parleremo di QEMU.

QEMU è un emulatore e virtualizzatore di macchine fornito con open codice sorgente, che consente agli utenti di creare e gestire macchine virtuali all'interno del sistema operativo.

Se utilizzato come macchina, l'emulatore QEMU può eseguire sistemi operativi e programmi realizzati per una macchina su un'altra macchina (ad esempio, il proprio PC). Utilizzando la traduzione dinamica, si ottengono prestazioni molto buone.

Se utilizzato come virtualizzatore, QEMU raggiunge prestazioni molto simili eseguendo il codice guest direttamente sul processore host. QEMU supporta la virtualizzazione durante l'esecuzione sotto l'hypervisor Xen o utilizzando il modulo kernel KVM su Linux.

QEMU ha due modalità operative:

Emulazione completa del sistema: in questa modalità, QEMU emula un sistema completo (ad esempio un PC), incluso il processore e vari periferiche. Può essere utilizzato per eseguire vari sistemi operativi senza dover riavviare il PC o per eseguire il debug del codice di sistema.
Emulazione modalità utente: In questa modalità, QEMU può essere eseguito Processi Linux, compilato per un processore su un altro processore. Ad esempio, può essere utilizzato per eseguire wine o per facilitare la compilazione incrociata e il debug incrociato.

QEMU può essere eseguito senza un driver host del kernel e fornisce comunque prestazioni accettabili.

Installa QEMU su Ubuntu 16.04

In questo esempio vediamo come installare e configurare QEMU su Ubuntu 16.04 LTS, nonché come creare e gestire macchine virtuali.

QEMU è disponibile per impostazione predefinita nei repository Ubuntu. Possiamo quindi installarlo con lo strumento Virt Manager, utilizzando il comando:

Sudo apt install qemu-kvm qemu qemu-system virt-manager virt-viewer libvirt-bin

Dopo aver installato i pacchetti precedenti, riavviare il sistema.

Creazione di macchine virtuali

Ora creiamo una nuova macchina virtuale.

Per prima cosa devi creare immagine virtuale disco rigido per la nuova macchina virtuale. Ad esempio, creiamo un'immagine del disco rigido da 20 GB.

Qemu-img crea ubuntu.img 20G

Quindi scarica l'immagine di installazione del server Ubuntu 15.04 dal sito Web ufficiale.

Per avviare la macchina virtuale, eseguire il comando seguente:

Per sistemi a 64 bit

Qemu-system-x86_64 -hda ubuntu.img -boot d -cdrom /home/linuxthebest/Downloads/ubuntu-15.04-server-i386.iso -m 1024

Per sistemi a 32 bit

Qemu-system-i386 -hda ubuntu.img -boot d -cdrom /home/linuxthebest/Downloads/ubuntu-15.04-server-amd64.iso -m 1024

Dove “/home/linuxthebest/Downloads/ubuntu-15.04-server-i386.iso” è la directory in cui è stata scaricata l'immagine e 1024 è la dimensione della RAM allocata per la macchina.

Durante l'avvio, verrà visualizzata la schermata di installazione, fare clic su Tasto Invio e continuare l'installazione come al solito.

Al termine dell'installazione è possibile avviare il sistema utilizzando il comando:

Qemu -hda ubuntu.img -m 1024

È tutto.

Non ti piace la riga di comando? Crea e gestisci macchine virtuali da riga di comando, potrebbe essere un po' difficile per alcuni utenti. Non preoccuparti, possiamo anche creare macchine virtuali utilizzando uno strumento GUI chiamato Gestore della macchina virtuale (Gestore virtuale).

Se non lo hai installato prima, puoi installarlo utilizzando il comando

Sudo apt installa virt-manager qemu-system libvirt-bin

Crea e gestisci macchine virtuali utilizzando Virt Manager

Avvia Gestione macchina virtuale

Sudo virt-manager

Per impostazione predefinita, l'interfaccia di Virt Manager sarà simile alla seguente.

Ora creeremo e installeremo Ubuntu 16.10 su una macchina virtuale.

Per creare una macchina virtuale, vai su File -> Nuova macchina virtuale.

Seleziona quale sistema operativo desideri installare.

È possibile installare il sistema operativo guest utilizzando un'immagine ISO/CD-ROM locale, Installazione di rete, server PXE o importa immagini disco esistenti. Inoltre, puoi selezionare l'architettura del sistema operativo guest da parametri aggiuntivi.

Seleziona la quantità di RAM e processori.

Inserisci la dimensione del tuo disco rigido virtuale. L'impostazione predefinita è 8 GB.

Inserisci il nome del tuo sistema operativo ospite. Inoltre, seleziona il tipo di rete dalle opzioni avanzate. Infine, fai clic su Fine.

Dopo aver fatto clic sul pulsante Fine, il sistema operativo guest inizierà a caricarsi automaticamente.

È tutto. Ora installa il sistema operativo guest come faresti su un normale sistema.

Ho installato Ubuntu 16.10 in virt manager e, tra l'altro, unity 8 funziona lì, rispetto a virtualbox, in cui non funziona, quindi se vuoi testare il nuovo ambiente di lavoro, quindi puoi installare virt manager ed eseguire unity 8 lì.


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, allora 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 una sola interfaccia eth0 con l'indirizzo IP 172.17.1.249, e file di configurazione l'interfaccia /etc/sysconfig/network-scripts/ifcfg-eth0 assomiglia a questa.

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 di 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 della macchina virtuale
-r - quantità di RAM
-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: collega un'interfaccia di rete virtuale a un 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 mediante modifica 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 XmingX 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 :)

Sto scrivendo questa nota per dimostrare l'installazione e la configurazione passo passo di una macchina virtuale basata su KVM in Linux. In precedenza ho scritto sulla virtualizzazione, dove ho utilizzato il meraviglioso .

Ora mi trovo ad affrontare un problema di noleggio. buon servitore con una grande quantità di RAM e voluminoso 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 hoster attivo buona ghiandola solleva un mucchio Server virtuali, che chiamavamo VPS/VDS, e li distribuisce agli utenti o automatizza questo processo (ciao, DigitalOcean).

KVM (macchina virtuale basata sul kernel) lo è Software per Linux, utilizzando hardware del processore compatibile 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 (parte del kernel Linux) e consiglia di utilizzare la libreria libvirt come strumento per gestirlo, 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 a guscio grafico system, è possibile 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). Ha un gran numero di opzioni e parametri, descrizione dettagliata può essere ottenuto in questo modo:

Uomo vergognoso

oppure chiama lo standard "aiuto":

Aiuto Virsh

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

  1. tengo immagini iso Sistema operativo 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 il port forwarding ssh dalla porta locale 5900 alla porta 5900 del server. 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 inizia $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.

I migliori articoli sull'argomento