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/GestioneOspiti"
Differenze tra le versioni 11 e 34 (in 23 versioni)
Versione 11 del 28/03/2010 20.46.46
Dimensione: 8114
Autore: FabioMarconi
Commento: aggiunto ulteriori risorse + ##traduzione della pagina del 20.02.2010
Versione 34 del 02/12/2022 17.08.21
Dimensione: 9045
Autore: gnomefanatic
Commento: Revisione
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
## page was renamed from Emulatori/Kvm/GestioneOspiti
## page was renamed from FabioMarconi/Prove10
Linea 2: Linea 4:
##Page updated 13-06-2011
Linea 3: Linea 6:
[[Indice(depth=2)]]
 KVM/Gestione



= Gestione delle macchine virtuali =

== Gestione da terminale ==

Per la gestione delle macchine virtuali da terminale usare [http://linux.die.net/man/1/virsh virsh]. Per ottenere l'elenco dei comandi utilizzabili digitare "help". Per informazioni aggiuntive su uno specifico comando, digitare "help commando".

=== Definizione della nuova VM ===

Prima di poterla gestire con virsh, è necessario definirla:

{{{
$ virsh --connect qemu:///system
<<BR>>
<<Indice(depth=2)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="10.04")>>


= Introduzione =

In questa pagina viene spiegata la gestione delle macchine virtuali da riga di comando o da interfaccia grafica.

= Gestione da terminale =

Per la gestione delle macchine virtuali da terminale usare [[http://help.ubuntu-it.org/current/ubuntu/serverguide/it/libvirt.html|Virsh]].

 * Per ottenere l'elenco dei comandi utilizzabili digitare:{{{
help
}}}
 * Per informazioni aggiuntive su uno specifico comando, digitare:{{{
help commando
}}}

== Definizione della nuova Macchina Virtuale ==

Prima di gestire la macchina virtuale con '''virsh''', è necessario definirla:{{{
 virsh --connect qemu:///system
Linea 30: Linea 40:
Nota: per elencare la nuova VM, si deve usare 'list --inactive' oppure 'list --all', dato che list senza opzioni elenca solo le macchine attualmente in esecuzione.

=== Come elencare le VMs ===

Virsh consente di elencare le macchine virtuali presenti sul host:
Per elencare la nuova macchina virtuale, si deve usare '''list --inactive''' oppure '''list --all''', dato che list senza opzioni elenca solo le macchine attualmente in esecuzione.

== Come elencare le MV ==

'''Virsh''' consente di elencare le macchine virtuali presenti sull'host:
Linea 72: Linea 82:
=== Definire, indefinire, avviare, spegnere, distruggere VMs ===

Le VMs visualizzate con list --all sono VMs che sono state "definite" da un file XML. Ogni VM è configurata tramite un file XML in /etc/libvirt/qemu. Per rimuovere una VM dall'elenco delle VMS occorre indefinirla:

{{{
== Definire, indefinire, avviare, spegnere e distruggere macchine virtuali ==

Le macchine virtuali visualizzate con '''list --all''' sono definite da un file `XML`. Ogni macchina virtuale è configurata tramite un file `XML` in `/etc/libvirt/qemu`.

 * Per rimuovere una macchina virtuale dall'elenco occorre indefinirla:{{{
Linea 87: Linea 97:
Per indefinire una macchina virtuale bisogna innanzitutto spegnerla:

{{{
 per indefinire una macchina virtuale bisogna innanzitutto spegnerla:{{{
Linea 94: Linea 102:
Questo comando avvia lo spegnimento dolce della VM (simile all'esecuzione dello shutdown da linea di comando) - ma è anche possibile usare "destroy", il modo più brutale di spegnere una VM, equivalente ad una interruzione dell'alimentazione sul sistema:

{{{
 questo comando avvia lo spegnimento dolce della macchina virtuale (simile all'esecuzione dello shutdown da linea di comando), ma è anche possibile usare '''destroy'''.

 Il modo più brutale per spegnere una macchina virtuale, equivalente a un'interruzione dell'alimentazione sul sistema è:{{{
Linea 101: Linea 109:
se vengono eseguiti cambiamente al file di confiurazione XML, è necessario che KVM lo ricarichi prima di riavviare la VM:

{{{
 * Se vengono eseguiti cambiamenti al file di configurazione `XML` è necessario che '''KVM''' lo ricarichi prima di riavviare la macchina virtuale:{{{
Linea 108: Linea 114:
Quindi per riavviare la VM:

{{{
 * Quindi per riavviare la macchina virtuale:{{{
Linea 115: Linea 119:
=== Sospensione e ripristino di una macchina virtuale ===

Virsh consente di sospendere e riavviare facilmente una macchina virtuale.

{{{
== Sospensione e ripristino di una macchina virtuale ==

'''Virsh''' consente di sospendere e riavviare facilmente una macchina virtuale:{{{
Linea 127: Linea 129:
= Edizione degli attributi di una macchina virtuale =

libvirt memorizza la sua configurazione come xml in '/etc/libvirt/qemu'. XML è facilmente comprensibile, ed è simile ai file *.vmx di VMware. Quindi è possibile editare questi file sul posto e riavviare libvirt perchè i cambiamenti abbiano effetto. Il metodo raccomandato per la modifica degli attributi di una macchina virtuale è tramite virsh (oppure virt-manager, semprechè supporti i cambiamenti hardware che volete effettuare). Il conceto è semplice:

 1. Esportare il file xml della VM da editare (aka 'dump')
 1. editare il file xml
 1. Importare il file xml (aka 'define')

Per esempio, per editare la macchine chiamata 'foo' (per avere l'elenco delle macchine usare 'virsh list --all'), eseguire:{{{
$ virsh dumpxml foo > /tmp/foo.xml
= Modifica degli attributi di una macchina virtuale =

'''Libvirt''' memorizza la sua configurazione come `.xml` in `/etc/libvirt/qemu`. Il file `.xml` è facilmente comprensibile, ed è simile ai file `*.vmx` di '''VMware''', quindi è possibile editare questi file sul posto e riavviare '''libvirt''' di modo che i cambiamenti abbiano effetto.

Il metodo raccomandato per la modifica degli attributi di una macchina virtuale è tramite '''virsh''' oppure '''virt-manager''' (sempre che supporti i cambiamenti hardware che volete effettuare):

 0. Esportare il file `xml` della macchina virtuale da editare (aka 'dump')
 0. Editare il file `xml`.
 0. Importare il file `xml`. (aka 'define')

Per esempio, per editare la macchina chiamata '''foo''' (per avere l'elenco delle macchine usare '''virsh list --all'''), eseguire:{{{
 virsh dumpxml foo > /tmp/foo.xml
Linea 138: Linea 142:
$ virsh define /tmp/foo.xml
}}}

== Aggiunta di CPU ==
KVM permette di creare ospiti SMP. Per allocare due CPU in una VM, fare il dump del file xml come sopra, quindi editarlo per avere:{{{
 virsh define /tmp/foo.xml
}}}

= Aggiunta di CPU =

'''
KVM''' permette di creare ospiti SMP.

Per allocare due CPU in una macchina virtuale, fare il dump del file `xml` come sopra, quindi editarlo per avere:{{{
Linea 150: Linea 157:
Definire la VM come sopra.

== Aggiunta di memoria ==
Per cambiare l'alolocazione di memoria in una VM, fare il dump del file xml come sopra, quindi editarlo per avere:{{{
Definire la macchina virtuale come sopra.

= Aggiunta di memoria =

Per cambiare l'allolocazione di memoria in una macchina virtuale, fare il dump del file `xml` come sopra, quindi editarlo per avere:{{{
Linea 162: Linea 170:
Definire la VM come sopra. tenere a mente che l'allocazione di memoria è in kilobytes, quindi per allocare 512MB di memoria, usare 512 * 1024, oppure 524288.

== Cambiare il modello di scheda di rete ==
kvm e qemu attualmente ed in maniera prestabilita usano il NIC rtl8139. I NIC supportati in Ubuntu 8.04 LTS sono i82551, i82557b, i82559er, ne2k_pci, pcnet, rtl8139, e1000, e virtio. Per usare un NIC alternativo, fare il dump del file xml come sopra, quindi editarlo per avere:{{{
Definire la macchina virtuale come sopra.

T
enere a mente che l'allocazione di memoria è in kilobytes, quindi per allocare 512 MB di memoria, usare 512 * 1024, oppure 524288.

= Cambiare il modello di scheda di rete =

'''
kvm''' e '''qemu''' attualmente e in maniera prestabilita usano il NIC «rtl8139».

I NIC supportati in '''Ubuntu 8.04''' sono «i82551», «i82557b», «i82559er», «ne2k_pci», «pcnet», «rtl8139», «e1000», e «virtio».

Per usare un NIC alternativo, fare il dump del file `xml` come sopra, quindi editarlo per avere:{{{
Linea 176: Linea 191:
Ridefinire la VM come sopra.

== Aggiunta di dispositivi USB passanti ==
=== Limitazioni ===
Ridefinire la macchina virtuale come sopra.

= Aggiunta di dispositivi USB passanti =

== Limitazioni ==
Linea 181: Linea 198:
 * Il dispositivo deve essere collegato prima dell'avvio di KVM
 * È necessari modificare Apparmor

=== Modificare Apparmor ===
Per consentire ad un programma software di accedere ad un dispositivo usb correttamente è necessario modificare Apparmor. Per fare ciò editare '''/etc/apparmor.d/abstractions/libvirt-qemu''' e decommentare alcune linee:
{{{
 * Il dispositivo deve essere collegato prima dell'avvio di '''KVM'''.
 * È necessario modificare Apparmor

== Modifica di Apparmor ==

Per consentire a un programma software di accedere correttamente a un dispositivo usb è necessario modificare Apparmor.

 *
Per fare ciò [[Ufficio/EditorDiTesto|editare]] il file `/etc/apparmor.d/abstractions/libvirt-qemu` e decommentare alcune linee:{{{
Linea 195: Linea 214:
Dopo le variazioni apparmor deve essere riavviato:
{{{
$
sudo /etc/init.d/apparmor restart
}}}

=== Aggiunta di dispositivi USB ===
Innanzitutto c
ercare, relativamente all'USB il codice del costruttore (Vendor ID) e del prodotto (Product ID):
{{{
$
lsusb
 * Dopo le variazioni apparmor deve essere riavviato digitando in una finestra di terminale:{{{
sudo /etc/init.d/apparmor restart
}}}

== Aggiunta di dispositivi USB ==

C
ercare, relativamente all'USB il codice del costruttore (Vendor ID) e del prodotto (Product ID).

Per fare ciò digitare il seguente comando in una finestra di terminale
:{{{
lsusb
}}}
il risultato sarà simile al seguente:{{{
Linea 213: Linea 235:
Se per esempio bisogna aggiungere '''Broadcom Corp. Bluetooth Controller''' i codici identificativi (ID) del costruttore e del prodotto sono rispettivamente '''0a5c''' e '''2110'''. Questi valori vanno inseriti nel profilo xml. Ciò può essere fatto tramite virsh con il comando '''edit <domain>''':
{{{
Se per esempio bisogna aggiungere «Broadcom Corp. Bluetooth Controller» i codici identificativi (ID) del costruttore e del prodotto sono rispettivamente «0a5c» e «2110».

Questi valori vanno inseriti nel profilo `xml`. Ciò può essere fatto tramite '''virsh''' con il comando '''edit <domain>''':{{{
Linea 230: Linea 253:
== Ottenere nuovi ID ==

Per avere nuovi indirizzi macchina da copiare nel file xml, usare questo comando:
= Ottenere nuovi ID =

 * Per avere nuovi indirizzi macchina da copiare nel file `xml`, usare questo comando:{{{
Linea 235: Linea 257:

Per ottenere un nuovo uuid per il file xml, usare: uuidgen
}}}
 * Per ottenere un nuovo uuid per il file `xml`, usare:{{{
uuidgen
}}}
Linea 239: Linea 263:
 *[https://help.ubuntu.com/community/KVM/Managing Documento originale]
##traduzione pagina del 20.02.2010

* [[https://help.ubuntu.com/community/KVM/Managing|Documento originale]]
Linea 243: Linea 266:
CategoryHomepage CategoryInTraduzione CategoryVirtualizzazione CategoryDaRevisionare


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

In questa pagina viene spiegata la gestione delle macchine virtuali da riga di comando o da interfaccia grafica.

Gestione da terminale

Per la gestione delle macchine virtuali da terminale usare Virsh.

  • Per ottenere l'elenco dei comandi utilizzabili digitare:

    help
  • Per informazioni aggiuntive su uno specifico comando, digitare:

    help commando

Definizione della nuova Macchina Virtuale

Prima di gestire la macchina virtuale con virsh, è necessario definirla:

 virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # define /etc/libvirt/qemu/newvm.xml
Domain newvm defined from /etc/libvirt/qemu/newvm.xml

Per elencare la nuova macchina virtuale, si deve usare list --inactive oppure list --all, dato che list senza opzioni elenca solo le macchine attualmente in esecuzione.

Come elencare le MV

Virsh consente di elencare le macchine virtuali presenti sull'host:

yhamon@paris:/etc/libvirt/qemu$ virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # help list
  NAME
    list - list domains

  SYNOPSIS
    list [--inactive | --all]

  DESCRIPTION
    Returns list of domains.

  OPTIONS
    --inactive       list inactive domains
    --all            list inactive & active domains

virsh # list
 Id Name                 State
----------------------------------
 15 mirror               running
 16 vm2                  running

virsh # list --all
 Id Name                 State
----------------------------------
 15 mirror               running
 16 vm2                  running
  - test5                shut off

Definire, indefinire, avviare, spegnere e distruggere macchine virtuali

Le macchine virtuali visualizzate con list --all sono definite da un file XML. Ogni macchina virtuale è configurata tramite un file XML in /etc/libvirt/qemu.

  • Per rimuovere una macchina virtuale dall'elenco occorre indefinirla:

    virsh # undefine test5   # WARNING: undefine will delete your XML file!
    Domain test5 has been undefined
    
    virsh # list --all
     Id Name                 State
    ----------------------------------
     15 mirror               running
     16 vm2                  running

    per indefinire una macchina virtuale bisogna innanzitutto spegnerla:

    virsh # shutdown mirror
    Domain mirror is being shutdown

    questo comando avvia lo spegnimento dolce della macchina virtuale (simile all'esecuzione dello shutdown da linea di comando), ma è anche possibile usare destroy.

    Il modo più brutale per spegnere una macchina virtuale, equivalente a un'interruzione dell'alimentazione sul sistema è:

    virsh # destroy mirror
    Domain mirror destroyed
  • Se vengono eseguiti cambiamenti al file di configurazione XML è necessario che KVM lo ricarichi prima di riavviare la macchina virtuale:

    virsh # define /etc/libvirt/qemu/mirror.xml
    Domain mirror defined from /etc/libvirt/qemu/mirror.xml
  • Quindi per riavviare la macchina virtuale:

    virsh # start mirror
    Domain mirror started

Sospensione e ripristino di una macchina virtuale

Virsh consente di sospendere e riavviare facilmente una macchina virtuale:

virsh # suspend mirror
Domain mirror suspended

virsh # resume mirror
Domain mirror resumed

Modifica degli attributi di una macchina virtuale

Libvirt memorizza la sua configurazione come .xml in /etc/libvirt/qemu. Il file .xml è facilmente comprensibile, ed è simile ai file *.vmx di VMware, quindi è possibile editare questi file sul posto e riavviare libvirt di modo che i cambiamenti abbiano effetto.

Il metodo raccomandato per la modifica degli attributi di una macchina virtuale è tramite virsh oppure virt-manager (sempre che supporti i cambiamenti hardware che volete effettuare):

  1. Esportare il file xml della macchina virtuale da editare (aka 'dump')

  2. Editare il file xml.

  3. Importare il file xml. (aka 'define')

Per esempio, per editare la macchina chiamata foo (per avere l'elenco delle macchine usare virsh list --all), eseguire:

 virsh dumpxml foo > /tmp/foo.xml
(editare /tmp/foo.xml come necessario)
 virsh define /tmp/foo.xml

Aggiunta di CPU

KVM permette di creare ospiti SMP.

Per allocare due CPU in una macchina virtuale, fare il dump del file xml come sopra, quindi editarlo per avere:

<domain type='kvm'>
  ...
  <vcpu>2</vcpu>
  ...
</domain>

Definire la macchina virtuale come sopra.

Aggiunta di memoria

Per cambiare l'allolocazione di memoria in una macchina virtuale, fare il dump del file xml come sopra, quindi editarlo per avere:

<domain type='kvm'>
  ...
  <memory>262144</memory>
  <currentMemory>262144</currentMemory>
  ...
</domain>

Definire la macchina virtuale come sopra.

Tenere a mente che l'allocazione di memoria è in kilobytes, quindi per allocare 512 MB di memoria, usare 512 * 1024, oppure 524288.

Cambiare il modello di scheda di rete

kvm e qemu attualmente e in maniera prestabilita usano il NIC «rtl8139».

I NIC supportati in Ubuntu 8.04 sono «i82551», «i82557b», «i82559er», «ne2k_pci», «pcnet», «rtl8139», «e1000», e «virtio».

Per usare un NIC alternativo, fare il dump del file xml come sopra, quindi editarlo per avere:

<domain type='kvm'>
  ...
    <interface type='network'>
      ...
      <model type='e1000'/>
    </interface>
  ...
</domain>

Ridefinire la macchina virtuale come sopra.

Aggiunta di dispositivi USB passanti

Limitazioni

  • Solamente il protocollo USB 1.1
  • Il dispositivo deve essere collegato prima dell'avvio di KVM.

  • È necessario modificare Apparmor

Modifica di Apparmor

Per consentire a un programma software di accedere correttamente a un dispositivo usb è necessario modificare Apparmor.

  • Per fare ciò editare il file /etc/apparmor.d/abstractions/libvirt-qemu e decommentare alcune linee:

    # WARNING: uncommenting these gives the guest direct access to host hardware.
    # This is required for USB pass through but is a security risk. You have been
    # warned.
    /sys/bus/usb/devices/ r,
    /sys/devices/*/*/usb[0-9]*/** r,
    /dev/bus/usb/*/[0-9]* rw,
  • Dopo le variazioni apparmor deve essere riavviato digitando in una finestra di terminale:

     sudo /etc/init.d/apparmor restart

Aggiunta di dispositivi USB

Cercare, relativamente all'USB il codice del costruttore (Vendor ID) e del prodotto (Product ID).

Per fare ciò digitare il seguente comando in una finestra di terminale:

lsusb

il risultato sarà simile al seguente:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 012: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller
Bus 005 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Se per esempio bisogna aggiungere «Broadcom Corp. Bluetooth Controller» i codici identificativi (ID) del costruttore e del prodotto sono rispettivamente «0a5c» e «2110».

Questi valori vanno inseriti nel profilo xml. Ciò può essere fatto tramite virsh con il comando edit <domain>:

<domain type='kvm'>
  <name>windowsxp</name>
  <devices>
    <hostdev mode='subsystem' type='usb'>
      <source>
        <vendor id='0x0a5c'/>
        <product id='0x2110'/>
      </source>
    </hostdev>
  </devices>
</domain>

Ottenere nuovi ID

  • Per avere nuovi indirizzi macchina da copiare nel file xml, usare questo comando:

    MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR
  • Per ottenere un nuovo uuid per il file xml, usare:

    uuidgen

Ulteriori risorse


CategoryVirtualizzazione CategoryDaRevisionare