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 Xen su CentOS 6.3 (x86_64) (paravirtualizzazione & virtualizzazione Hardware)

In questa esercitazione vengono fornite istruzioni dettagliate su come installare Xen (versione 4.1. x) su un sistema CentOS 6.3(x86_64).

Xen consente di creare sistemi operativi guest (* nix sistemi operativi come Linux e FreeBSD), così chiamato “macchine virtuali” odomUs, sotto un sistema operativo host (dom0). Utilizzando Xen è possibile separare le applicazioni in diverse macchine virtuali che sono totalmente indipendenti gli uni dagli altri (ad esempio una macchina virtuale per un server di posta, una macchina virtuale per un sito web ad alto traffico, un’altra macchina virtuale che serve dei vostri clienti siti Web, una macchina virtuale per DNS, ecc.), ma ancora utilizzare lo stesso hardware. Ciò consente di risparmiare denaro, e ciò che è ancora più importante, è più sicuro. Se la macchina virtuale del server DNS viene violata, non ha alcun effetto sulle altre macchine virtuali. Inoltre, è possibile spostare macchine virtuali da un server Xen a quello successivo.

Io uso CentOS 6.3 (x86_64) per l’host OS (dom0) e l’ospite OS (domU).

Questo howto è da intendersi come una guida pratica; non copre gli sfondi teorici. Sono trattati in un sacco di altri documenti nel web.

Questo documento viene fornito senza garanzia di alcun tipo! Voglio dire che questo non è l’unico modo di impostazione di un tale sistema. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo di che prendere. Io non rilasciano alcuna garanzia che questo funziona per voi!

 

1 Nota preliminare

Questa guida vi spiegherà come configurare macchine virtuali basate su immagine e anche macchine virtuali basate su LVM.

Assicurarsi che SELinux è disabilitato o permissiva:

vi /etc/sysconfig/selinux
# 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 - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

Se dovuto modificare /etc/sysconfig/selinux, si prega di riavviare il sistema:

reboot  

 

2 creare un Bridge di rete

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.

Per effettuare questa operazione, installare il pacchetto bridge-utils

yum install bridge-utils

… e configurare un bridge. Creare il file /etc/sysconfig/network-scripts/ifcfg-br0 (si prega di utilizzare i valori IPADDRprefissoGATEWAY, DNS1 e DNS2 dal file /etc/sysconfig/network-scripts/ifcfg-eth0 ); Assicurarsi di utilizzare tipo = ponte, non 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"

Modificare come segue /etc/sysconfig/network-scripts/ifcfg-eth0 (commento BOOTPROTOIPADDRprefissoGATEWAYDNS1DNS2 e aggiungere ponte = br0):

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
#BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
UUID="73cb0b12-1f42-49b0-ad69-731e888276ff"
HWADDR=00:1E:90:F3:F0:02
#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"
BRIDGE=br0

Riavviare la rete…

/etc/init.d/network restart

… ed eseguire

ifconfig

Ora dovrebbe mostrare il bridge di rete (br0):

[root@server1 ~] # ifconfig
br0 Link encap 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 pacchetti: 8 errori: 0:0 overruns: 0 frame: 0
TX pacchetti: 27 errori: 0:0 overruns: 0 carrier: 0
collisioni: 0 txqueuelen:0
RX bytes: 460 (460,0 b) TX bytes: 2298 (2,2 KiB)

eth0 Link encap HWaddr 00:1E:90:F3:F0:02
inet6 addr: fe80::21e:90ff:fef3:f002 / 64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric: 1
RX pacchetti: 18455 errori: 0:0 overruns: 0 frame: 0
TX pacchetti: 11861 errori: 0:0 overruns: 0 carrier: 0
collisioni: 0 txqueuelen:1000
RX bytes:26163057 (24.9 MiB) TX bytes:1100370 (1.0 MiB)
Interrupt:25 Base address:0xe000

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

[root@server1 ~]#

 

3 Installing Xen

First check if your CPU supports hardware virtualization – if this is the case, the command

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

should display something, e.g. like this:

[root@server1 ~]# egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep 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
flags : fpu vme de pse tsc msr pae mce cx8 apic sep 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 ~]#

If nothing is displayed, then your processor doesn’t support hardware virtualization. This means you can use only paravirtualization with Xen, but not hardware virtualization.

