GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare KVM Linux e creare VM guest con esempi

KVM sta per Kernel-based Virtual Machine.

Come suggerisce il nome, questa è una tecnologia di virtualizzazione basata sul kernel per il sistema operativo Linux su hardware che supporta la virtualizzazione.

I sistemi operativi guest possono essere completamente virtualizzati o paravirtualizzati.

La paravirtualizzazione consente l'esecuzione di diversi sistemi operativi su un unico set di hardware utilizzando in modo efficace risorse quali processori e memoria. Nella virtualizzazione Para, il sistema operativo viene modificato per funzionare con una macchina virtuale, il che ridurrà al minimo il tempo di esecuzione necessario per eseguire operazioni altrimenti difficili da eseguire in un ambiente virtuale.

Questo è il primo articolo di una serie in corso di articoli su KVM.

1. Strumenti per la gestione delle macchine virtuali

Il pacchetto KVM fornisce qemu-kvm, uno strumento specifico per hypervisor per la gestione delle macchine virtuali.

Invece di questo strumento, puoi usare il pacchetto software noto come libvirt che è un modo più conveniente e consigliato per gestire le macchine virtuali. Questo software include una libreria API, un demone (libvirtd) e un'utilità della riga di comando (virsh).

È possibile utilizzare questo strumento libvirt per gestire qualsiasi macchina virtuale esistente in esecuzione su KVM, Xen, VMWARE ESX, ecc. L'elenco completo degli hypervisor supportati è elencato su libvirt.

Sono disponibili pochi altri strumenti che puoi utilizzare per gestire la tua VM guest.

  • virt-manager (Virtual Machine Manager):uno strumento di gestione grafica per i guest VM.
  • vm-install:un'utilità basata su menu basata su script che definisce un Guest VM e ne installa il sistema operativo.
  • virt-viewer:un client X viewer per guest VM che supporta la crittografia TLS/SSL dell'autenticazione del certificato x509 e dell'autenticazione SASL.

2. Verifica il supporto per la virtualizzazione sul tuo hardware

Per verificare se la tua CPU supporta la virtualizzazione hardware, esegui il comando seguente.

# egrep '(vmx|svm)' /proc/cpuinfo

Se vedi vmx o svm nell'output nella sezione flag, il tuo hardware (CPU) supporta la virtualizzazione.

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov 
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm 
constant_tsc archrfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni 
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 
popcnt lahf_lm tpr_shadow vnmi flexprioritpt vpid
.

3. Installa i pacchetti KVM

Installa i pacchetti KVM utilizzando lo strumento di gestione dei pacchetti specifico della distribuzione (ad esempio, yum su RedHat e CentOS).

# yum install kvm

Dopo aver installato il pacchetto kvm principale, installa i seguenti pacchetti relativi a KVM che ti aiuteranno a gestire le VM sul tuo sistema.

# yum install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

Di seguito sono riportati i pacchetti relativi a KVM installati sulla mia macchina. Il numero di versione sul tuo sistema potrebbe variare leggermente.

# rpm -qa | egrep "virt|kvm|qemu"
python-virtinst-0.600.0-18.el6.noarch
qemu-img-0.12.1.2-2.415.el6.x86_64
libvirt-0.10.2-29.el6.x86_64
virt-viewer-0.5.6-8.el6.x86_64
qemu-kvm-0.12.1.2-2.415.el6.x86_64
libvirt-python-0.10.2-29.el6.x86_64
virt-manager-0.9.0-19.el6.x86_64
virt-top-1.0.4-3.15.el6.x86_64
libvirt-client-0.10.2-29.el6.x86_64
gpxe-roms-qemu-0.9.7-6.10.el6.noarch
virt-what-1.11-1.2.el6.x86_64

Dopo aver installato i pacchetti, si consiglia di riavviare la macchina per caricare tutti i moduli KVM e libvirt, anche se è possibile ricaricarla utilizzando il comando modprobe.

È possibile installare il sistema operativo guest utilizzando Virtul machine manager che vm-install (per SUSE Linux) e virt-install (per RedHat).

Quando il tuo display è impostato (da eccedere, ReflectionX o alcuni altri display manager), fornisce un'interfaccia grafica per creare la procedura guidata della macchina virtuale che ti guida attraverso il processo di installazione. Se il display non è impostato, ad esempio quando si collega la macchina utilizzando ssh senza X11-forwarding, vm-install offre una procedura guidata della riga di comando per configurare interattivamente un guest VM per l'installazione.

