Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Virtualizzazione con KVM su un Server CentOS 6.0

Questa guida spiega come installare e utilizzare KVM per creazione ed esecuzione di macchine virtuali su un server CentOS 6.0. Vi mostrerò come creare macchine virtuali basate su immagine e anche macchine virtuali che utilizzano un volume logico (LVM). KVM è breve perKernel-based Virtual Machine e fa uso di virtualizzazione hardware, vale a dire, avete bisogno di una CPU che supporta la virtualizzazione hardware, ad esempio Intel VT o AMD-V.

Io non rilasciano alcuna garanzia che questo funziona per voi!

 

1 Nota preliminare

Sto usando un server CentOS 6.0 con il nome host Server1 e IP indirizzo 192.168.0.100 qui come il mio host KVM.

Avevo SELinux disabilitato sul mio sistema CentOS 6.0. Non ho provato con SELinux su; potrebbe funzionare, ma se non, è meglio disattivare SELinux pure:

vi /etc/selinux/config

Impostare SELINUX = disabled

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

… e riavviare:

reboot  

Abbiamo anche bisogno di un sistema desktop dove abbiamo installato virt-manager in modo che ci si può collegare alla console grafica delle macchine virtuali che installiamo. Sto usando un desktop di Fedora 15 qui.

 

2 l’installazione KVM

CentOS 6.0 Host KVM:

In primo luogo verificare se la CPU supporta la virtualizzazione hardware – se questo è il caso, il comando

egrep '(vmx|svm)' --color=always /proc/cpuinfo

dovrebbe visualizzare qualcosa, ad esempio come questo:

[root@server1 ~] # egrep ‘(vmx|svm)’-colore = sempre/proc/cpuinfo
bandiere: fpu vme de pse tsc msr pae mce cx8 apic settembre mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
NX mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
bandiere: fpu vme de pse tsc msr pae mce cx8 apic settembre mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
NX mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
[root@server1 ~]#

Se non viene visualizzato nulla, quindi il tuo processore non supporta la virtualizzazione hardware, e si deve fermare qui.

Ora importiamo le chiavi GPG per pacchetti software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Per installare KVM e virtinst (uno strumento per creare macchine virtuali), corriamo

yum install kvm libvirt python-virtinst qemu-kvm

Quindi avviare il demone libvirt:

/etc/init.d/libvirtd start

Per controllare se è stato installato correttamente KVM, eseguire

virsh -c qemu:///system list

Dovrebbe mostrare qualcosa come questo:

[root@server1 ~] # virsh qemu – c: / / / elenco di sistema
ID nome stato
———————————-

[root@server1 ~]#

Se viene visualizzato un errore, invece, poi qualcosa è andato storto.

Poi abbiamo bisogno di impostare un bridge di rete sul nostro server in modo che le nostre macchine virtuali sono accessibili da altri host come se fossero sistemi fisici della rete.

To do this, we install the package bridge-utils

yum install bridge-utils

… and configure a bridge. Create the file /etc/sysconfig/network-scripts/ifcfg-br0 (please use the IPADDRPREFIXGATEWAY, DNS1 and DNS2 values from the /etc/sysconfig/network-scripts/ifcfg-eth0 file); make sure you use TYPE=Bridge, not TYPE=Ethernet:

vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br0"

