Creare una macchina HVM (Hardware Virtualized) Guest su Xen 4.X

10 Aprile 2018 0 Di Alessandro Scamporrino

In questo tutorial andiamo a spiegare come creare una macchina virtuale su server Xen 4. Dalla preparazione dello Storage alla configurazione del collegamento VNC. Questa guida è valida per la maggior parte di distribuzioni Linux.

1. Preparazione dello storage.

Prima fase per la configurazione di una nuova macchina virtuale è di preparare lo storage o per meglio intendersi l’hard disk virtuale dove andremo ad installare il sistema operativo.

Ci sono vari tipi di storage che possono essere utilizzati, file immagini (.img) o fisici come una partizione lvm.

La scelta va soprattutto in base al tipo di hardware che avete a disposizione sulla macchina host, una partizione lvm dedicata è consigliabile con un disco dedicato per non togliere spazio sulla partizione di sistema sempre che sia stata configurata con lvm.

Nel caso non abbiate un disco dedicato ed il sistema operativo host è stato configurato con partizioni standard si consiglia, anche per eventuali test, il file immagine.

1.1 Creazione file img.

Per creare un file immagine utiliziamo il comando dd da shell, la sintassi è la seguente:

sudo dd if=/dev/zero of=<percorso della cartella>/<nome del file>.img bs=1 count=1 seek=40G

Dove indichiamo “/dev/zero/” come origine, in questo caso prendiamo un dispositivo di input vuoto per creare un file immagine vuoto nel dispositivo di output “<nome del file>.img”. Gli altri parametri che ci sono utili sono seek che indica la dimensione del file, in questo esempio creiamo un file da 40Gb. Per il nostro esempio la cartella dove salveremo il file sarà /vm/esempio ed il file immagine esempio.img.

1.2 Creazione partizione LVM.

1.2.1 Creazione partizione LVM da disco nuovo:

Brevemente elenchiamo alcuni vantaggi delle partizioni LVM:

  • Capacità totale espandibile senza spostamento dei dati
  • Allocazione dinamica dello spazio senza riformattazione, inclusa l’aggiunta, rimozione e sostituzione dei dischi

Nota: si intende che il nuovo disco sia già stato partizionato con il comando fdisk e sia noto il nome del nuovo disco, in questo esempio usiamo /dev/sdb1.

Creiamo la fisica con il comando:

sudo pvcreate /dev/sdb1

Andiamo ora a creare il gruppo che conterrà la o le nostre partizioni lo chiameremo per questo esempio vgxen.

N.B il disco può essere partizionato più volte.

sudo vgcreate vgxen /dev/sdb1

La prossima fase è quella di creare la partizione lvm con il seguente comando:

sudo lvcreate -n lvguest -L 40G vgxen

Abbiamo così creato la partizione per la nostra macchina virtuale.

Per individuare il percorso che ci servirà successivamente per configurarla nella macchina virtuale usiamo il comando fdisk -l che ci restituirà un output del genere:

Disk /dev/mapper/vgxen-lvguest: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Prendendo nota della dicitura dopo Disk, in questo caso “/dev/mapper/vgxen-lvguest”.

2. Preparazione dell’immagine del CD/DVD di installazione.

Per ottenere un CD/DVD di installazione del sistema operativo della nostra macchina guest avete due possibilità, scaricare un immgine già in formato .iso oppure crearlo da un CD/DVD.

3. Creazione file di configurazione della macchina Guest.

Siamo finalmente arrivati alla configurazione della nostra macchina virtuale, sotto riporto un esempio che potete copiare ed adattare alle vostre esigenze:

# Nome della macchina virtuale
name = 'hvm-esempio'
# builder indica il tipo di macchina virtuale 
# builder='generic' indica una vm paravirtualized
# builder = 'hvm'indica una vm completamente virtualizzata
builder = 'hvm'

# Numero di cpu virtuali assegnate alla vm
vcpus = '1'
# Numero di massimo di cpu virtuali applicabili alla vm, il numero da impostare deve essere maggiore od uguale a vcpu
maxvcpus = '4'
# Memoria assegnata alla macchina virtuale
memory = '2048'
# Quantità massima di memoria assegnabile alla vm, il numero da impostare deve essere maggiore od uguale a memory
maxmem = '4096'

# Impostazione dei deschi della vm, in questo caso è indicata una partizione fisica
# Per indicare un file .img la sintassi è file:/backup/vm/ubuntu.img,hda,w
# ',hdc:cdrom,r' indica un lettore cd/dvd vuoto 
# Per poter utilizzare un immagine iso come cd-rom utilizzare questa sintassi: 
# 'file:<percorso file iso>/<nome file iso>.iso,hdc:cdrom,r'
disk = ['phy:/dev/mapper/vgxen-lvguest,hda,w',',hdc:cdrom,r']
#disk = ['file:/vm/esempio/ubuntu.img',',hdc:cdrom,r']
# Impostazione della scheda di rete
vif = [ 'bridge=xenbr0' ]

# Ordine di avvio, le lettere indicano le varie unità. es c è il primo hd e d il cdrom
boot = 'dc'

# Parametri per la connessione alla console della vm tramite vnc
# Questo parametro abilita o disabilita la connessione vnc
vnc = '1'
# Questo parametro limita la connessione tramite vnc a un determinato indirizzo IP, vnclisten = '0.0.0.0' ablita la connessione da qualsiasi host
vnclisten = '0.0.0.0'
# Password per la connessione vnc
vncpasswd = 'password'
# Indica la porta di connessione vnc, predefinito 0, in questo caso la porta di connessione è 5900+1 quindi 5901
vncdisplay='1'

Per altre informazioni e dettagli consultare il post Parametri di Configurazione VM Xen xl.cfg