As CentOS 6 is based on RedHat 6, and RedHat has dropped support for Xen in version 6, we need to get Xen from a third-party repository. We can enable the repo as follows:

yum install http://au1.mirror.crc.id.au/repo/kernel-xen-release-6-3.noarch.rpm

To install Xen, we now simply run

yum install kernel-xen xen

This installs Xen and a Xen kernel on our CentOS system.

Before we can boot the system with the Xen kernel, please check your GRUB bootloader configuration. We open /boot/grub/menu.lst:

vi /boot/grub/menu.lst

The first listed kernel should be the Xen kernel that you’ve just installed:

[...]
title CentOS (2.6.32.57-2.el6xen.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32.57-2.el6xen.x86_64 ro root=/dev/mapper/vg_server1-LogVol00 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/LogVol01 rd_LVM_LV=vg_server1/LogVol00 rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32.57-2.el6xen.x86_64.img
[...]

We need to modify that section so that the Xen hypervisor gets loaded first. In the kernel /vmlinuz… line, replace the first word kernel with module. Do the same in the next line – replace the first word initrd with module in the initrd /initramfs… line. Then add the line kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin after the root line and before the first module line (if you have more than one CPU core, you can specify another number than 1 for dom0_max_vcpus). The final kernel section should look like this:

[...]
title CentOS (2.6.32.57-2.el6xen.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin
        module /vmlinuz-2.6.32.57-2.el6xen.x86_64 ro root=/dev/mapper/vg_server1-LogVol00 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/LogVol01 rd_LVM_LV=vg_server1/LogVol00 rd_NO_DM rhgb quiet
        module /initramfs-2.6.32.57-2.el6xen.x86_64.img
[...]

Modificare il valore predefinito 0 (in modo che il primo kernel (kernel Xen) verrà avviato per impostazione predefinita):

[...]
default=0
[...]

Il completo /boot/grub/menu.lst dovrebbe assomigliare a questo:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_server1-LogVol00
#          initrd /initrd-[generic-]version.img
#boot=/dev/sde
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32.57-2.el6xen.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin
        module /vmlinuz-2.6.32.57-2.el6xen.x86_64 ro root=/dev/mapper/vg_server1-LogVol00 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/LogVol01 rd_LVM_LV=vg_server1/LogVol00 rd_NO_DM rhgb quiet
        module /initramfs-2.6.32.57-2.el6xen.x86_64.img
title CentOS (2.6.32-279.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_server1-LogVol00 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/LogVol01 rd_LVM_LV=vg_server1/LogVol00 rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-279.el6.x86_64.img

Prima abbiamo riavviare, installiamo il libvirt e python-virtinst (che contiene lo strumento virt-install che utilizzeremo più avanti per installare macchine virtuali Xen) pacchetti:

yum install libvirt python-virtinst

Perché il pacchetto libvirt da CentOS 6/RedHat 6 non ha il supporto per Xen, dobbiamo ricostruire con supporto a Xen. Per fare questo, installiamo ora alcuni prerequisiti:

yum groupinstall 'Development Tools'
yum install python-devel xen-devel libxml2-devel xhtml1-dtds readline-devel ncurses-devel libtasn1-devel gnutls-devel augeas libudev-devel libpciaccess-devel yajl-devel sanlock-devel libpcap-devel libnl-devel avahi-devel libselinux-devel cyrus-sasl-devel parted-devel device-mapper-devel numactl-devel libcap-ng-devel netcf-devel libcurl-devel audit-libs-devel systemtap-sdt-devel libblkid-devel scrub

Scopriamo la nostra versione di libvirt :

rpm -qa | grep libvirt

[root@server1 ~] # rpm – qa | grep libvirt
libvirt-client-0.9.10-21.el6_3.3.x86_64
libvirt-0.9.10-21.el6_3.3.x86_64
libvirt-python-0.9.10-21.el6_3.3.x86_64
[root@server1 ~]#

La 0.9.10, quindi scaricare il pacchetto appropriato src in /root/src e installarlo:

mkdir/root/src
CD/root/src
wget http://vault.centos.org/6.3/os/Source/SPackages/libvirt-0.9.10-21.el6.src.rpm
rpm -i libvirt-0.9.10-21.el6.src.rpm

L’ultimo comando mostrerà alcuni avvisi che non si possono ignorare:

Avvertenza: mockbuild utente non esiste – con radice
avviso: gruppo mockbuild non esiste – con radice

Successivamente abbiamo patch Xen supporto nelle fonti libvirt :

wget http://pasik.reaktio.net/xen/patches/libvirt-spec-rhel6-enable-xen.patch
CD /root/rpmbuild/SPECS
CP – un libvirt.spec libvirt.spec.orig
patch – p0 < ~/src/libvirt-spec-rhel6-enable-xen.patch

Ora costruiamo un nuovo pacchetto di libvirt:

rpmbuild -bb libvirt.spec

Alla fine del processo di compilazione si dovrebbe vedere qualcosa come questo:

Ha scritto: /root/rpmbuild/RPMS/x86_64/libvirt-0.9.10-21.el6.x86_64.rpm
Ha scritto: /root/rpmbuild/RPMS/x86_64/libvirt-client-0.9.10-21.el6.x86_64.rpm
Ha scritto: /root/rpmbuild/RPMS/x86_64/libvirt-devel-0.9.10-21.el6.x86_64.rpm
Ha scritto: /root/rpmbuild/RPMS/x86_64/libvirt-lock-sanlock-0.9.10-21.el6.x86_64.rpm
Ha scritto: /root/rpmbuild/RPMS/x86_64/libvirt-python-0.9.10-21.el6.x86_64.rpm
Ha scritto: /root/rpmbuild/RPMS/x86_64/libvirt-debuginfo-0.9.10-21.el6.x86_64.rpm

Andare nella directory dove sono stati creati i nuovi pacchetti (/radice/rpmbuild/RPMS/x86_64/ in questo caso)…

cd /root/rpmbuild/RPMS/x86_64/

… e installare i nuovi pacchetti di libvirt (con supporto a Xen) come segue:

rpm -Uvh --force libvirt-0.9.10-21.el6.x86_64.rpm libvirt-client-0.9.10-21.el6.x86_64.rpm libvirt-python-0.9.10-21.el6.x86_64.rpm

In seguito, abbiamo riavviare il sistema:

reboot

Il sistema dovrebbe ora avvio automaticamente il nuovo kernel Xen. Una volta avviato il sistema, possiamo verificare che eseguendo

uname -r

[root@server1 ~] # uname – r
2.6.32.57-2.el6xen.x86_64
[root@server1 ~]#

Così è davvero usare il nuovo kernel Xen!

Ora possiamo eseguire

xm list

per controllare se ha iniziato a Xen. Esso dovrebbe elencare dominio-0 (dom0):

[root@server1 ~] # xm list
ID nome Mem vCPU stato time (s)
Dominio-0 0 1024 1 r—18,9
[root@server1 ~]#

Anziché utilizzare il comando xm , d’ora in poi userò il comando virsh per gestire macchine virtuali Xen. Questo è il modo preferito come stiamo usando libvirt.

virsh list

dovrebbe mostrare questo:

[root@server1 ~] # virsh list
ID nome stato
—————————————————-
Esecuzione di dominio-0 0

[root@server1 ~]#

Paravirtualizzazione 4

4.1 creazione di una macchina virtuale basato su immagine

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

CentOS è un simpatico strumento chiamato virt-install con cui possiamo creare macchine virtuali per Xen. Per avviarlo, corriamo semplicemente

virt-install --prompt --network bridge=br0 --virt-type=xen

(Dobbiamo specificare il nostro bridge di rete con -bridge di rete = br0 modo che la macchina virtuale utilizza il nostro bridge di rete che abbiamo creato nel capitolo 2.)

Gli strumenti pone qualche domanda prima di creare una macchina virtuale. Voglio chiamare la mia prima macchina virtuale vm01, con 1024 MB di RAM e una dimensione di disco di 10 GB. Voglio conservarlo nel file /var/lib/libvirt/images/vm01.img:

Ti piacerebbe un guest completamente virtualizzato (Sì o no)?Questo vi permetterà di eseguire sistemi operativi non modificati.
< No
Qual è il nome della macchina virtuale?
<-vm01
Quanta RAM deve essere allocato (in megabyte)?
< – 1024
Quello che vuoi utilizzare come disco (percorso file)?
<-/var/lib/libvirt/images/vm01.img
Quanto grande volete il disco (/ var/lib/libvirt/images/vm01.img) per essere (in gigabyte)?
< – 10
Qual è l’URL di installazione?
<-http://ftp.tu-chemnitz.de/pub/linux/centos/6.3/os/x86_64

In questo capitolo voglio creare un guest paravirtualizzati, non completamente (hardware) guest virtualizzato, ecco perché rispondo la prima domanda con Nessun.

Come installare URL, è necessario specificare un mirror vicino dove il programma di installazione può scaricare tutti i file necessari per l’installazione di CentOS 6.3 nella nostra macchina virtuale. È possibile trovare un elenco dei mirror di CentOS qui: http://www.centos.org/modules/tinycontent/index.php?id=13

Dopo abbiamo risposto tutte le domande, virt-install inizia il normale programma di installazione di CentOS 6.3 (in modalità testo) nella nostra macchina virtuale vm01 . Dopo pochi istanti il programma di installazione vi dà la scelta di utilizzare VNC o di continuare con il programma di installazione di modalità testo. Utilizzando la modalità di testo non è nessun problema se si ha familiarità con il programma di installazione di CentOS, ma se ti piace un po’ più di comfort, seleziona Start VNC qui:

Nella schermata successiva è possibile fornire una password per la connessione VNC (scelta consigliata). Se non si desidera utilizzare una password, non colpire password:

In seguito, il programma di installazione ti dice come è possibile connettersi al programma di installazione tramite VNC (192.168.0.15:1 in questo caso):

Ora aprire un client VNC (come TightVNC) e digitare i dettagli di connessione (192.168.0.15:1 in questo caso) e fare clic su Connetti:

Se è stata specificata una password per la connessione VNC, è ora necessario fornirlo:

In seguito è possibile utilizzare il programma di installazione di CentOS nel tuo client VNC:

Dopo l’installazione, abbiamo soggiornato presso il console vm01 . Per lasciarlo, digitare CTRL +] se sei al console, o CTRL + 5 , se si sta utilizzando PuTTY. Sarete quindi torna alla console del dom0 .

Correre

virsh console vm01 

per accedere nuovamente quella macchina virtuale (tipo CTRL +] se sei presso la console, o CTRL + 5 , se si sta utilizzando PuTTY per tornare a dom0), o utilizzare un client SSH per connettersi ad esso.

Per ottenere un elenco di macchine virtuali in esecuzione, digitare

virsh list 

L’output dovrebbe assomigliare a questo:

[root@server1 ~] # virsh list
ID nome stato
———————————-
Esecuzione di dominio-0 0
2 vm01 inattivo

[root@server1 ~]#

Per arrestare vm01, procedere come segue:

virsh shutdown vm01 

Per avviare nuovamente vm01 , eseguire

virsh start vm01 

Qui ci sono i comandi più importanti di Xen:

virsh avviare < nome > – avvia una macchina virtuale.
arresto di virsh < nome > – fermata una macchina virtuale.
virsh distruggere < nome > – fermata una macchina virtuale immediatamente senza spegnerlo. È come se si spegne il tasto di accensione. 
virsh elenco – elenco di tutti i sistemi in esecuzione.
virsh console < nome > – Log in su una macchina virtuale.
Guida di virsh – elenco di tutti i comandi.

 

4.2 Creazione di una macchina virtuale basato su LVM (paravirtualizzazione)

Questo capitolo spiega come è possibile configurare macchine virtuali basate su LVM invece di macchine virtuali che utilizzano immagini disco. Macchine virtuali che utilizzano immagini disco sono molto lento e pesante sul disco IO.

In questo esempio sto usando un host di CentOS 6.3 con il LVM volume gruppo /dev/VolGroup00 che ha circa 465 GB di spazio. /dev/VolGroup00 contiene due volumi logici, /dev/VolGroup00/LogVol00 e /dev/VolGroup00/LogVol01 che consumano circa 104 GB di spazio – il resto non viene allocato e può essere utilizzato per creare volumi logici per nostro virtuale macchine:

vgdisplay

[root@server1 ~] # vgdisplay
—Gruppo di volume–
VolGroup00 nome VG
ID di sistema
Formato lvm2
Metadati zone 1
Metadati sequenze No 3
VG accesso in lettura/scrittura
VG stato ridimensionabile
MAX LV 0
Cur LV 2
Aprire LV 2
Max PV 0
Cur PV 1
Atto PV 1
VG dimensioni 465.26 GiB
PE dimensione 4.00 MiB
Totale PE 119106
Alloc PE / dimensioni 26250 / 102.54 GiB
Free PE / Size 92856 / 362.72 GiB
LCdZgy-jVrp-S92Q-RQeI-H87G-jiko-4fmaHF VG UUID

[root@server1 ~]#

lvdisplay

[root@server1 ~] # lvdisplay
—Volume logico–
Nome LV /dev/VolGroup00/LogVol01
VolGroup00 nome VG
UUID di LV n5remv-KYEE-O0Ry-g2r6-OrUe-rjyV-x65rHu
Accesso in scrittura LV lettura/scrittura
Condizione di LV disponibile
# aprire 1
LV dimensioni 4.88 GiB
LE corrente 1250
Segmenti 1
Allocazione di ereditare
Auto avanti settori di lettura
-attualmente impostato a 256
252:0 dispositivo di blocco

—Volume logico–
Nome LV /dev/VolGroup00/LogVol00
VolGroup00 nome VG
LV UUID CnvnGP-sDL8-OtBU-OzTT-VjZQ-ZIUo-yzISkX
Accesso in scrittura LV lettura/scrittura
Condizione di LV disponibile
# aprire 1
LV dimensioni 97,66 GiB
Corrente LE 25000
Segmenti 1
Allocazione di ereditare
Auto avanti settori di lettura
-attualmente impostato a 256
252:1 dispositivo di blocco

[root@server1 ~]#

Voglio creare la macchina virtuale vm02 che utilizza ora il volume logico /dev/VolGroup00/vm02Voglio che la macchina virtuale per avere uno spazio su disco di 10GB, quindi creo il volume logico /dev/VolGroup00/vm02 come segue:

lvcreate -L10G -n vm02 VolGroup00

In seguito possiamo eseguire

virt-install --prompt --network bridge=br0 --virt-type=xen

ancora una volta:

Ti piacerebbe un guest completamente virtualizzato (Sì o no)? Questo vi permetterà di eseguire sistemi operativi non modificati.
< No
Qual è il nome della macchina virtuale?
<– vm02
Quanta RAM deve essere allocato (in megabyte)?
< – 1024
Quello che vuoi utilizzare come disco (percorso file)?
<-/dev/VolGroup00/vm02
Qual è l’URL di installazione?
<-http://ftp.tu-chemnitz.de/pub/linux/centos/6.3/os/x86_64

Come il percorso del file su disco, specifichiamo il nostro nuovo gruppo di volume /dev/VolGroup00/vm02Siete pregati di notare che virt-install non chiedere per lo spazio su disco più perché lo spazio su disco è determinato dalla dimensione del volume logico (10 GB).

4.3 utilizzo virt-manager per creare e gestire macchine virtuali

Invece di usare VNC o un programma di installazione basato su testo, noi possiamo usare virt-manager su un desktop Linux per creare e gestire macchine virtuali. In questo esempio, sto usando un desktop di Fedora 17.

Inizializzare una nuova macchina virtuale sull’host CentOS 6.3 (in questo esempio, è vm06):

virt-install --prompt --network bridge=br0 --virt-type=xen --vnc --noautoconsole

I parametri –vnc-noautoconsole sono importanti – ci permettono di collegare il programma di installazione con virt-manager.

[root@server1 ~] # virt-install–rapido – bridge di rete = br0 – virt-tipo = xen– vnc – noautoconsole
Ti piacerebbe un guest completamente virtualizzato (Sì o no)?Questo vi permetterà di eseguire sistemi operativi non modificati.

< No
Qual è il nome della macchina virtuale?
<-vm06
Quanta RAM deve essere allocato (in megabyte)?
< – 1024
Quello che vuoi utilizzare come disco (percorso file)?
<-/var/lib/libvirt/images/vm06.img
Quanto grande volete il disco (/ var/lib/libvirt/images/vm06.img) per essere (in gigabyte)?
< – 10
Qual è l’URL di installazione?
<-http://ftp.tu-chemnitz.de/pub/linux/centos/6.3/os/x86_64

A partire di installare…
Recuperare il file .treeinfo… | 798 B 00:00…
Recupero file vmlinuz… | 7.5 MB 00:01…
Recuperare il file initrd. img… | 59 MB 00:10…
L’allocazione di ‘vm06.img’ | 10 GB 00:00
Creazione di dominio… | 0 B 00:01
Installazione di dominio ancora in corso. È possibile riconnettersi a
la console per completare il processo di installazione.
[root@server1 ~]#

Come vedete il comando restituisce il prompt, quindi dobbiamo usare virt-manager ora per completare l’installazione di VM.

È possibile installare virt-manager come segue su un desktop di Fedora 17 – aprire un terminale e diventare root:

su

Quindi installare virt-manager:

yum install virt-manager openssh-askpass 

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

Digitare la password:

Quando si avvia virt-manager per la prima volta, molto probabilmente si vedrà il messaggio di pacchetti necessari per l’utilizzo di KVMÈ possibile ignorare questo perché non vogliamo collegare al demone libvirt locali, ma a quella nel nostro ospite CentOS 6.3 Xen. Fare clic su No… e andare a File > Aggiungi connessione… per connettersi al nostro ospite di CentOS 6.3 Xen:

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

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

In seguito digitare la password di root dell’host CentOS 6.3 Xen:

Si dovrebbe vedere vm06 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 Xen:

Si dovrebbe ora essere collegato alla console grafica dell’ospite e vedere il programma di installazione di CentOS:

Ora installare CentOS come si farebbe normalmente su un sistema fisico. Siete pregati di notare che al termine dell’installazione, l’ospite di CentOS 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.3 Xen:

CentOS 6.3 Host Xen:

virsh start vm06 

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

5 full Virtualization (virtualizzazione Hardware)

Il processo per la creazione di un guest completamente virtualizzato non è che molto diverso da quello per la creazione di un guest paravirtualizzati, tranne che per la virtualizzazione completa, avete bisogno di virt-manager (installazione non può essere completata sulla riga di comando) e installazione media ( CD/DVD o un’immagine ISO ).

 

5.1 creazione di un Guest completamente virtualizzato sulla riga di comando

Perché abbiamo bisogno di supporto di installazione, ora possono essere immessi CentOS 6.3 DVD (quello primo) nell’unità DVD, o si Scarica il file iso di CentOS 6.3 e metterlo /var/lib/libvirt/immagini/ directory (deve essere alla /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). È anche possibile creare un file iso da DVD come segue:

dd if=/dev/cdrom of=/var/lib/libvirt/images/CentOS-6.3-x86_64-bin-DVD1.iso

L’installazione del guest può essere avviato come segue:

virt-install --prompt --network bridge=br0 --virt-type=xen --vnc --noautoconsole

[root@server1 ~] # virt-install–rapido – bridge di rete = br0 – virt-tipo = xen– vnc – noautoconsole
Ti piacerebbe un guest completamente virtualizzato (Sì o no)? Questo vi permetterà di eseguire sistemi operativi non modificati.

< Sì
Qual è il nome della macchina virtuale?
<-vm03
Quanta RAM deve essere allocato (in megabyte)?
< – 1024
Quello che vuoi utilizzare come disco (percorso file)?
<-/var/lib/libvirt/images/vm03.img (è possibile anche specificare un volume logico qui, vedere il capitolo 4.2)
Quanto grande volete il disco (/ var/lib/libvirt/images/vm03.img) per essere (in gigabyte)?
< – 10
Che cosa è l’installazione CD-ROM/ISO o URL?
<-/ dev/cdrom (è inoltre possibile specificare un file iso qui, ad es. /var/lib/libvirt/images/CentOS-6.3-x86_64-bin-DVD1.iso)

A partire di installare…
Creazione di dominio… | 0 B 00:01
Installazione di dominio ancora in corso. È possibile riconnettersi a
la console per completare il processo di installazione.
[root@server1 ~]#

Questo è tutto! Ora deve aprire virt-manager e completare l’installazione di guest, come illustrato nel capitolo 4.3.

 

5.2 Creazione di un CentOS 6.3 Guest (Image-Based) da The Desktop con virt-manager

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

(Ho provato questo per un guest paravirtualizzati pure, ma ha ricevuto un errore dopo che è stato caricato initrd. img – quindi questo capitolo è solo per gli ospiti completamente virtualizzato).

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 vm07), selezionare locale installare media (immagine ISO o CD-ROM)e fare clic su Avanti:

Quindi controllare uso ISO immagine e fare clic sul pulsante Sfoglia… :

Selezionare l’immagine di CentOS-6.3-x86_64-bin-DVD1.iso e fare clic su Scegli Volume:

Ora selezionare Linux nel menu a discesa tipo di OS e RedHat Enterprise Linux 6 nel menu a discesa versione , quindi fare clic 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 10 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 Host dispositivo eth0 (ponte ‘br0’)Questo è il nome del ponte che abbiamo creato nel capitolo 2. Fare clic su Finish in seguito:

Ora viene creato l’immagine del disco della macchina virtuale:

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

Si dovrebbe ora essere collegato alla console grafica dell’ospite e vedere il programma di installazione di CentOS:

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

6 gestione di un Guest di Xen da riga di comando

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

virsh

Ecco come appare la shell virtuale:

[root@server1 ~] # virsh
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 raggruppati:

Gestione del dominio (parola chiave della guida ‘dominio’):
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
blkiotune ottenere o impostare i parametri blkio
blockpull popolare un disco dalla sua immagine di backup.
blockjob gestire le operazioni di blocco attivo.
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
definire definire (ma non iniziare) un dominio da un file XML
distruggere (fermata) di 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
DomiD convertire un nome di dominio o l’UUID in dominio id
domjobabort interruzione lavoro di dominio attivo
informazioni sul processo di dominio domjobinfo
DOMname convertire un dominio id o UUID in nome di dominio
domuuid convertire un id o un nome di dominio in dominio UUID
domxml-da-nativo convertire nativo config al dominio XML
dominio di Convert domxml a nativo XML nativo config
il nucleo di un dominio in un file per l’analisi del dump di dump
informazioni sul dominio dumpxml in XML
modifica modificare XML di configurazione per un dominio
iniettare-nmi iniettare NMI per l’ospite
tasto Send invia keycodes all’ospite
managedsave riuscito salvataggio di uno stato di dominio
managedsave-remove rimuovere gestito salva di un dominio
maxvcpus connessione vcpu massimo
memtune ottenere o impostare i parametri di memoria
eseguire la migrazione la migrazione dominio a un altro host
la migrazione-setmaxdowntime imposta tempo di inattività massimo tollerabile
la migrazione-setspeed impostare la larghezza di banda massima migrazione
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
Salva-immagine-definire ridefinire il codice XML per un dominio di salvato file dello stato
Salva-immagine-dumpxml stato dominio informazioni salvate in formato XML
Salva-immagine-modifica modifica XML per il file di stato salvato di un dominio
schedinfo Visualizza e imposta i parametri di pianificazione
Screenshot di prendere uno screenshot di una console di dominio corrente e memorizzarlo in un file
setmaxmem modificare il limite massimo della memoria
SETMEM modificare l’allocazione di memoria
setvcpus change number of virtual CPUs
shutdown gracefully shutdown a domain
start start a (previously defined) inactive domain
suspend suspend a domain
ttyconsole tty console
undefine undefine an inactive domain
update-device update device from an XML file
vcpucount domain vcpu counts
vcpuinfo detailed domain vcpu information
vcpupin control or query domain vcpu affinity
version show version
vncdisplay vnc display

Domain Monitoring (help keyword ‘monitor’):
domblkinfo domain block device size information
domblklist list all domain blocks
domblkstat get device block stats for a domain
domcontrol domain control interface state
domifstat get network interface stats for a domain
dominfo domain information
dommemstat get memory statistics for a domain
domstate domain state
list list domains

Host and Hypervisor (help keyword ‘host’):
capabilities capabilities
connect (re)connect to hypervisor
freecell NUMA free memory
hostname print the hypervisor hostname
nodecpustats Prints cpu stats of the node.
nodeinfo node information
nodememstats Prints memory stats of the node.
qemu-attach QEMU Attach
qemu-monitor-command QEMU Monitor Command
sysinfo print the hypervisor sysinfo
uri print the hypervisor canonical URI

Interface (help keyword ‘interface’):
iface-begin create a snapshot of current interfaces settings, which can be later commited (iface-commit) or restored (iface-rollback)
iface-commit commit changes made since iface-begin and free restore point
iface-define define (but don’t start) a physical host interface from an XML file
iface-destroy destroy a physical host interface (disable it / “if-down”)
iface-dumpxml interface information in XML
iface-edit edit XML configuration for a physical host interface
iface-list list physical host interfaces
iface-mac convert an interface name to interface MAC address
iface-name convert an interface MAC address to interface name
iface-rollback rollback to previous saved configuration created via iface-begin
iface-start start a physical host interface (enable it / “if-up”)
iface-undefine undefine a physical host interface (remove it from configuration)