Modify /etc/sysconfig/network-scripts/ifcfg-eth0 as follows (comment out BOOTPROTOIPADDRPREFIXGATEWAYDNS1, and DNS2 and add BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=00:1E:90:F3:F0:02
TYPE=Ethernet
#BOOTPROTO=none
#IPADDR=192.168.0.100
#PREFIX=24
#GATEWAY=192.168.0.1
#DNS1=8.8.8.8
#DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
BRIDGE=br0

Restart the network…

/etc/init.d/network restart

… and run

ifconfig

It should now show the network bridge (br0):

[root@server1 ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:103 errors:0 dropped:0 overruns:0 frame:0
TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7434 (7.2 KiB) TX bytes:21398 (20.8 KiB)

eth0 Link encap:Ethernet HWaddr 00:1E:90:F3:F0:02
inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:19511 errors:0 dropped:0 overruns:0 frame:0
TX packets:11592 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25980124 (24.7 MiB) TX bytes:1104371 (1.0 MiB)
Interrupt:28 Base address:0x6000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3608 (3.5 KiB) TX bytes:3608 (3.5 KiB)

virbr0 Link encap:Ethernet HWaddr 6A:12:69:18:2B:05
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@server1 ~]#

 

3 Installing virt-viewer Or virt-manager On Your Fedora 15 Desktop

Fedora 15 Desktop:

We need a means of connecting to the graphical console of our guests – we can use virt-manager for this. I’m assuming that you’re using a Fedora 15 desktop.

Become root…

su

… ed eseguire…

yum install virt-manager libvirt qemu-system-x86 openssh-askpass

… per installare virt-manager.

(Se si sta utilizzando un desktop di Ubuntu 11.04, è possibile installare virt-manager come segue:

sudo apt-get install virt-manager

)

 

4 creazione di una Debian Squeeze Guest (basata su immagine) dalla riga di comando

CentOs 6.0 Host KVM:

Ora torniamo al nostro ospite di CentOS 6.0 KVM.

Da un’occhiata

man virt-install

per imparare a usare virt-install.

Creeremo il nostro macchine virtuali basate su immagine nella directory /var/lib/libvirt/immagini/ che è stato creato automaticamente quando abbiamo installato KVM nel capitolo due.

Per creare un ospite di Debian Squeeze (in modalità di bridging) con il nome vm10, 512 MB di RAM, due CPU virtuali e il disco immagine /var/lib/libvirt/images/vm10.img (con una dimensione di 12 GB), inserire il CD di Netinstall Debian Squeeze nell’unità CD e Correre

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

Naturalmente, è anche possibile creare un’immagine ISO del Debian Squeeze Netinstall CD (si prega di crearlo nella /var/lib/libvirt/immagini/ directory perché più tardi vi mostrerò come creare macchine virtuali attraverso virt-manager dal tuo desktop di Fedora, e virt-manager andrà a cercare immagini ISO nella /var/lib/libvirt/immagini/ directory)…

dd if=/dev/cdrom of=/var/lib/libvirt/images/debian-6.0.2.1-amd64-netinst.iso

… e utilizzare l’immagine ISO nel comando virt-install:

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /var/lib/libvirt/images/debian-6.0.2.1-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

L’output è il seguente:

[root@server1 ~] # virt-install– collegare qemu: / / / sistema – n vm10 – r 512 – vCPU = 2–disco path=/var/lib/libvirt/images/vm10.img,size=12 – c /var/lib/libvirt/images/debian-6.0.2.1-amd64-netinst.iso– vnc – noautoconsole – os-tipo linux – sistema operativo-variante Squeeze – accelerare – rete = ponte: br0 – hvm

A partire di installare…
L’allocazione di ‘vm10.img’ | 12 GB 00:00
Creazione di dominio… | 0 B 00:00
Installazione di dominio ancora in corso. È possibile riconnettersi a
la console per completare il processo di installazione.
[root@server1 ~]#

5 collegamento all’ospite

Desktop di Fedora 15:

L’ospite KVM sarà ora il boot dal CD Netinstall di Debian Squeeze e avviare l’installatore Debian – è per questo che abbiamo bisogno di connettersi alla console grafica dell’ospite. È possibile farlo con virt-manager sul desktop di Fedora 15.

Vai alla applicazioni > strumenti di sistema > Virtual Machine Manager per avviare virt-manager:

Quando si avvia virt-manager per la prima volta, molto probabilmente vedrete il seguente messaggio (Impossibile aprire una connessione con il daemon di gestione libvirt.). È possibile ignorare questo perché non vogliamo collegare al demone libvirt locali, ma a quella nel nostro ospite CentOS 6.0 KVM. Fare clic su Chiudi

… e andare a File > Aggiungi connessione… per connettersi al nostro ospite di CentOS 6.0 KVM:

Selezionare QEMU/KVM come Hypervisor, quindi controllo connessione all’host remoto, seleziona SSH nel menu a discesa Metodo , tipo nella root come nome utente e il nome host (Server1o l’indirizzo IP (192.168.0.100) dell’host CentOS 6.0 KVM nel campo Hostname . Quindi fare clic su Connetti:

Se questa è la prima connessione al server KVM remoto, è necessario digitare in  e fare clic su OK:

In seguito digitare la password di root dell’host CentOS 6.0 KVM:

Si dovrebbe vedere vm10 come in esecuzione. Marchio che gli ospiti e fare clic sul pulsante Apri per aprire la console grafica dell’ospite:

Digitare nuovamente la password di root dell’host KVM:

Si dovrebbe ora essere collegato alla console grafica dell’ospite e vedere l’installatore Debian:

Ora installare Debian come si farebbe normalmente su un sistema fisico. Siete pregati di notare che al termine dell’installazione, l’ospite Debian ha bisogno di un riavvio. L’ospite poi si arresta, quindi è necessario avviare nuovamente, con virt-manager o come questo sulla nostra linea di comando host CentOS 6.0 KVM:

CentOS 6.0 Host KVM:

virsh --connect qemu:///system
start vm10
quit

6 Creazione di un ospite di Debian Squeeze (Image-Based) da The Desktop con virt-manager

Invece di creare una macchina virtuale da linea di comando (come illustrato nel capitolo 4), è possibile anche creare dal desktop Fedora usando virt-manager (naturalmente, la macchina virtuale verrà creata nell’host di CentOS 6.0 KVM – nel caso in cui ti chiedi se virt-manager è in grado di creare macchine virtuali su sistemi remoti).

Per effettuare questa operazione, fare clic sul pulsante seguente:

Il dialogo di Nuova VM viene in su. Immettere un nome per la macchina virtuale (ad esempio vm11), selezionare locale installare media (immagine ISO o CD-ROM)e fare clic su Avanti:

Quindi selezionare Linux nel menu a discesa tipo di OS e Debian Squeeze nel menu a discesa versione , poi controllare uso ISO immagine e fare clic sul pulsante Sfoglia… :

Selezionare l’immagine di debian-6.0.2.1-amd64-netinst. ISO creato nel capitolo 4 e fare clic su Scegli Volume:

Ora cliccate su Avanti:

Assegnare la memoria e il numero di CPU alla macchina virtuale e fare clic su Avanti:

Ora veniamo all’archiviazione. Verifica consentono l’archiviazione per questa macchina virtuale, selezionare Crea un’immagine del disco sul disco rigido del computer, specificare la dimensione del disco rigido (ad esempio 12 GB) e verifica Allocate intero disco in questo momentoQuindi fare clic su Avanti:

Ora veniamo all’ultimo passaggio del dialogo Nuova VM . Andare nella sezione Opzioni avanzate . Selezionare vnet0 dispositivo Host (ponte ‘br0’)Questo è il nome del ponte che abbiamo creato nel capitolo 2. Fare clic su Finish in seguito:

Ora viene creata l’immagine del disco della macchina virtuale.

Successivamente, inizierà la VM. Digitare la password di root dell’host CentOS 6.0 KVM:

Si dovrebbe ora essere collegato alla console grafica dell’ospite e vedere l’installatore Debian:

Ora installare Debian come si farebbe normalmente su un sistema fisico.

7 Gestione Guest KVM dalla riga di comando

CentOS 6.0 Host KVM:

KVM ospiti possono essere gestiti tramite virsh, la shell”virtuale”. Per connettersi alla shell virtuale, eseguire

virsh --connect qemu:///system

Ecco come appare la shell virtuale:

[root@server1 ~] # virsh – collegare qemu: / / / sistema
Benvenuti a virsh, il terminale interattivo di virtualizzazione.

Tipo: ‘help’ per l’aiuto con i comandi
‘Esci’ per uscire da

virsh n.

È ora possibile digitare comandi sul guscio virtuale per gestire i vostri ospiti. Correre

help

per ottenere un elenco dei comandi disponibili:

Guida di # virsh
Comandi:

Guida di guida di stampa
dispositivo di allegare allegare il dispositivo da un file XML
disco di allegare allegare periferica disco
interfaccia di allegare allegare interfaccia di rete
autostart autostart un dominio
funzionalità di funzionalità
CD cambia la directory corrente
collegare (ri) connettersi hypervisor
Console di connettersi alla console di ospite
CPU-linea di base di calcolo base CPU
CPU-confrontare confrontare CPU host con un CPU descritto da un file XML
creare creare un dominio da un file XML
Start avvia un dominio inattivo (precedentemente definito)
distruggere distruggere un dominio
dispositivo di scollegamento scollegare il dispositivo da un file XML
staccare-disco Scollega dispositivo disco
interfaccia di staccare staccare interfaccia di rete
definire definire (ma non iniziare) un dominio da un file XML
DomiD convertire un nome di dominio o l’UUID in dominio id
domuuid convertire un id o un nome di dominio in dominio UUID
informazioni di dominio dominfo
informazioni sul processo di dominio domjobinfo
domjobabort interruzione lavoro di dominio attivo
DOMname convertire un dominio id o UUID in nome di dominio
stato del dominio domstate
domblkstat ottenga lo stats di blocco del dispositivo per un dominio
domifstat ottenere statistiche di interfaccia di rete per un dominio
dommemstat ottenere statistiche di memoria per un dominio
informazioni sulle dimensioni di domblkinfo dominio blocco dispositivo
domxml-da-nativo convertire nativo config al dominio XML
dominio di Convert domxml a nativo XML nativo config
informazioni sul dominio dumpxml in XML
modifica modificare XML di configurazione per un dominio
trovare-deposito-piscina-fonti scoprire potenziali fonti di pool di archiviazione
trovare-deposito-piscina-fonti-come trovare potenziali fonti di piscina di deposito
memoria libera di FreeCell NUMA
stampa nome host il nome host hypervisor
elencare i elenco domini
eseguire la migrazione la migrazione dominio a un altro host
la migrazione-setmaxdowntime imposta tempo di inattività massimo tollerabile
NET-autostart autostart una rete
NET di creare creare una rete da un file XML
NET-definire definire (ma non iniziare) una rete da un file XML
NET-distruggere distruggere una rete
informazioni di rete NET-dumpxml in XML
NET-modifica modifica configurazione XML per una rete
reti di NET-elenco elenco
NET-nome convertire una rete UUID in nome di rete
NET-start avviare una rete inattiva (precedentemente definita)
net-undefine annullare la definizione di una rete inattiva
NET-uuid convertire un nome di rete in rete UUID
interfacce iface-elenco elenco host fisico
iface-nome convertire un’interfaccia indirizzo MAC in nome dell’interfaccia
iface-mac convertire un nome di interfaccia per l’indirizzo MAC dell’interfaccia
informazioni sull’interfaccia iface-dumpxml in XML
iface-definire definire (ma non iniziare) un’interfaccia host fisico da un file XML
iface-undefine annullare la definizione di un’interfaccia host fisico (rimuoverlo dalla configurazione)
iface-modifica modifica configurazione XML per un’interfaccia host fisico
iface-start avvia un’interfaccia host fisico (abilitarlo / “if-up”)
iface-distruggere distruggere un’interfaccia host fisico (disattivarlo / “Se-down”)
managedsave riuscito salvataggio di uno stato di dominio
informazioni sul nodo di NodeInfo
nodedev-elenco enumerare i dispositivi su questo host
nodedev-dumpxml dettagli di dispositivo nodo in XML
dispositivo di nodo di sganciare nodedev-sganciare dal relativo driver di dispositivo
nodedev-riattaccare ricollegare nodo periferica per il driver di periferica
nodedev-reset Ripristina dispositivo nodo
nodedev-creare creare un dispositivo definito da un file XML sul nodo
nodedev-distruggere distruggere un dispositivo sul nodo
nwfilter-definire definire o aggiornare un filtro di rete da un file XML
nwfilter-undefine annullare la definizione di un filtro di rete
nwfilter-dumpxml filtro di rete in XML
filtri di rete elenco nwfilter-elenco
nwfilter-modifica modifica configurazione XML per un filtro di rete
piscina-autostart autostart una piscina
piscina-costruire costruire una piscina
piscina-creare creare una piscina da un file XML
piscina-creare-come creare un pool da un insieme di args
piscina-definire definire (ma non iniziare) una piscina da un file XML
piscina-definire-come definire un pool da un insieme di args
piscina-distruggere distruggere una piscina
piscina-delete Elimina un pool
informazioni di piscina piscina-dumpxml in XML
piscina-modifica modifica configurazione XML per un pool di archiviazione
informazioni sul pool di storage pool-info
piscine elenco elenco pool
nome del pool convertire una piscina UUID in nome del pool
piscina-Aggiorna aggiorna una piscina
piscina-start avviare un pool inattivo (precedentemente definito)
piscina-undefine undefine una piscina inattiva
piscina-uuid convertire un nome di piscina in piscina UUID
segreto-definire definire o modificare un segreto da un file XML
in XML gli attributi segreto segreto-dumpxml
segreto-insieme-valore impostato un valore segreto
segreto-get-valore uscita un valore segreto
segreto-undefine annullare la definizione di un segreto
Segreti segreti-elenco elenco
pwd stampa la directory corrente
smettere di uscire da questo terminale interattivo
uscita chiusura questo terminale interattivo
riavvio riavvio un dominio
Ripristino configurazione di un dominio da uno stato salvato in un file
Resume del resume un dominio
Salva salvare uno stato di dominio in un file
schedinfo Visualizza e imposta i parametri di pianificazione
il nucleo di un dominio in un file per l’analisi del dump di dump
arresto con grazia arresto un dominio
SETMEM modificare l’allocazione di memoria
setmaxmem modificare il limite massimo della memoria
setvcpus cambiare il numero di CPU virtuali
sospendere sospendere un dominio
console tty ttyconsole
annullare la definizione di annullare la definizione di un dominio inattivo
aggiornamento aggiornamento-dispositivo da un file XML
l’hypervisor di stampa Uri URI canonico
vol-creare creare una vol da un file XML
vol-creare-da creare una vol, usando un altro volume in ingresso
vol-creare-come creare un volume da un insieme di args
Vol-clone clonare un volume.
Vol-delete Elimina una vol
Vol-pul pulisce una vol
Vol-dumpxml vol informazioni in XML
Vol-informazioni deposito vol
Vol-elenco elenco vols
Vol-piscina restituisce il pool di archiviazione per un dato volume chiave o percorso
Vol-path restituisce il percorso del volume per un dato volume nome o la chiave
Vol-name Restituisce il nome del volume per un dato volume chiave o percorso
tasto Vol restituisce il tasto del volume per un dato volume nome o percorso
informazioni di vcpuinfo dominio vcpu
affinità di vcpupin controllo dominio vcpu
Visualizza versione
display vnc vncdisplay
creare snapshot crea uno snapshot
snapshot-corrente ottenere lo snapshot corrente
snapshot-delete Elimina uno snapshot di dominio
snapshot-dumpxml Dump XML per un’istantanea di dominio
snapshot-elenco elenco snapshot per un dominio
snapshot-revert ripristina un dominio a uno snapshot

virsh n.

list

Mostra tutti gli ospiti in esecuzione;

list --all

Mostra tutti gli ospiti, in esecuzione e inattivi:

lista di # virsh– tutti
ID nome stato
———————————-
3 esecuzione vm11
-spegnere il vm10

virsh n.

Se si modifica il file xml di un ospite (che si trova nella directory/etc/libvirt/qemu / ), è necessario ridefinire l’ospite:

define /etc/libvirt/qemu/vm10.xml

Siete pregati di notare che ogni volta che si modifica il file xml dell’ospite in/etc/libvirt/qemu /, è necessario eseguire il comando di Definire nuovamente!

Per avviare un ospite arrestato, eseguire:

start vm10

Per interrompere un ospite, eseguire

shutdown vm10

Per fermarlo immediatamente (cioè, tirare la spina di alimentazione), eseguire

destroy vm10

Sospendere un ospite:

suspend vm10

Riprendere un ospite:

resume vm10

Questi sono i comandi più importanti.

Tipo

quit

per lasciare la shell virtuale.

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp