Installare KVM su Debian: differenze tra le versioni

m
rimosso collegamento obsoleto
m (rimosso collegamento obsoleto)
 
(7 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Stub}}
{{Versioni compatibili|Wheezy|Jessie}}
Appunti per una guida su come installare, configurare e gestire KVM.
 
== Prerequisiti ==
== Prerequisiti ==
Kernel-based Virtual Machine ([http://www.linux-kvm.org KVM]) è un'infrastruttura di virtualizzazione del kernel Linux. KVM attualmente supporta una completa virtualizzazione usando Intel VT o AMD-V.
Kernel-based Virtual Machine ([http://www.linux-kvm.org KVM]) è un'infrastruttura di virtualizzazione del kernel Linux. KVM attualmente supporta una completa virtualizzazione usando Intel VT o AMD-V.
Riga 24: Riga 22:


== Installazione ==
== Installazione ==
=== Debian 7 ([[Wheezy]]) ===
A causa di alcuni bug presenti nel pacchetto libvirt di Wheezy è consigliabile installare una versione più aggiornata dal repository backports (assicurarsi quindi che [[Il repository Backports|il repository backport]] sia presente nel file <code>/etc/apt/sources.list</code>):
A causa di alcuni bug presenti nel pacchetto libvirt di Wheezy è consigliabile installare una versione più aggiornata dal repository backports (assicurarsi quindi che [[Il repository Backports|il repository backport]] sia presente nel file <code>/etc/apt/sources.list</code>):
<pre>
<pre>
# apt-get -t wheezy-backports install qemu-kvm virtinst libvirt-bin bridge-utils screen debconf
# apt-get -t wheezy-backports install qemu-kvm virtinst libvirt-bin bridge-utils screen debconf acpi-support acpid
</pre>
</pre>
=== Debian 8 ([[Jessie]]) ===
È sufficiente:
<pre>
# apt-get install qemu-kvm virtinst libvirt-bin bridge-utils screen debconf acpi-support acpid
</pre>
== Preparazione del sistema ==
Diamo la possibilità all'utente con il quale siamo loggati (root) di gestire le macchine virtuali, aggiungendolo ai gruppi corretti:
Diamo la possibilità all'utente con il quale siamo loggati (root) di gestire le macchine virtuali, aggiungendolo ai gruppi corretti:
<pre>
<pre>
# adduser `id -un` libvirt
# adduser $(id -un) libvirt
# adduser `id -un` kvm
# adduser $(id -un) kvm
</pre>
</pre>
ed eventualmente estendiamo questa possibilità anche a uno o più altri utenti:
ed eventualmente estendiamo questa possibilità anche a uno o più altri utenti:
Riga 116: Riga 124:
Riavviamo infine i servizi di rete:
Riavviamo infine i servizi di rete:
<pre>
<pre>
# /etc/init.d/networking restart
# service networking restart
</pre>
</pre>


Riga 131: Riga 139:
# adduser ferdy libvirt
# adduser ferdy libvirt
</pre>
</pre>
La connessione della workstation al nostro server KVM verrà effettuata in forma sicura attraverso il protocollo SSH. Dobbiamo quindi verificare che SSH sia configurato correttamente sul server e sulla workstation, ad esempio seguendo le guide del nostro wiki:
La connessione della workstation al nostro server KVM verrà effettuata in forma sicura attraverso il protocollo SSH. Dobbiamo quindi verificare che SSH sia configurato correttamente sul server e sulla workstation, ad esempio seguendo la [[SSH | guida]] nel nostro wiki.
* [[OpenSSH: configurazione di base]]
 
* [[Ssh e autenticazione tramite chiavi]]
Una volta verificato il corretto funzionamento di SSH, possiamo aggiungere una connessione dalla nostra workstation al demone libvirt del server:
Una volta verificato il corretto funzionamento di SSH, possiamo aggiungere una connessione dalla nostra workstation al demone libvirt del server:
<pre>
<pre>
Riga 159: Riga 166:
# virt-install --connect qemu:///system -n virtualmachine -r 2048 --vcpus=2 --disk path=/var/lib/libvirt/images/virtualmachine.img,size=12 -c /var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm
# virt-install --connect qemu:///system -n virtualmachine -r 2048 --vcpus=2 --disk path=/var/lib/libvirt/images/virtualmachine.img,size=12 -c /var/lib/libvirt/images/debian-6.0.0-amd64-netinst.iso --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm
</pre>
</pre>
A questo punto è possibile collegarci via VNC al server, oppure utilizzare il tool Virtual Machine Manager dalla nostra workstation, e completare l'installazione della macchina virtuale.
<br/>
<br/>
Le opzioni hanno il seguente significato:
Le opzioni hanno il seguente significato:
* ''-n'': nome della virtual machine
* ''-n'': nome della virtual machine
Riga 204: Riga 214:
e riavviare.
e riavviare.


 
== Amministrazione delle macchine virtuali ==
Sul server:
La shell interattiva ''virsh'' è il tool principale per la gestione delle macchine virtuali. Per lanciare virsh sarà necessario lanciare dal server il comando:
<pre>
<pre>
# virsh list
# virsh --connect qemu:///system
# apt-get install acpi-support acpid
# virsh start my-guest-vm
# virsh shutdown my-guest-vm
# virsh destroy my-guest-vm
</pre>
</pre>
Per arrestare una VM Windows senza essere loggati:
Si presenterà quindi una vera e propria shell interattiva:
<pre>
<pre>
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shutdownwithoutlogon
Welcome to virsh, the virtualization interactive terminal.
Type:  'help' for help with commands
      'quit' to quit
virsh #
</pre>
Per ottenere la lista dei comandi disponibili è sufficiente:
<pre>
virsh # help
Commands:
    help            print help
    attach-device  attach device from an XML file
    attach-disk    attach disk device
    attach-interface attach network interface
    autostart      autostart a domain
    capabilities    capabilities
    cd              change the current directory
    connect        (re)connect to hypervisor
    ....
    version        show version
    vncdisplay      vnc display
    snapshot-create Create a snapshot
    snapshot-current Get the current snapshot
    snapshot-delete Delete a domain snapshot
    snapshot-dumpxml Dump XML for a domain snapshot
    snapshot-list  List snapshots for a domain
    snapshot-revert Revert a domain to a snapshot
</pre>
I comandi disponibili per virsh sono moltissimi e permettono di gestire qualsiasi aspetto di una macchina virtuale, dal suo stato, alla gestione dei dischi virtuali, fino alla gestione delle reti interne.
<br/>
I comandi sicuramente più utilizzati sono quelli relativi alla gestione di un guest, cioè ''list'', ''start'', ''shutdown'', ''reboot'', destroy, ''suspend'' e ''resume''.
* ''start'' permette di avviare la virtual machine. In aggiunta, è utile citare il comando ''autostart'' che permette di comunicare a libvirt di avviare automaticamente le virtual machine all’avvio del sistema.
* ''shutdown'' permette di inviare al sistema guest un segnale di shutdown, simulando ciò che accade sulle macchine fisiche quando viene premuto il tasto di accensione
* ''reboot'' invia alla macchina virtuale il segnale di reboot che avvierà un processo di riavvio pulito del sistema.
* ''destroy'' fa in modo che il processo della virtual machine venga ucciso. Dal punto di vista della virtual machine questo è l’equivalente di un blackout, la corrente viene interrotta bruscamente. Ovviamente come succede per le macchine reali, questo comando potrebbe creare inconsistenze sul filesystem del guest anche se ovviamente non causerà alcun danno reale all’hardware
* ''suspend'' fa in modo che l’esecuzione della virtual machine venga interrotta. La ram rimarrà comunque occupata, ma la macchina virtuale non occuperà più alcuna risorsa relativa a CPU, HD e rete fino al resume.
* ''resume'' permette di far uscire la virtual machine dallo stato di ibernazione attivato con suspend
Menzione particolare meritano anche i comandi ''save'' e ''restore''.
* ''Save'' richiede, oltre al nome della virtual machine anche un parametro aggiuntivo, cioè il filename dove salvare lo stato del sistema guest. Al contrario di suspend, questo comando permette di salvare tutto ciò che concerne la virtual machine (ram, registri del processore, interrupts, eccetera, eccetera…) in un file, e terminare il processo del sistema guest. Questo fa si che una Virtual Machine possa essere spostata completamente da un host all’altro senza che il sistema e le applicazioni al suo interno ne risentano minimamente.
* ''Restore'', come la sua controparte richiede come parametro aggiuntivo il file da cui leggere lo stato della virtual machine da ripristinare.


0=disabled
== Sitografia ==
1=enabled
[http://www.miamammausalinux.org/2011/06/implementazione-di-un-server-di-virtualizzazione-con-kvm/ Mia mamma usa Linux]
</pre>
Memo: http://www.miamammausalinux.org/2011/06/implementazione-di-un-server-di-virtualizzazione-con-kvm/


{{Autori
{{Autori
Riga 226: Riga 271:
}}
}}


[[Categoria:Virtualizzazione]][[Categoria:Stub]]
[[Categoria:Virtualizzazione]]
3 581

contributi