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 5.2

Questa guida spiega come installare e utilizzare KVM per creazione ed esecuzione di macchine virtuali su un server CentOS 5.2. Vi mostrerò come creare macchine virtuali basate su immagine e anche macchine virtuali che utilizzano un volume logico (LVM). KVM è breve per Kernel-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 5.2 con il nome host Server1 e IP indirizzo 192.168.0.100 qui come il mio host KVM.

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 Ubuntu 8.10 qui.

 

2 l’installazione KVM

CentOS 5.2 Host KVM:

Correre

system-config-securitylevel

e impostare SELinux su Permissive (virt-install non funzionerà se è impostare SELinux per disabili).

Quindi 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 kmod-kvm qemu libvirt python-virtinst

Quindi riavviare il sistema:

reboot

Dopo il riavvio, dovrebbe essere caricato il modulo del kernel KVM:

lsmod | grep kvm

[root@server1 ~] # lsmod | grep kvm
kvm_amd 50452 0
KVM 109264 1 kvm_amd
[root@server1 ~]#

(Questa uscita è da un sistema con un processore AMD-V. Se il sistema utilizza una CPU di Intel VT, si dovrebbe visualizzare qualcosa di simile kvm_intel.)

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 BOOTPROTOBROADCASTIPADDRNETMASK and NETWORK values from the /etc/sysconfig/network-scripts/ifcfg-eth0 file):

vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes

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

vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0
#BOOTPROTO=static
#BROADCAST=192.168.0.255
HWADDR=00:10:A7:05:AF:EB
#IPADDR=192.168.0.100
#NETMASK=255.255.255.0
#NETWORK=192.168.0.0
ONBOOT=yes
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:10:A7:05:AF:EB
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1160 (1.1 KiB) TX bytes:14875 (14.5 KiB)

eth0 Link encap:Ethernet HWaddr 00:10:A7:05:AF:EB
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13662 errors:7 dropped:160 overruns:4 frame:0
TX packets:11646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15144608 (14.4 MiB) TX bytes:1379942 (1.3 MiB)
Interrupt:74 Base address:0xcc00

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:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4308 (4.2 KiB) TX bytes:4308 (4.2 KiB)

virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:9987 (9.7 KiB)

[root@server1 ~]#

 

3 Installing virt-viewer Or virt-manager On Your Ubuntu 8.10 Desktop

Ubuntu 8.10 Desktop:

We need a means of connecting to the graphical console of our guests – we can use virt-manager (see KVM Guest Management With Virt-Manager On Ubuntu 8.10) for this. I’m assuming that you’re using an Ubuntu 8.10 desktop.

Run

sudo aptitude install virt-manager

per installare virt-manager.

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

Diventate root…

su

… ed eseguire

yum install virt-manager

4 creazione di un ospite Lenny Debian (basato su immagine)

CentOs 5.2 Host KVM:

Ora torniamo al nostro ospite di CentOS 5.2 KVM.

Da un’occhiata

man virt-install

per imparare a usare virt-install.

Per creare un ospite di Debian Lenny (in modalità bridging) con il nome vm10, 512 MB di RAM, due CPU virtuali e il disco immagine ~/vm10.qcow2 (con una dimensione di 12 GB), inserire il Debian Lenny Netinstall CD nell’unità CD-ROM ed eseguire

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f ~/vm10.qcow2 -s 12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant generic26 --accelerate --network=bridge:br0 --hvm

(La pagina del man di virt-install Mostra i valori validi per ..–os-tipo e – os-varianteLa versione di virt-install che viene fornito con CentOS 5.2 non sa Debian Lenny, quindi usiamo generic26 per ..–os-variante.)

Naturalmente, è anche possibile creare un’immagine ISO del Debian Lenny Netinstall CD…

dd if=/dev/cdrom of=~/debian-500-amd64-netinst.iso

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

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 -f ~/vm10.qcow2 -s 12 -c ~/debian-500-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant generic26 --accelerate --network=bridge:br0 --hvm

L’output è il seguente:

[root@server1 ~] # virt-install– collegare qemu: / / / sistema – n vm10 – r 512 – vCPU = 2 -f ~/vm10.qcow2 -s 12 – c ~/debian-500-amd64-netinst.iso– vnc – noautoconsole – os-tipo linux – sistema operativo-variante generic26 – accelerare – rete = ponte: br0 – hvm

