Come configurare smartphone e PC. Portale informativo
  • casa
  • Ferro
  • Server della macchina virtuale su Ubuntu. Smetti di aver paura della virtualizzazione utilizzando KVM

Server della macchina virtuale su Ubuntu. Smetti di aver paura della virtualizzazione utilizzando KVM

In Ubuntu si consiglia di utilizzare l'hypervisor (manager macchine virtuali) KVM e la libreria libvirt come strumenti per gestirlo. Libvirt include una serie di API software e applicazioni personalizzate gestione macchine virtuali(VM) gestore virt ( 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 operativo Sistemi 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.

E qui modalità testo può essere descritto.

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 disponibile File. 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 questo finale dimensione specificata, tuttavia, durante la fase di installazione riesce a vedere 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 sistema ospiteè stato creato “per essere guardato”, quindi 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 ad affrontare un problema di noleggio. buon servitore con grande volume memoria ad accesso casuale e volumetrico 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 crea una serie 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 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'utility virsh (un componente aggiuntivo della libreria libvirt). Lei 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. 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 server DHCP ipervisore.

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 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.

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 reale sistema operativo. 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 all'installazione stessa di KVM, è necessario verificare se il processore lo supporta accelerazione hardware virtualizzazione 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, 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 Installazioni 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 nuovo duro disco 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 una GUI, non è necessario utilizzare un terminale, puoi utilizzare la GUI completa del 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 Immagine ISO il 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 è necessario selezionare una taglia disco rigido, che sarà disponibile nel tuo computer:

SU ultimo passo Come procedura guidata, dovrai verificare che le impostazioni della macchina siano corrette e inserirne anche il 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 dischi fissi 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 informazioni su rete specifica(denominato predefinito):

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

Ecco i più informazioni complete. 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, utilizzando se necessario il port forwarding SSH. 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 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. IN scenario migliore, si avvierà in modalità di emergenza con la proposta di 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 vuoi che il sistema ospite abbia 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.

I migliori articoli sull'argomento