libvirt
La libreria libvirt è utilizzata per interfacciarsi con differenti tecnologie di virtualizzazione. Prima di iniziare a utilizzare libvirt è utile accertarsi che il proprio hardware supporti le estensioni di virtualizzazione necessarie per KVM. In un terminale, digitare quanto segue:
kvm-ok
Verrà stampato un messaggio che indica se la CPU supporta o non supporta la virtualizzazione hardware.
Nella maggior parte dei processori che supportano la virtualizzazione è necessario attivarla attraverso un'opzione nel BIOS.
Rete virtuale
Esistono diversi modi per consentire accesso alla rete esterna a una macchina virtuale. La configurazione di rete predefinita è usermode, che utilizza il protocollo SLIRP e il traffico è passato attraverso l'interfaccia dell'host verso la rete esterna.
Affinché gli host esterni possano accedere i servizi su una macchina virtuale, è necessario configurare un bridge. Questo consente alle interfacce virtuali di connettersi alla rete esterna attraverso l'interfaccia fisica, facendole apparire come normali host al resto della rete. Per informazioni su come impostare un bridge, consultare Bridging.
Installazione
Per installare i pacchetti necessari, da un terminale digitare:
sudo apt-get install kvm libvirt-bin
Dopo aver installato libvirt-bin, l'utente usato per la gestione delle macchine virtuali deve essere aggiunto al gruppo libvirtd. In questo modo, all'utente è garantito accesso alle configurazioni avanzate di rete.
In un terminale digitare:
sudo adduser $USER libvirtd
Se l'utente scelto è quello corrente, è necessario terminare la sessione e ri-accedervi affinché le modifiche abbiano effetto.
È ora possibile installare un sistema operativo ospite. La procedura di installazione di una macchina virtuale è la stessa di un sistema operativo normale ed è quindi necessario automatizzare la procedura oppure avere una tastiera e uno schermo collegati al computer.
Nel caso delle macchine virtuali, un'interfaccia grafica è analoga all'uso di una tastiera e di un mouse. Invece di installare un'interfaccia grafica, è possibile usare virt-viewer per connettersi alla console di una macchina virtuale via VNC. Per maggiori informazioni, consultare la Visualizzatore di macchine virtuali.
There are several ways to automate the Ubuntu installation process, for example using preseeds, kickstart, etc. Refer to the Ubuntu Installation Guide for details.
Un altro metodo per installare una macchina virtuale Ubuntu consiste nell'usare l'applicazione ubuntu-vm-builder. ubuntu-vm-builder consente di impostare partizioni avanzate, eseguire script personalizzati post-installazione, ecc... Per maggiori informazioni, consultare JeOS e vmbuilder
virt-install
virt-install is part of the virtinst package. To install it, from a terminal prompt enter:
sudo apt-get install virtinst
Durante l'uso di virt-install sono disponibili molte azioni, per esempio:
sudo virt-install -n web_devel -r 256 \
--disk path=/var/lib/libvirt/images/web_devel.img,bus=virtio,size=4 -c \
jeos.iso --accelerate --network network=default,model=virtio \
--connect=qemu:///system --vnc --noautoconsole -v
-
-n web_devel: il nome della nuova macchine virtuale usato in questo esempio sarà web_devel.
-
-r 256: specifies the amount of memory the virtual machine will use in megabytes.
-
--disk path=/var/lib/libvirt/images/web_devel.img,size=4: indicates the path to the virtual disk which can be a file, partition, or logical volume. In this example a file named web_devel.img in the /var/lib/libvirt/images/ directory, with a size of 4 gigabytes, and using virtio for the disk bus.
-
-c jeos.iso: il file usato come CD-ROM virtuale. Il file può essere un file ISO o il percorso al device del CD-ROM nell'host.
-
--accelerate: abilita letecnologie di accelerazione nel kernel.
-
--network provides details related to the VM's network interface. Here the default network is used, and the interface model is configured for virtio.
-
--vnc: esporta la console virtuale usando VNC.
-
--noautoconsole: non si collegherà automaticamente alla console della macchina virtuale.
-
-v: crea un ospite completamente virtualizzato.
Una volta lanciata virt-install è possibile collegarsi alla console della macchina virtuale utilizzando, localmente, un'interfaccia grafica oppure l'utilità virt-viewer.
virt-clone
L'applicazione virt-clone può essere usata per copiare una macchina virtuale in un'altra, per esempio:
sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img \
--connect=qemu:///system
-
-o: macchina virtuale originale.
-
-n: nome della nuova macchina virtuale.
-
-f: percorso al file, volume logico o partizione da usare per la nuova macchina virtuale.
-
--connect: specifica a quale hypervisor collegarsi.
Usare anche le opzioni -d o --debug per risolvere i problemi che potrebbero verificarsi con virt-clone.
Sostituire web_devel e database_devel con i nomi delle macchine virtuali appropriati.
Gestire la macchina virtuale
virsh
Sono disponibili diverse utilità per la gestione delle macchine virtuali e di libvirt. L'utilità virsh può essere utilizzata dalla riga di comando. Alcuni esempi:
-
Per elencare le macchine virtuali in esecuzione:
virsh -c qemu:///system list
-
Per avviare una macchina virtuale:
virsh -c qemu:///system start web_devel
-
Similmente, per lanciare una macchina virtuale durante l'avvio del computer:
virsh -c qemu:///system autostart web_devel
-
Riavviare una macchina virtuale con:
virsh -c qemu:///system reboot web_devel
-
Lo stato di una macchina virtuale può essere salvato in un file per poterlo ripristinare successivamente. Il seguente comando salva lo stato della macchina virtuale in un file nominato in base alla data.
virsh -c qemu:///system save web_devel web_devel-022708.state
Una volta salvata, la macchina virtuale non sarà più in esecuzione.
-
Per ripristinare una macchina virtuale:
virsh -c qemu:///system restore web_devel-022708.state
-
Per arrestare una macchina virtuale:
virsh -c qemu:///system shutdown web_devel
-
Per montare un CD-ROM in una macchina virtuale, digitare:
virsh -c qemu:///system attach-disk web_devel /dev/cdrom /media/cdrom
Nell'esempio precedente, sostituire web_devel con il nome della macchina virtuale appropriata e web_devel-022708.state con un nome file descrittivo.
Gestore macchina virtuale
Il pacchetto virt-manager contiene un'utilità grafica per gestire le macchie virtuali locali e remote. Per installare virt-manager digitare:
sudo apt-get install virt-manager
Dato che virt-manager richiede un'interfaccia grafica (GUI), è raccomandato installarlo su una workstation o una postazione di prova invece che un server di produzione. Per connettersi al servizio libvirt locale:
virt-manager -c qemu:///system
È possibile collegarsi al servizio libvirt in esecuzione su un altro host digitando, in un terminale:
virt-manager -c qemu+ssh://virtnode1.mydomain.com/system
L'esempio precedente assume che la connessione SSH tra il sistema di gestione e virtnode1.mydomain.com sia già configurata e utilizzi le chiavi SSH per l'autenticazione. Le chiavi SSH sono necessarie perché libvirt invia il prompt password a un altro processo. Per maggiori informazioni sulla configurazione di SSH, consultare la Server OpenSSH
Visualizzatore di macchine virtuali
L'applicazione virt-viewer consente di collegarsi alla console di una macchina virtuale. virt-viewer non richiede un'interfaccia grafica per interagire con la macchina virtuale.
Per installare virt-viewer, da un terminale digitare:
sudo apt-get install virt-viewer
Una volta installata e in esecuzione, è possibile connettersi alla console della macchina virtuale digitando:
virt-viewer -c qemu:///system web_devel
Analogamente a virt-manager, virt-viewer può collegarsi a un host remoto utilizzando SSH con chiave di autenticazione:
virt-viewer -c qemu+ssh://virtnode1.miodominio.it/system web_devel
Assicurarsi di sostituire web_devel con il nome corretto della macchina virtuale.
Se configurato per usare un'interfaccia di rete bridged, è anche possibile impostare accesso SSH alla macchina virtuale. Per maggiori informazioni, consultare Server OpenSSH e Bridging.
Risorse
-
Per maggiori informazioni, consultare il sito web di KVM.
-
Per maggiori informazioni su libvirt, consultare il sito web di libvirt
-
Il sito di Virtual Machine Manager dispone di ulteriori informazioni riguardo lo sviluppo di virt-manager.
-
È anche possibile passare nel canale IRC #ubuntu-virt su freenode per discutere delle tecnologie di virtualizzazione in Ubuntu.
-
Un'altra ottima risorsa è la documentazione online riguardo KVM.