Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Virtualizzazione/Kvm/CreazioneOspiti"
Differenze tra le versioni 13 e 72 (in 59 versioni)
Versione 13 del 26/03/2010 14.06.40
Dimensione: 12819
Autore: FabioMarconi
Commento:
Versione 72 del 23/11/2023 17.36.57
Dimensione: 15763
Autore: jeremie2
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
##title KVM Create Guests

[[BR]]
[[Indice(depth=2 align=right)]]

= Creazione di macchine virtuali =

Una volta installato KVM, è possibile procedere alla creazione della VM. Ciò può essere fatto usando:
 * [http://virt-manager.et.redhat.com virt-manager]: uno strumento GUI.
 * [http://www.howtoforge.com/installing-kvm-guests-with-virt-install-on-ubuntu-8.10-server virt-install], uno script python sviluppato da Red Hat
 * [https://help.ubuntu.com/8.04/serverguide/C/ubuntu-vm-builder.html ubuntu-vm-builder], sviluppato da Canonical.

== Ubuntu-vm-builder: un mezzo veloce e potente per creare VMs Ubuntu JEOS ==

[http://doc.ubuntu.com/ubuntu/serverguide/C/ubuntu-vm-builder.html Ubuntu-vm-builder] è probabilmente il miglior strumento per la creazione di VMs che eseguono Ubuntu JEOS 8.04, dato che l'installazione avviene interamente tramite script (molto veloce).


Questo strumento è pacchettizzato, e si trova nel repository universe:

{{{
sudo apt-get install ubuntu-vm-builder
}}}

'''Nota: a partire dalla 8.10 (intrepid)''': il pacchetto viene chiamato '''python-vm-builder''', il comando '''vmbuilder''' ed è possibile trovare un [https://help.ubuntu.com/community/JeOSVMBuilder dettagliato tutorial sul wiki].*******Tradurre

=== Utilizzo elementare ===

Questo è un esempio elementare di come utilizzarlo:

{{{
## page was renamed from Emulatori/Kvm/CreazioneOspiti
## page was renamed from FabioMarconi/Prove9
##page updated 12-06-2011
#format wiki
#language it
<<Indice(depth=2)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="10.04")>>

<<BR>><<BR>>
= Introduzione =

In questa pagina viene spiegato come creare delle macchine virtuali dopo aver installato '''KVM'''.

Ciò può essere fatto usando:

 * [[http://help.ubuntu-it.org/current/ubuntu/serverguide/it/jeos-and-vmbuilder.html|ubuntu-vm-builder]], sviluppato da Canonical.
 * [[http://help.ubuntu-it.org/current/ubuntu/serverguide/it/libvirt.html|virt-install]], uno script python sviluppato da Red Hat.
 * [[http://help.ubuntu-it.org/current/ubuntu/serverguide/it/libvirt.html#libvirt-management|virt-manager]]: uno strumento GUI.

= Ubuntu-vm-builder =

'''Ubuntu-vm-builder''' è il miglior strumento per la creazione di macchine virtuali che eseguono '''Ubuntu JEOS 8.04''', dato che l'installazione avviene interamente tramite script.

== Installazione ==

Installare il pacchetto: [[apt://ubuntu-vm-builder | ubuntu-vm-builder]]

{{{#!wiki note
Per il corretto funzionamento di '''vmbuilder''' è necessario avere installato grub. Il sistema operativo host può tranquillamente essere avviato con lilo, ma il sistema ospite deve essere avviato da grub. Grub deve essere installato sulla macchina ospite per costruire l'immagine. A partire da '''Ubuntu 8.10''' il pacchetto viene chiamato: '''python-vm-builder'''; il comando: '''vmbuilder'''. Per un tutorial dettagliato consultare la [[http://help.ubuntu-it.org/9.10/ubuntu/serverguide/it/jeos-and-vmbuilder.html|relativa pagina]]. Verificare inoltre di avere una /tmp di almeno 1 GB, altrimenti in alcune localizzazioni ubuntu-vm-builder potrebbe crashare.}}}

== Utilizzo elementare ==

Digitando il seguente comando in una finestra di terminale:{{{
Linea 33: Linea 36:

C
iò creerà una Ubuntu Hardy, con tutte le opzione impostate in modo predefinito.

Oppure è possibile usare questo URL in uno strumento per script java per generare la lunga serie di parametri disponibili per ubuntu-vm-builder:
si creerà una '''Ubuntu Hardy''', con tutte le opzioni impostate in modo predefinito.

In alternativa è possibile usare questo URL:
Linea 39: Linea 42:
Nota: se si preferisce usare Virsh per la gestione della macchina virtuale, come descritto più avanti, bisogna aggiungere questo parametro:

{{{
in uno strumento per script java per generare la lunga serie di parametri disponibili per ''ubuntu-vm-builder''.

Se si preferisce usare '''Virsh''' per la gestione della macchina virtuale è necessario aggiungere questo parametro:{{{
Linea 45: Linea 48:
Sfortunatamente lo script java non contiene una opzione per farlo automaticamente.

'''Nota''': utilizzando il parametro --libvirt, il file XML non viene archiviato localmente ma viene iniettato in libvirt. Utilizzare {{{virsh -c qemu:///system}}} oppure {{{virt-manager -c qemu:///system}}} per avviare la macchina o modificarne la configurazione.

=== Esempio più complesso ===

In
seguito è riportato un esempio più complesso:

{{{
sfortunatamente lo script java non contiene un'opzione per farlo automaticamente.

Utilizzando il parametro '''--libvirt''', il file `XML` non viene archiviato in locale ma viene inserito in '''libvirt'''.

 *
Utilizzare:

 {{{
virsh -c qemu:///system
}}}

 oppure,

 {{{
virt-manager -c qemu:///system
}}}

per avviare la macchina o modificarne la configurazione.

== Esempio più complesso ==

Di
seguito è riportato un esempio più complesso:{{{
Linea 70: Linea 85:
                  --addpkg vim openssh-server \                   --addpkg acpid \
                  --addpkg vim \
                  --addpkg openssh-server \
                  --addpkg avahi-daemon \
Linea 74: Linea 92:
Ciò creerà una nuova Ubuntu Hardy VM chiamata "newvm", l' hostname sarà impostato a "hostnameformyvm", la rete sarà configurata con un indirizzo IP statico ed il gateway all'indirizzo 192.168.0.1. il parametro --mirror richiederà allo script lo scaricamentodei pacchetti da un mirror locale di ubuntu piuttosto che dal server centrale (ciò diminuirà di molto il tempo necesario alla creazione della VM). L'argomento components abiliterà i repository main e universe predefiniti sulla VM, --addpkg vim installerà vim, ed infine l'ultimo argomento aggiungerà automaticamente la VM appena creata a KVM.

L'aggiunta di 'openssh-server' a --addpkg, consentirà di eseguire una sessione ssh sulla nuova macchina una volta avviata (Assicurarsi che i dispositivi di connessione siano funzionino correttamente).

Nota: Il manuale non fornisce spiegazioni dettagliate sull'utilizzo dell'opzione --exec, usata per lanciare uno script durante il processo dicostruzione della VM. Quindi se si specifica l'opzione --exec è necessario fornire l'indirizzo completo dallo script. In mancanza di ciò il programma d'installazione restituirà un errore relativo all'impossibilità di recuperare lo script.

'''Avviso bug: ''' Sembra che il pacchetto 'linux-package' non venga trovato durante la costruzione della VM fino a che non viene aggiunta l'opzione 'restricted' nell'argomento component di ubuntu-vm-builder. se non specificato si otterrà un SO non funzionante che si avvierà solamente da grub., Quest linea risolve il problema:

{{{
ciò creerà una nuova macchina virtuale '''Ubuntu Hardy''' chiamata '''newvm''':

 * L' '''hostname''' sarà impostato a hostnameformyvm.
 * La '''rete''' sarà configurata con un indirizzo IP statico e il '''gateway''' all'indirizzo «192.168.0.1.».
 * Il parametro '''--mirror''' richiederà allo script lo scaricamento dei pacchetti da un mirror locale di '''Ubuntu''' piuttosto che dal server centrale (ciò diminuirà di molto il tempo necessario alla creazione della macchina virtuale).
 * L'argomento '''components''' abiliterà i repository main e universe predefiniti sulla macchina virtuale.
 * '''--addpkg vim''' installerà Vim.
 * L'aggiunta di '''openssh-server''' a '''--addpkg''' consentirà di eseguire una sessione ssh sulla nuova macchina una volta avviata (assicurarsi che i dispositivi di connessione funzionino correttamente).
 * L'ultimo argomento aggiungerà automaticamente la macchina virtuale appena creata a '''KVM'''.

{{{#!wiki note
Il manuale non fornisce spiegazioni dettagliate sull'utilizzo dell'opzione '''--exec''', usata per lanciare uno script durante il processo di costruzione della macchina virtuale. Quindi se si specifica l'opzione '''--exec''' è necessario fornire l'indirizzo completo dallo script. In mancanza di ciò il programma d'installazione restituirà un errore relativo all'impossibilità di recuperare lo script.}}}

== Avvio dell'ospite creato nell'esempio complesso ==

Una volta che l'ospite è stato creato è possibile visualizzarlo con il comando:
{{{
virsh 'list --all'
}}}
che restituirà un output simile a:
{{{
 Id Name State
----------------------------------
 - Nome ospite shut off
}}}
Ora per avviare il server virtuale usare il comando:
{{{
virsh start Nome ospite
}}}

=== Accesso al nuovo server da remoto via tunnel SSH/VNC ===

Se il vostro server è remoto, potete usare i seguenti comandi dalla vostra macchina locale.
Il primo ospite è accessibile, in via predefinita, su vnc:127.0.0.1:5900.
se si sta accedendo al server da remoto è possibile impostare un tunnel ssh e vnc sul server virtuale.
Dal terminale della macchina locale:
{{{
ssh vostro utente@vostro server -L5900:127.0.0.1:5900
}}}
Andare in Applicazioni, Internet, Visualizzatore di desktop remoti e impostare:

'''Protocol : VNC'''

'''Host : 127.0.0.1'''

Lasciare il resto invariato.


=== Avviso bug ===

Sembra che il pacchetto ''linux-package'' non venga trovato durante la costruzione della macchina virtuale fino a che non viene aggiunta l'opzione '''restricted''' nell'argomento '''component''' di ''ubuntu-vm-builder''. Se non specificato si otterrà un sistema operativo non funzionante che si avvierà solamente da grub.

Per risolvere il problema modificare l'argomento '''component''' come da esempio:{{{
Linea 86: Linea 148:
Presumendo che ciò sia un bug di ubuntu-vm-builder.

=== Intallazione su un dispositivo a blocchi grezzo ===

Ubuntu-vm-builder non consente la creazione di VM su un dispositivo a blocchi grezzo (come ad esempio una partizione indipendente, oppure una condivisione iSCSI). È possibile usare ubuntu-vm-builder per creare l'immagine qcow2 e quindi spostare la VM sul dispositivo a blocchi con qemu-img; se /dev/sdb è il disco sul quale trasferire la macchina virtuale:

{{{
presumendo che ciò sia un bug di ''ubuntu-vm-builder''.

'''Avviso''': durante la gestione dell'ospite i comandi spegni/riavvia inviati da virsh sono eventi AC
PI, è quindi necessario avere il supporto ACPI. Se il sitema ospite è Ubuntu allora eseguire nel terminale
{{{
sudo apt
-get install acpid
}}}


== Installazione su un dispositivo a blocchi grezzo ==

''
Ubuntu-vm-builder'' non consente la creazione di macchine virtuali su un dispositivo a blocchi grezzo (come ad esempio una partizione indipendente, oppure una condivisione iSCSI). È possibile usare ''ubuntu-vm-builder'' per creare l'immagine '''qcow2''' e quindi spostare la VM sul dispositivo a blocchi con '''qemu-img'''; se `/dev/sdb` è il disco sul quale trasferire la macchina virtuale procedere come segue:

 * Digitare il seguente comando in una finestra di terminale:{{{
Linea 96: Linea 163:
Editare il file definizione XML per la VM in /etc/libvirt/qemu/, ed impostare il file sorgente per esere:
{{{
 * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file definizione `XML` per la VM in `/etc/libvirt/qemu/`, e impostare il file sorgente per essere:{{{
Linea 101: Linea 167:
Ridefinire la VM ed avviarla; così facendo funzionerà da /dev/sdb.

Ubuntu-vm-builder è uno strumento potentissimo - per avere un più dettagliato elenco delle sue capacità, utilizzare ubuntu-vm-builder --help.


== Creazione di una VMs in grado di eseguire altri sistemi operativi: virt-install ==

Virt-install è redicalmente differente nel modo in cui funziona. Invece di creare automagicamente una nuova VM, consente di avviare un immagine iso, e quindi di installare qualsiasi sistema operativo. Per l'elenco dei sistemi operativi supportati, consultare la [http://www.linux-kvm.org/page/Guest_Support_Status pagina web ufficiale di KVM].

Di seguito viene descritto come installare Windows XPA. Durante la fase d'installazione, avverranno alcuni piccoli problemi, ma verrà spiegato come aggirarli.

=== Esempio di installazione di Windows ===
[http://waste.mandragor.org/windows-kvm.png]

NB: La seguente descrizione è relativa a windows XP sotto KVM-62 (Predefinito in Hardy durante la stesura di questo testo). In questa versione è impossibile l'esecuzione di windows 2000 server in modalità accelerata, per cui occorre usare KVM-72 adattato per Hardy fornito da Soren nel suo PPA: https://launchpad.net/~soren/+archive.

Copiare la ISO del sistema da installare nella vostra directory funzionante:of the system you want to install to your working directory:
{{{
 * Ridefinire la macchina virtuale e avviarla; così facendo funzionerà da `/dev/sdb`.

Per avere un elenco più dettagliato delle capacità di ''Ubuntu-vm-builder'', utilizzare:{{{
 ubuntu-vm-builder --help
}}}


= Virt-install: creazione di una macchina virtuale in grado di eseguire altri sistemi operativi =

'''Virt-install''' a differenza di '''Ubuntu-vm-builder''' non crea una nuova macchina virtuale ma consente di avviare un immagine ISO e di installare qualsiasi sistema operativo.

Per l'elenco dei sistemi operativi supportati, consultare la [[http://www.linux-kvm.org/page/Guest_Support_Status|relativa pagina]].

Di seguito viene descritto come installare '''Windows XPA'''.

== Esempio di installazione di Windows ==

La seguente descrizione è relativa a windows XP sotto '''KVM-62''' (predefinito in Hardy durante la stesura di questo testo). In questa versione è impossibile l'esecuzione di windows 2000 server in modalità accelerata, per cui occorre usare '''KVM-72''' adattato per Hardy fornito a [[https://launchpad.net/~soren/+archive|questo indirizzo]].

 0. Copiare la ISO del sistema da installare nella vostra '''Home''':{{{
Linea 122: Linea 190:
oppure creare una ISO da cd/dvd:
{{{

 in caso di solo possesso del CD è possibile creare il file `.iso` inserendo il CD nell'apposito lettore e digitando in una finestra di terminale:{{{
Linea 127: Linea 195:
Installare virt-install:
{{{
sudo apt-get install python-virtinst
}}}

Eseguire virt-install. SU Ubuntu Hardy, con KVM-62, l'installazione di windows XP non funziona se accelerata (cioè, usando --accelerate), Quindi bigsogna installare senza questo argomento e sosituire qemu con kvm nel file definizione XML (in /etc/libvirt/qemu) dopo il primo riavvio.

{{{
 0. Installare il pacchetto [[apt://python-virtinst | python-virtinst]]

 0. Eseguire '''virt-install'''.

Su '''Ubuntu Hardy''' con '''KVM-62''', l'installazione di windows XP non funziona se accelerata (cioè usando --accelerate).

 * Installare senza questo argomento e sosituire '''qemu''' con '''kvm''' nel file definizione `XML` in `/etc/libvirt/qemu` dopo il primo riavvio:{{{
Linea 137: Linea 204:

'''Note per 8.10 (Intrepid)''': per far si che il precedente comando funzioni, aggiungere l'opzione --hvm per avere l'ospite completamente virtualizzato.

Questo avvierà una nuova VM dalla ISO. Connettere alla nuova VM usando virt-viewer:

{{{
virt-viewer -c qemu:///system xpsp2
}}}

Oppure se KVM è in funzione su di un altro server:

{{{
   Questo avvierà una nuova macchina virtuale dalla ISO.

 {{{#!wiki note
Per la versione di '''Ubuntu 8.10''' aggiungere l'opzione '''--hvm''' per avere l'ospite completamente virtualizzato e far sì che il precedente comando funzioni. Per la versione di '''Ubuntu 9.10''' usare l'opzione '''--accelerate''' invece di '''--hvm''' nel caso in cui la macchina virtuale dovesse bloccarsi 1 o 2 minuti dopo l'inizio dell'installazione di Windows XP.
}}}

 * Connettersi alla nuova macchina virtuale usando '''virt-viewer''':{{{
 virt-viewer -c qemu:///system xpsp2
}}}

 Oppure se '''KVM''' è in funzione su di un altro server:{{{
Linea 152: Linea 219:
È quindi possibile avviare l'installazione. Un'altro problema è che dopo il primo riavvio, nel processo di installazione, il programma di installazione di windows, riferirà che non è più possibile trovare il disco d'installazione. Quindi nel file definizione XML della VM aggiungere le seguenti linee alla lista dei dispositivi:

{{{
 * Ora è possibile avviare l'installazione.

Un altro problema è che dopo il primo riavvio, nel processo di installazione, il programma di installazione di windows riferirà che non è più possibile trovare il disco d'installazione.

 * Quindi nel file definizione `XML` della macchina virtuale aggiungere le seguenti linee alla lista dei dispositivi:{{{
Linea 168: Linea 237:
Ridefinire la VM in virsh (sudo virsh define /etc/libvirt/qemu/xpsp2.xml) e riavviare la VM.

Un altro problema con la combinazione virt-install - Wndowsin combination with Windows è che il disco immagine creato è corrotto. inizialmente l'installazione sembra funzionare, ma dopo il primo riavvio si fermerà riportando il messaggio 'A read error occured'. Ciò può essere agevolmente risolto creando un nuovo disco immagine (prima dell'installazione):
{{{
 * Ridefinire la macchina virtuale in '''virsh''' digitando da una finestra di terminale:{{{
sudo virsh define /etc/libvirt/qemu/xpsp2.xml
}}}

 * Riavviare la macchina virtuale
.

Un altro problema con la combinazione '''virt-install - Windows''' è che il disco immagine creato è corrotto. Inizialmente l'installazione sembra funzionare, ma dopo il primo riavvio si fermerà riportando il messaggio «A read error occured».

Ciò può essere risolto creando un nuovo disco immagine (prima dell'installazione):{{{
Linea 174: Linea 248:
Sovrascrive il file qcow2 creato da virt-install con questo nuovo file, riavviare la VM.

=== Esempio di installazione di Ubuntu ===
Per installare Ubuntu Hardy eseguire il comando:
{{{

questo comando s
ovrascrive il file `qcow2` creato da '''virt-install'''. Con questo nuovo file, riavviare la macchina virtuale.

== Esempio di installazione di Ubuntu ==

Per installare '''Ubuntu 8.04''' digitare il seguente comando in un terminale:{{{
Linea 182: Linea 257:
L'opzione '--network' imposta la machina all'uso della rete libvirt predefinita. Per un elenco delle reti libvirt usare il comando:
{{{
L'opzione '''--network''' imposta la macchina all'uso della rete '''libvirt''' predefinita.

Per un elenco delle reti '''libvirt''' digitare il seguente comando in un terminale:{{{
Linea 187: Linea 263:
=== Altri sistemi operativi ===
È possibile installare altri sistemi operativi seguendo il metocdo precedente.  Consultare 'man virt-install' per maggiori informazioni e differenti opzioni per la macchina virtuale, SO supportati e relative varianti.

'''Attenzione:''' questo metodo non funziona con il LiveCD di Fedora Fedora LiveCD e probabilmente anche altri; vedere: [https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/220463 bug #220463].

== Clonazione di una macchina virtuale ==
È possibile clonare una macchina virtuale usando lo strumento virt-clone.  Quest'ultimo duplicherà l'immagine del disco e configurerà il dominio della macchina virtuale.

Per clonare una macchina virtuale chiamata ''srchost'' in una nouva macchina ''newhost'', assicurarsi che la macchina virtuale ''srchost'' non sia in esecuzione ed eseguire il seguente comando:
{{{
$ virt-clone --connect=qemu:///system -o srchost -n newhost -f /indirizzo/per/newhost.qcow2
}}}

== Creazione di una macchina virtuale da un'immagine preesistente ==
Assumendo che:

 *
Virt-manager viene utilizzato per gestire macchine virtuali.
 * Si vuole aggiungere un'immagine preesistente a virt-manager.

Caso d'uso:

Nel caso si voglia corrompere un immagine è possibile sperimentare pesantemente sulle macchine virtuali senza dover eseguire complete reinstallazioni usando qcow2 con overlays. Un lato positivo di questo metodo, rispetto alla clonazione, è il minor utilizzo di spazio su disco.
== Altri sistemi operativi ==

È possibile installare altri sistemi operativi seguendo il metodo precedente.
  
Consultare: {{{
 
man virt-install
}}}

per maggiori informazioni e differenti opzioni per la macchina virtuale, sistemi operativi supportati e relative varianti.

{{{#!wiki note
Q
uesto metodo non funziona con il LiveCD di Fedora e probabilmente anche con altri. Per maggiori informazioni vedere: [[https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/220463|bug #220463]].}}}

= Clonazione di una macchina virtuale =

È possibile clonare una macchina virtuale usando lo strumento '''virt-clone'''. Quest'ultimo duplicherà l'immagine del disco e configurerà il dominio della macchina virtuale.

Per clonare una macchina virtuale chiamata '''srchost''' in una nuova macchina '''newhost''', assicurarsi che la macchina virtuale '''srchost''' non sia in esecuzione e digitare il seguente comando in un terminale:{{{
 virt-clone --connect=qemu:///system -o srchost -n newhost -f /indirizzo/per/newhost.qcow2
}}}

= Creazione di una macchina virtuale da un'immagine preesistente =

'''
Virt-manager''' viene utilizzato per gestire macchine virtuali. Nel caso si voglia corrompere un'immagine è possibile sperimentarlo sulle macchine virtuali senza dover eseguire complete reinstallazzioni, usando '''qcow2''' con '''overlays'''. Un lato positivo di questo metodo rispetto alla clonazione è il minor utilizzo di spazio su disco.
Linea 212: Linea 290:
1. Creare un immagine del hard disk in formato qcow2:
{{{
$ qemu-img create -f qcow2 <nome immagine>.qcow2
}}}
2. Installare la macchina virtuale usando virt-manager:

Invece di consentire a virt-manager la creazione di una nuova immagine del disco, semplicemente indirizzarlo all'uso dell'immagine precedentemente creata.

3. Creazione dell'overlay:
{{{
$ qemu-img create -f qcow2 -b <nome immagine>.qcow2 <nome immagine>.ovl
}}}
4. Creare l'immagine virtuale del descrittore XML.

Leggere prima di proseguire:
{{{
$ man virt-image
$ man 5 virt-image
}}}
Copiare il file XML creato:
{{{
$ cp ~/.libvirt/qemu/<nome vm>.xml overlay.xml
}}}
Aprire ed editare il file XML copiato con l'editor preferito:
{{{
$ <editor> overlay.xml
}}}
Creare l'immagine virtuale del descrittore XML basato su virt-image(5)
manpage. Semplicemete commentare il testo originale ed usarlo come guida durante la crea
zione del descrittore.

5. Creare la nuova macchina virtuale dall'immagine del descrittore:
{{{
$ virt-image --vnc overlay.xml
}}}
6. Avviare e verificare che la nuova macchine sia basata sull'overlay.

Avviare la macchina virtuale e testarla come meglio si crede. In caso di malfunzionamento,
basta semplicemente distruggerla e cancellarla. Quindi ricreare l'immagine e la macchina overlay come descritto sopra. È possibile effettuare cambiamenti overlay all'immagine di base. In tal caso consultare il manuale alla pagina qemu-img per i dettagli..

== Vedere anche ==

The
[[../FAQ#systemadjustments|system specific adjustment recommended in the FAQ]].***********************ancorare a domande frequenti.

[http://packages.ubuntu.com/search?keywords=apt-cacher-ng|apt-cacher-ng] for mirroring.
 0. Creare un immagine dell'hard disk in formato qcow2:{{{
 qemu-img create -f qcow2 nome_immagine.qcow2
}}}
 sostituire «nome_immagine» con il nome dell'immagine in uso.

 0
. Installare la macchina virtuale usando virt-manager. Invece di consentire a '''virt-manager''' la creazione di una nuova immagine del disco, indirizzarlo all'uso dell'immagine precedentemente creata.

 0. Creare l'overlay digitanto il seguente comando in un terminale:{{{
 qemu-img create -f qcow2 -b <nome immagine>.qcow2 <nome immagine>.ovl
}}}

 0
. Creare l'immagine virtuale del descrittore XML.

  * Prima di proseguire leggere:{{{
  man virt-image
  man 5 virt-image
}}}
  * Copiare il file `XML` creato:{{{
  cp ~/.libvirt/qemu/<nome vm>.xml overlay.xml
}}}
  * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file `overlay.xml`.

  * Creare l'immagine virtuale del descrittor
e XML basandosi sulla pagina del manuale: virt-image(5), commentando il testo originale e usandolo come guida durante la creazione del descrittore.

 0. Creare la nuova macchina virtuale dall'immagine del descrittore digitando in un terminale
{{{
 virt-image --vnc overlay.xml
}}}
 0. Avviare e verificare che la nuova macchina sia basata sull'overlay.

Avviare la macchina virtuale e testarla come meglio si crede.

In caso di malfun
zionamento basta semplicemente distruggerla e cancellarla. Quindi ricreare l'immagine e la macchina overlay come descritto sopra. È possibile effettuare cambiamenti overlay all'immagine di base. In tal caso consultare il manuale alla pagina '''qemu-img''' per i dettagli.

= Ulteriori risorse =

 *
[[http://wiki.ubuntu-it.org/FabioMarconi/Prove12|Domande frequenti]]
 
*[[http://packages.ubuntu.com/search?keywords=apt-cacher-ng|apt-cacher-ng per il mirroring]]
 *[[https://help.ubuntu.com/community/KVM/CreateGuests|Documento originale]]
Linea 258: Linea 330:
----
CategoryHomepage CategoryInTraduzione
CategoryVirtualizzazione CategoryDaRevisionare

Problemi in questa pagina? Segnalali in questa discussione



Introduzione

In questa pagina viene spiegato come creare delle macchine virtuali dopo aver installato KVM.

Ciò può essere fatto usando:

Ubuntu-vm-builder

Ubuntu-vm-builder è il miglior strumento per la creazione di macchine virtuali che eseguono Ubuntu JEOS 8.04, dato che l'installazione avviene interamente tramite script.

Installazione

Installare il pacchetto: ubuntu-vm-builder

Per il corretto funzionamento di vmbuilder è necessario avere installato grub. Il sistema operativo host può tranquillamente essere avviato con lilo, ma il sistema ospite deve essere avviato da grub. Grub deve essere installato sulla macchina ospite per costruire l'immagine. A partire da Ubuntu 8.10 il pacchetto viene chiamato: python-vm-builder; il comando: vmbuilder. Per un tutorial dettagliato consultare la relativa pagina. Verificare inoltre di avere una /tmp di almeno 1 GB, altrimenti in alcune localizzazioni ubuntu-vm-builder potrebbe crashare.

Utilizzo elementare

Digitando il seguente comando in una finestra di terminale:

sudo ubuntu-vm-builder kvm hardy

si creerà una Ubuntu Hardy, con tutte le opzioni impostate in modo predefinito.

In alternativa è possibile usare questo URL:

in uno strumento per script java per generare la lunga serie di parametri disponibili per ubuntu-vm-builder.

Se si preferisce usare Virsh per la gestione della macchina virtuale è necessario aggiungere questo parametro:

--libvirt qemu:///system

sfortunatamente lo script java non contiene un'opzione per farlo automaticamente.

Utilizzando il parametro --libvirt, il file XML non viene archiviato in locale ma viene inserito in libvirt.

  • Utilizzare:
    virsh -c qemu:///system
    oppure,
    virt-manager -c qemu:///system
    per avviare la macchina o modificarne la configurazione.

Esempio più complesso

Di seguito è riportato un esempio più complesso:

ubuntu-vm-builder kvm hardy \
                  --domain newvm \
                  --dest newvm \
                  --arch i386 \
                  --hostname hostnameformyvm \
                  --mem 256 \
                  --user john \
                  --pass doe \
                  --ip 192.168.0.12 \
                  --mask 255.255.255.0 \
                  --net 192.168.0.0 \
                  --bcast 192.168.0.255 \
                  --gw 192.168.0.1 \
                  --dns 192.168.0.1 \
                  --mirror http://archive.localubuntumirror.net/ubuntu \
                  --components main,universe \
                  --addpkg acpid \
                  --addpkg vim \
                  --addpkg openssh-server \
                  --addpkg avahi-daemon \
                  --libvirt qemu:///system ;

ciò creerà una nuova macchina virtuale Ubuntu Hardy chiamata newvm:

  • L' hostname sarà impostato a hostnameformyvm.

  • La rete sarà configurata con un indirizzo IP statico e il gateway all'indirizzo «192.168.0.1.».

  • Il parametro --mirror richiederà allo script lo scaricamento dei pacchetti da un mirror locale di Ubuntu piuttosto che dal server centrale (ciò diminuirà di molto il tempo necessario alla creazione della macchina virtuale).

  • L'argomento components abiliterà i repository main e universe predefiniti sulla macchina virtuale.

  • --addpkg vim installerà Vim.

  • L'aggiunta di openssh-server a --addpkg consentirà di eseguire una sessione ssh sulla nuova macchina una volta avviata (assicurarsi che i dispositivi di connessione funzionino correttamente).

  • L'ultimo argomento aggiungerà automaticamente la macchina virtuale appena creata a KVM.

Il manuale non fornisce spiegazioni dettagliate sull'utilizzo dell'opzione --exec, usata per lanciare uno script durante il processo di costruzione della macchina virtuale. Quindi se si specifica l'opzione --exec è necessario fornire l'indirizzo completo dallo script. In mancanza di ciò il programma d'installazione restituirà un errore relativo all'impossibilità di recuperare lo script.

Avvio dell'ospite creato nell'esempio complesso

Una volta che l'ospite è stato creato è possibile visualizzarlo con il comando:

virsh 'list --all'

che restituirà un output simile a:

 Id Name       State
----------------------------------
 - Nome ospite shut off

Ora per avviare il server virtuale usare il comando:

virsh start Nome ospite

Accesso al nuovo server da remoto via tunnel SSH/VNC

Se il vostro server è remoto, potete usare i seguenti comandi dalla vostra macchina locale. Il primo ospite è accessibile, in via predefinita, su vnc:127.0.0.1:5900. se si sta accedendo al server da remoto è possibile impostare un tunnel ssh e vnc sul server virtuale. Dal terminale della macchina locale:

ssh vostro utente@vostro server -L5900:127.0.0.1:5900

Andare in Applicazioni, Internet, Visualizzatore di desktop remoti e impostare:

Protocol : VNC

Host : 127.0.0.1

Lasciare il resto invariato.

Avviso bug

Sembra che il pacchetto linux-package non venga trovato durante la costruzione della macchina virtuale fino a che non viene aggiunta l'opzione restricted nell'argomento component di ubuntu-vm-builder. Se non specificato si otterrà un sistema operativo non funzionante che si avvierà solamente da grub.

Per risolvere il problema modificare l'argomento component come da esempio:

--components 'main,universe,restricted'

presumendo che ciò sia un bug di ubuntu-vm-builder.

Avviso: durante la gestione dell'ospite i comandi spegni/riavvia inviati da virsh sono eventi ACPI, è quindi necessario avere il supporto ACPI. Se il sitema ospite è Ubuntu allora eseguire nel terminale

sudo apt-get install acpid

Installazione su un dispositivo a blocchi grezzo

Ubuntu-vm-builder non consente la creazione di macchine virtuali su un dispositivo a blocchi grezzo (come ad esempio una partizione indipendente, oppure una condivisione iSCSI). È possibile usare ubuntu-vm-builder per creare l'immagine qcow2 e quindi spostare la VM sul dispositivo a blocchi con qemu-img; se /dev/sdb è il disco sul quale trasferire la macchina virtuale procedere come segue:

  • Digitare il seguente comando in una finestra di terminale:

    sudo qemu-img convert root.qcow2 -O raw /dev/sdb
  • Aprire con un editor di testo il file definizione XML per la VM in /etc/libvirt/qemu/, e impostare il file sorgente per essere:

    <source file='/dev/sdb'/>
  • Ridefinire la macchina virtuale e avviarla; così facendo funzionerà da /dev/sdb.

Per avere un elenco più dettagliato delle capacità di Ubuntu-vm-builder, utilizzare:

 ubuntu-vm-builder --help

Virt-install: creazione di una macchina virtuale in grado di eseguire altri sistemi operativi

Virt-install a differenza di Ubuntu-vm-builder non crea una nuova macchina virtuale ma consente di avviare un immagine ISO e di installare qualsiasi sistema operativo.

Per l'elenco dei sistemi operativi supportati, consultare la relativa pagina.

Di seguito viene descritto come installare Windows XPA.

Esempio di installazione di Windows

La seguente descrizione è relativa a windows XP sotto KVM-62 (predefinito in Hardy durante la stesura di questo testo). In questa versione è impossibile l'esecuzione di windows 2000 server in modalità accelerata, per cui occorre usare KVM-72 adattato per Hardy fornito a questo indirizzo.

  1. Copiare la ISO del sistema da installare nella vostra Home:

    yhamon@paris:~$ ls *.iso
    ubuntu-8.04-server-i386.iso  windowsxpsp2.iso

    in caso di solo possesso del CD è possibile creare il file .iso inserendo il CD nell'apposito lettore e digitando in una finestra di terminale:

    dd if=/dev/dvd of=dvd.iso
  2. Installare il pacchetto python-virtinst

  3. Eseguire virt-install.

Su Ubuntu Hardy con KVM-62, l'installazione di windows XP non funziona se accelerata (cioè usando --accelerate).

  • Installare senza questo argomento e sosituire qemu con kvm nel file definizione XML in /etc/libvirt/qemu dopo il primo riavvio:

    sudo virt-install --connect qemu:///system -n xpsp2 -r 512 -f windows.qcow2 -s 12 -c windowsxpsp2.iso --vnc --noautoconsole --os-type windows --os-variant winxp
    Questo avvierà una nuova macchina virtuale dalla ISO.

    Per la versione di Ubuntu 8.10 aggiungere l'opzione --hvm per avere l'ospite completamente virtualizzato e far sì che il precedente comando funzioni. Per la versione di Ubuntu 9.10 usare l'opzione --accelerate invece di --hvm nel caso in cui la macchina virtuale dovesse bloccarsi 1 o 2 minuti dopo l'inizio dell'installazione di Windows XP.

  • Connettersi alla nuova macchina virtuale usando virt-viewer:

     virt-viewer -c qemu:///system xpsp2

    Oppure se KVM è in funzione su di un altro server:

    virt-viewer -c qemu+ssh://ip/system xpsp2
  • Ora è possibile avviare l'installazione.

Un altro problema è che dopo il primo riavvio, nel processo di installazione, il programma di installazione di windows riferirà che non è più possibile trovare il disco d'installazione.

  • Quindi nel file definizione XML della macchina virtuale aggiungere le seguenti linee alla lista dei dispositivi:

    <domain type='kvm'>
      [...]
      <devices>
        [...]
        <disk type='file' device='cdrom'>
          <source file='//home/nomeutente/windowsxpsp2.iso'/>
          <target dev='hdc' bus='ide'/>
          <readonly/>
        </disk>
      </devices>
    </domain>
  • Ridefinire la macchina virtuale in virsh digitando da una finestra di terminale:

    sudo virsh define /etc/libvirt/qemu/xpsp2.xml
  • Riavviare la macchina virtuale.

Un altro problema con la combinazione virt-install - Windows è che il disco immagine creato è corrotto. Inizialmente l'installazione sembra funzionare, ma dopo il primo riavvio si fermerà riportando il messaggio «A read error occured».

Ciò può essere risolto creando un nuovo disco immagine (prima dell'installazione):

qemu-img create -f qcow2 disk0.qcow2 12G

questo comando sovrascrive il file qcow2 creato da virt-install. Con questo nuovo file, riavviare la macchina virtuale.

Esempio di installazione di Ubuntu

Per installare Ubuntu 8.04 digitare il seguente comando in un terminale:

sudo virt-install --connect qemu:///system -n hardy -r 512 -f hardy.qcow2 -s 12 -c hardy-server-amd64.iso --vnc --noautoconsole --os-type linux --os-variant ubuntuHardy --accelerate --network=network:default

L'opzione --network imposta la macchina all'uso della rete libvirt predefinita.

Per un elenco delle reti libvirt digitare il seguente comando in un terminale:

virsh net-list --all

Altri sistemi operativi

È possibile installare altri sistemi operativi seguendo il metodo precedente.

Consultare:

 man virt-install

per maggiori informazioni e differenti opzioni per la macchina virtuale, sistemi operativi supportati e relative varianti.

Questo metodo non funziona con il LiveCD di Fedora e probabilmente anche con altri. Per maggiori informazioni vedere: bug #220463.

Clonazione di una macchina virtuale

È possibile clonare una macchina virtuale usando lo strumento virt-clone. Quest'ultimo duplicherà l'immagine del disco e configurerà il dominio della macchina virtuale.

Per clonare una macchina virtuale chiamata srchost in una nuova macchina newhost, assicurarsi che la macchina virtuale srchost non sia in esecuzione e digitare il seguente comando in un terminale:

 virt-clone --connect=qemu:///system -o srchost -n newhost -f /indirizzo/per/newhost.qcow2

Creazione di una macchina virtuale da un'immagine preesistente

Virt-manager viene utilizzato per gestire macchine virtuali. Nel caso si voglia corrompere un'immagine è possibile sperimentarlo sulle macchine virtuali senza dover eseguire complete reinstallazzioni, usando qcow2 con overlays. Un lato positivo di questo metodo rispetto alla clonazione è il minor utilizzo di spazio su disco.

Procedura:

  1. Creare un immagine dell'hard disk in formato qcow2:

     qemu-img create -f qcow2 nome_immagine.qcow2
    sostituire «nome_immagine» con il nome dell'immagine in uso.
  2. Installare la macchina virtuale usando virt-manager. Invece di consentire a virt-manager la creazione di una nuova immagine del disco, indirizzarlo all'uso dell'immagine precedentemente creata.

  3. Creare l'overlay digitanto il seguente comando in un terminale:

     qemu-img create -f qcow2 -b <nome immagine>.qcow2 <nome immagine>.ovl
  4. Creare l'immagine virtuale del descrittore XML.
    • Prima di proseguire leggere:

        man virt-image
        man 5 virt-image
    • Copiare il file XML creato:

        cp ~/.libvirt/qemu/<nome vm>.xml overlay.xml
    • Aprire con un editor di testo il file overlay.xml.

    • Creare l'immagine virtuale del descrittore XML basandosi sulla pagina del manuale: virt-image(5), commentando il testo originale e usandolo come guida durante la creazione del descrittore.
  5. Creare la nuova macchina virtuale dall'immagine del descrittore digitando in un terminale

     virt-image --vnc overlay.xml
  6. Avviare e verificare che la nuova macchina sia basata sull'overlay.

Avviare la macchina virtuale e testarla come meglio si crede.

In caso di malfunzionamento basta semplicemente distruggerla e cancellarla. Quindi ricreare l'immagine e la macchina overlay come descritto sopra. È possibile effettuare cambiamenti overlay all'immagine di base. In tal caso consultare il manuale alla pagina qemu-img per i dettagli.

Ulteriori risorse


CategoryVirtualizzazione CategoryDaRevisionare