4. Prerequisito di rete per creare una macchina virtuale guest

Per impostazione predefinita, le macchine virtuali avranno accesso di rete solo ad altre macchine virtuali sullo stesso server (e all'host stesso). Se vuoi che le VM abbiano accesso alla tua VLAN, devi creare un bridge di rete sull'host come spiegato qui.

Modifica /etc/sysconfig/network-scripts/ifcfg-eth0 e aggiungi la riga "BRIDGE=br0" (assicurati di rimuovere tutti gli IP statici).

Crea il file /etc/sysconfig/network-scripts/ifcfg-br0 e aggiungi le voci come mostrato di seguito. Puoi usare statico o dhcp. Ho usato IP statico in questo caso.

DEVICE="br0"
BOOTPROTO="static"
IPADDR="xxx.xxx.xxx.xxx"
NETMASK="255.255.255.0"
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Se stai eseguendo un firewall (come iptables), crea una regola per consentire il traffico con bridge.

5. Prerequisiti aggiuntivi per creare una macchina virtuale guest

La posizione predefinita per i file di immagine della macchina virtuale è in /var/lib/libvirt/images. Assicurati che sia disponibile uno spazio adeguato in questa directory. In caso contrario, puoi puntare il file immagine a una directory diversa durante la creazione della VM.

Abilita l'inoltro IP in /etc/sysctl.conf aggiungendo la seguente riga:

inet.ipv3.ip_forward=1

Durante la fase di test, se hai SELinux in esecuzione, disabilitalo impostando SELinux in modalità permissiva.

Riavvia il sistema dopo aver apportato le modifiche precedenti.

6. Creazione di una nuova macchina virtuale guest utilizzando virt-install

lo strumento virt-install viene utilizzato per creare la VM. Questo strumento può essere utilizzato sia in modalità interattiva che non interattiva.

Nell'esempio seguente, ho passato tutti i valori richiesti per creare una macchina virtuale come parametri della riga di comando al comando virt-install.

# virt-install \
 -n myRHELVM1 \
 --description "Test VM with RHEL 6" \
 --os-type=Linux \
 --os-variant=rhel6 \
 --ram=2048 \
 --vcpus=2 \
 --disk path=/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 \
 --graphics none \
 --cdrom /var/rhel-server-6.5-x86_64-dvd.iso \
 --network bridge:br0

Nel comando virt-install sopra:

  • n Nome della tua macchina virtuale
  • descrizione Una descrizione valida sulla tua VM. Ad esempio:server delle applicazioni, server di database, server Web, ecc.
  • tipo os Il tipo di sistema operativo può essere Linux, Solaris, Unix o Windows.
  • os-variante Tipo di distribuzione per il tipo di os precedente. Ad esempio, per Linux, può essere rhel6, centos6, ubuntu14, suse11, fedora6 , ecc. Per Windows, può essere win2k, win2k8, win8, win7
  • ariete Memoria per la VM in MB
  • vcpu Numero totale di CPU virtuali per la VM.
  • percorso del disco =/var/lib/libvirt/images/myRHELVM1.img,bus=virtio,size=10 Percorso in cui sono archiviati i file immagine della VM. Dimensioni in GB. In questo esempio, questo file immagine VM è 10 GB.
  • grafica nessuno Questo indica a virt-install di utilizzare una console di testo sulla porta seriale della VM invece della finestra grafica VNC. Se hai impostato xmanager, puoi ignorare questo parametro.
  • cdrom Indica la posizione dell'immagine di installazione. È possibile specificare il percorso di installazione NFS o http (al posto di –cdrom). Ad esempio, –location=http://.com/pub/rhel6/x86_64/
  • ponte di rete:br0 Questo esempio utilizza l'adattatore con ponte br0. È anche possibile creare la propria rete su qualsiasi porta specifica anziché su un adattatore con ponte. Se si desidera utilizzare NAT, utilizzare qualcosa come di seguito per il parametro di rete con il nome della rete virtuale noto come VMnetwork1. Tutti i file di configurazione di rete si trovano in /etc/libvirt/qemu/networks/ per le macchine virtuali. Ad esempio:–rete di rete=rete VM1

7. Elenca le macchine virtuali

Puoi modificare il menu di grub con "console=tty0 console=ttyS0,115200" per visualizzare la console per il tuo schermo durante il processo di installazione nella finestra SSH. Ciò ti consentirà di installare il sistema operativo tramite l'installazione guidata. Altrimenti puoi usare il server X per la visualizzazione.

Il comando seguente visualizzerà tutte le macchine virtuali installate sul tuo sistema operativo. In questo esempio, abbiamo due macchine virtuali installate su questo sistema.

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     dev-dev-vm                     running
 2     myRHELVM1                      running

8. Modifica il file di configurazione della macchina virtuale

Dopo aver creato la VM, vedrai il file di configurazione della VM nel seguente percorso. Il nome del file di configurazione sarà il nome della VM con estensione .xml.

# ls -l /etc/libvirt/qemu/myRHELVM1.xml
-rw-------. 1 root root 2109 Oct 15 12:30 /etc/libvirt/qemu/myRHELVM1.xml

Dovresti evitare di modificare questo file manualmente e utilizzare invece il comando virsh edit. Per modificare il dominio (macchina virtuale) procedi come segue:

virsh edit myRHELVM1

9. Connetti alla console VM

Per connettersi alla console della macchina virtuale utilizzare il comando seguente. Puoi usare "ctrl + ]" per uscire dalla console della macchina virtuale.

virsh console myRHELVM1

Se non hai un server X in esecuzione sul tuo host, la connessione a una console seriale di VM potrebbe essere l'unico modo per accedere a una VM se la rete non è disponibile.

La configurazione dell'accesso alla console di una VM non è diversa da un server fisico, in cui aggiungi semplicemente i parametri di avvio del kernel appropriati alla VM.

Ad esempio, per una VM RHEL (o VM CentOS), aggiungere i seguenti parametri alla riga di avvio del kernel in /etc/grub.conf e quindi riavviare la VM.

console=tty0 console=ttyS0,115200

In alternativa, puoi anche aggiungere le seguenti voci al file /etc/grub.conf.

serial --unit=0 --speed=115200
terminal --timeout=5 serial console

10. Visualizza le informazioni sulla macchina virtuale

Per visualizzare le informazioni sulla VM, utilizzare il comando seguente:

# virsh dominfo myRHELVM1
Id:             5
Name:           myRHELVM1
UUID:           58083ae7-51db-50c3-64d8-bc4c49f642d0
OS Type:        Linux
State:          running
CPU(s):         2
CPU time:       207.6s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c698,c788 (permissive)

11. Visualizza CPU VM e utilizzo memoria

Per visualizzare la CPU della macchina virtuale e l'utilizzo della memoria, utilizzare il comando virt-top come mostrato di seguito.

# virt-top
virt-top 07:14:44 - x86_64 8/8CPU 1600MHz 32094MB
3 domains, 2 active, 2 running, 0 sleeping, 0 paused, 1 inactive D:0 O:0 X:0
CPU: 0.1%  Mem: 4096 MB (4096 MB by guests)
   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM    TIME   NAME
    5 R    0    0 1546    0  0.0  6.0   3:29.55 dev-dev-vm
    8 R    0    0 1546    0  0.0  6.0   1:42.17 myRHELVM2
    -

12. Arresta, riavvia o avvia la VM utilizzando virsh

Per spegnere la macchina virtuale, procedi come segue:

# virsh shutdown myRHELVM1
Domain myRHELVM1 is being shutdown

Per riavviare la VM, procedi come segue:

# virsh reboot myRHELVM1

Per avviare o accendere la macchina virtuale, procedi come segue. Una volta avviata la VM, eseguire "virsh list –all" per visualizzare tutte le VM in esecuzione.

# virsh start myRHELVM1
Domain myRHELVM1 started

Nel prossimo articolo della serie KVM, tratteremo maggiori dettagli su come modificare e manipolare le configurazioni su una singola VM.


Linux
  1. Come utilizzare i comandi "cat" e "tac" con esempi in Linux

  2. Come installare e testare Ansible su Linux

  3. Flatpak su Linux:cos'è e come installare app con esso

  4. Come utilizzare pipe e pipe con nome in Linux (con esempi)

  5. Come installare e utilizzare Flatpak in Linux

Crea e modifica i caratteri in Linux con BirdFont

Come eseguire il backup e il ripristino del sistema Linux con Timeshift

Come installare e utilizzare Alpine con Gmail IMAP in Linux

Come installare e utilizzare il comando Ack in Linux con esempi

Come installare Dig in Linux con esempi di riga di comando

Come installare e configurare KVM su Ubuntu Linux