Dimensione: 8174
Commento:
|
Dimensione: 8306
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 4: | Linea 4: |
[[Informazioni(forum="http://forum.ubuntu-it.org/index.php/topic,371617.0.html")]] [[BR]] |
|
Linea 12: | Linea 14: |
Per la gestione delle macchine virtuali da terminale usare [http://help.ubuntu-it.org/9.10/ubuntu/serverguide/it/libvirt.html virsh]*******ancorare a sezione virsh. Per ottenere l'elenco dei comandi utilizzabili digitare "help". Per informazioni aggiuntive su uno specifico comando, digitare "help commando". | Per la gestione delle macchine virtuali da terminale usare [http://help.ubuntu-it.org/9.10/ubuntu/serverguide/it/libvirt.html virsh]*******ancorare a sezione virsh (matteo pensaci tu, io non posso, ciao). Per ottenere l'elenco dei comandi utilizzabili digitare "help". Per informazioni aggiuntive su uno specifico comando, digitare "help commando". |
Indice(depth=2) Informazioni(forum="http://forum.ubuntu-it.org/index.php/topic,371617.0.html") BR
- KVM/Gestione
Gestione delle macchine virtuali
Gestione da terminale
Per la gestione delle macchine virtuali da terminale usare [http://help.ubuntu-it.org/9.10/ubuntu/serverguide/it/libvirt.html virsh]*******ancorare a sezione virsh (matteo pensaci tu, io non posso, ciao). Per ottenere l'elenco dei comandi utilizzabili digitare "help". Per informazioni aggiuntive su uno specifico comando, digitare "help commando".
Definizione della nuova MV
Prima di poterla gestire 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
Nota: per elencare la nuova MV, 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 sul 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, distruggere MV
Le MV visualizzate con list --all sono VMs che sono state "definite" da un file XML. Ogni MV è configurata tramite un file XML in /etc/libvirt/qemu. Per rimuovere una MV dall'elenco delle MV 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 MV (simile all'esecuzione dello shutdown da linea di comando) - ma è anche possibile usare "destroy", il modo più brutale di spegnere una MV, equivalente ad una interruzione dell'alimentazione sul sistema:
virsh # destroy mirror Domain mirror destroyed
se vengono eseguiti cambiamente al file di confiurazione XML, è necessario che KVM lo ricarichi prima di riavviare la MV:
virsh # define /etc/libvirt/qemu/mirror.xml Domain mirror defined from /etc/libvirt/qemu/mirror.xml
Quindi per riavviare la MV:
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'. 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:
- Esportare il file xml della MV da editare (aka 'dump')
- editare il file xml
- 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 (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 MV, fare il dump del file xml come sopra, quindi editarlo per avere:
<domain type='kvm'> ... <vcpu>2</vcpu> ... </domain>
Definire la MV come sopra.
Aggiunta di memoria
Per cambiare l'alolocazione di memoria in una MV, fare il dump del file xml come sopra, quindi editarlo per avere:
<domain type='kvm'> ... <memory>262144</memory> <currentMemory>262144</currentMemory> ... </domain>
Definire la MV 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:
<domain type='kvm'> ... <interface type='network'> ... <model type='e1000'/> </interface> ... </domain>
Ridefinire la MV come sopra.
Aggiunta di dispositivi USB passanti
Limitazioni
- Solamente il protocollo USB 1.1
- 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:
# 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:
$ sudo /etc/init.d/apparmor restart
Aggiunta di dispositivi USB
Innanzitutto cercare, relativamente all'USB il codice del costruttore (Vendor ID) e del prodotto (Product ID):
$ lsusb 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
[https://help.ubuntu.com/community/KVM/Managing Documento originale]