Network Filter (help keyword ‘filter’):
nwfilter-define define or update a network filter from an XML file
nwfilter-dumpxml network filter information in XML
nwfilter-edit edit XML configuration for a network filter
filtri di rete elenco nwfilter-elenco
nwfilter-undefine annullare la definizione di un filtro di rete

Networking (parola chiave della guida ‘rete’):
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 (fermata) una rete
informazioni di rete NET-dumpxml in XML
NET-modifica modifica configurazione XML per una rete
informazioni di rete NET-info
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

Dispositivo di nodo (parola chiave della guida ‘nodedev’):
nodedev-creare creare un dispositivo definito da un file XML sul nodo
nodedev-distruggere distruggere (fermata) un dispositivo sul nodo
dispositivo di nodo di sganciare nodedev-sganciare dal relativo driver di dispositivo
nodedev-dumpxml dettagli di dispositivo nodo in XML
nodedev-elenco enumerare i dispositivi su questo host
nodedev-riattaccare ricollegare nodo periferica per il driver di periferica
nodedev-reset Ripristina dispositivo nodo

Segreto (parola chiave della guida ‘segreto’):
segreto-definire definire o modificare un segreto da un file XML
in XML gli attributi segreto segreto-dumpxml
segreto-get-valore uscita un valore segreto
Segreti segreti-elenco elenco
segreto-insieme-valore impostato un valore segreto
segreto-undefine annullare la definizione di un segreto