A partire di installare…
Creazione di file di archiviazione… 100% | = = = | 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

Ubuntu 8.10 Desktop:

L’ospite KVM sarà ora il boot dal CD Netinstall Lenny Debian 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 Ubuntu 8.10 (Vedi KVM Guest Management con Virt-Manager su Ubuntu 8.10).

Correre

sudo virt-manager

sul desktop di Ubuntu per avviare virt-manager.

(Se siete su un desktop di Fedora 10, eseguire:

su
virt-manager

)

In virt-manager, connettersi all’host KVM:

Digitare la password di root dell’host 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 5.2 KVM:

CentOS 5.2 Host KVM:

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

In seguito, è possibile collegare all’ospite nuovamente con virt-manager e configurare l’ospite. Se si installa OpenSSH (pacchetto openssh-server) nel guest, è possibile connettersi ad esso con un client SSH (ad esempio PuTTY).

6 gestione Guest KVM

CentOS 5.2 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à
collegare (ri) connettersi hypervisor
Console di connettersi alla console di ospite
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
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
informazioni sul dominio dumpxml in XML
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
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
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
informazioni sul nodo di NodeInfo
smettere di uscire da 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
l’hypervisor di stampa Uri URI canonico
informazioni di vcpuinfo dominio vcpu
affinità di vcpupin controllo dominio vcpu
Visualizza versione
display vnc vncdisplay

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
———————————-
2 in esecuzione 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.

 

7 Creazione di un Guest basato su LVM

CentOS 5.2 Host KVM:

Basato su LVM ospiti presentano alcuni vantaggi rispetto gli ospiti basati su immagine. Essi non sono così pesanti sul disco rigido IO, e sono più facili da eseguire il backup (utilizzo di snapshot di LVM).

Per utilizzare gli ospiti basato su LVM, è necessario un gruppo di volumi che ha spazio libero non allocato a qualsiasi volume logico. In questo esempio, utilizzare il gruppo di volume /dev/VolGroup00 con una dimensione di circa 148 GB…

vgdisplay

[root@server1 ~] # vgdisplay
/ dev/hda: apertura non riuscita: nessun mezzo trovato
—Gruppo di volume–
VolGroup00 nome VG
ID di sistema
Formato lvm2
Metadati zone 1
Metadati sequenze No 3
VG accesso in lettura/scrittura
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 148.53 GB
PE Size 32.00 MB
Total PE 4753
Alloc PE / Size 968 / 30.25 GB
Free PE / Size 3785 / 118.28 GB
VG UUID 5faE1k-DkMu-JUEk-K0JV-B9ta-Nyaf-n7tngf

[root@server1 ~]#

… that contains the logical volume /dev/VolGroup00/LogVol00 with a size of approx. 30GB and the logical volume /dev/VolGroup00/LogVol01 (about 1GB) – the rest is not allocated and can be used for KVM guests:

lvdisplay

[root@server1 ~]# lvdisplay
/dev/hda: open failed: No medium found
— Logical volume —
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID qzC8v6-cLyi-Pr4g-BjJv-35Xr-cEJM-LBVs7G
LV Write Access read/write
LV Status available
# open 1
LV Size 29.28 GB
Current LE 937
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:0

— Logical volume —
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID xA3e1Z-mEc9-rGT1-WcAu-TjF4-lbf3-6LvFaj
LV Write Access read/write
LV Status available
# open 1
LV Size 992.00 MB
Current LE 31
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:1

[root@server1 ~]#

I will now create the virtual machine vm11 as an LVM-based guest. I want vm11 to have 20GB of disk space, so I create the logical volume /dev/VolGroup00/vm11 with a size of 20GB:

lvcreate -L20G -n vm11 VolGroup00

In seguito, usiamo il comando virt-install nuovamente per creare l’ospite:

virt-install --connect qemu:///system -n vm11 -r 512 --vcpus=2 -f /dev/VolGroup00/vm11 -c ~/debian-500-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant generic26 --accelerate --network=bridge:br0 --hvm

Siete pregati di notare che invece di -f ~/vm11.qcow2 io uso -f /dev/VolGroup00/vm11, e non mi serve l’opzione -s per definire lo spazio su disco più perché lo spazio su disco è definito dalla dimensione del volume logico vm11 (20 GB).

Ora seguire il capitolo 5 per installare quell’ospite.

 

Piaciuto l'articolo? Condividilo sui social!

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