Istantanea (parola chiave della guida ‘snapshot’):
creare snapshot crea uno snapshot da XML
snapshot-creare-come creare uno snapshot da un insieme di args
snapshot-current Get or set the current snapshot
snapshot-delete Delete a domain snapshot
snapshot-dumpxml Dump XML per un’istantanea di dominio
snapshot-modifica modifica XML per un’istantanea
snapshot-elenco elenco snapshot per un dominio
snapshot-padre ottenere il nome del padre di uno snapshot
snapshot-revert ripristina un dominio a uno snapshot

Pool di archiviazione (parola chiave della guida ‘pool’):
trovare-deposito-piscina-fonti-come trovare potenziali fonti di piscina di deposito
trovare-deposito-piscina-fonti scoprire potenziali fonti di pool di archiviazione
piscina-autostart autostart una piscina
piscina-costruire costruire una piscina
piscina-creare-come creare un pool da un insieme di args
piscina-creare creare una piscina da un file XML
piscina-definire-come definire un pool da un insieme di args
piscina-definire definire (ma non iniziare) una piscina da un file XML
piscina-delete Elimina un pool
piscina-distruggere distruggere (fermata) una piscina
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

Volume di archiviazione (parola chiave della guida ‘volume’):
Vol-clone clonare un volume.
vol-creare-come creare un volume da un insieme di args
vol-creare creare una vol da un file XML
vol-creare-da creare una vol, usando un altro volume in ingresso
Vol-delete Elimina una vol
Vol-download scaricare un volume su un file
Vol-dumpxml vol informazioni in XML
Vol-informazioni deposito vol
vol-key returns the volume key for a given volume name or path
vol-list list vols
vol-name returns the volume name for a given volume key or path
Vol-path restituisce il percorso del volume per un dato volume nome o la chiave
Vol-piscina restituisce il pool di archiviazione per un dato volume chiave o percorso
Vol-caricamento per caricare un file in un volume
Vol-pul pulisce una vol

Virsh stesso (parola chiave della guida ‘virsh’):
CD cambia la directory corrente
Eco Eco argomenti
uscita chiusura questo terminale interattivo
Guida di guida di stampa
pwd stampa la directory corrente
smettere di uscire da questo terminale interattivo

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
———————————-
Esecuzione di dominio-0 0
-spegnere il vm01

virsh n.

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.

 

  • Xen: http://www.xen.org/
  • CentOS: http://www.centos.org/

Piaciuto l'articolo? Condividilo sui social!

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