#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
Questa pagina spiega come creare e gestire macchine virtuali (ospiti) dopo aver installato '''[[Virtualizzazione/Kvm/Installazione|KVM]]'''. La creazione di macchine virtuali può essere effettuata utilizzando principalmente:
* '''virt-manager''': un'interfaccia grafica (GUI) completa e intuitiva.
* '''virt-install''': uno strumento a riga di comando per la creazione automatizzata di VM.
* '''virsh''': l'interfaccia a riga di comando per '''libvirt''', utilizzata per la gestione delle VM esistenti.
= Creare VM da interfaccia grafica =
'''virt-manager''' è lo strumento più semplice e raccomandato per la maggior parte degli utenti per creare e gestire le macchine virtuali '''KVM'''.
0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virt-manager|virt-manager]].
0. [[AmbienteGrafico/AvviareProgrammi|Avviare]] '''Virtual Machine Manager'''.
{{{#!wiki note
Potrebbe essere richiesta la password di amministratore se l'utente non fa parte del gruppo '''libvirt''' (vedere [[Virtualizzazione/Kvm/Installazione#root|guida]]).
}}}
0. Creare una nuova macchina virtuale. Fare clic sull'icona '''Crea una nuova macchina virtuale''' (monitor con stella verde).
0. Verranno visualizzati i seguenti metodi di installazione:
* '''Local install media (ISO image or CDROM)''': installare un sistema operativo da un file ISO o da un CD/DVD fisico. (Metodo più comune).
* '''Network Install (HTTP, FTP, NFS)''': installare un sistema operativo tramite un server di installazione di rete.
* '''Import existing disk image''': configurare una VM che utilizzi un disco virtuale preesistente.
* '''Network Boot (PXE)''': avvio della VM tramite PXE da una rete.
0. Selezionare '''Local install media''' e fare clic su '''Avanti'''.
0. Specificare il percorso del media di installazione facendo clic su '''Sfoglia...''' per selezionare il file ISO del sistema operativo che si desidera installare.
0. Spuntare '''Automatically detect from the install media / source''' in modo che '''virt-manager''' tenti di rilevare il tipo di sistema operativo per ottimizzare le impostazioni.
0. Configurare RAM e CPU:
* Assegnare la quantità di RAM desiderata alla VM. Si consiglia di lasciare almeno 1GB (1024 MB) per l'host.
* Assegnare il numero di core CPU.
0. Creare o specificare il disco virtuale:
* '''Crea una nuova immagine del disco gestita''': è il metodo predefinito e raccomandato. Specificare la dimensione desiderata per il disco. '''virt-manager''' creerà un'immagine '''qcow2''' nella directory predefinita di '''libvirt''' `/var/lib/libvirt/images/`.
* '''Seleziona o crea un volume di archiviazione personalizzato''': permette di utilizzare un'immagine disco esistente o di crearne una in un percorso specifico o su un dispositivo a blocchi.
0. Configurare la rete selezionare la configurazione di rete desiderata:
* '''Virtual network 'default' (NAT)''': la VM sarà isolata nella rete virtuale predefinita di '''libvirt''' con accesso a internet tramite NAT sull'host.
* '''Bridge device''': selezionare il bridge configurato sull'host (es. '''br0'''). La VM sarà direttamente visibile sulla rete fisica.
0. Finalizzare la creazione:
* Assegnare un nome alla macchina virtuale.
* Spuntare '''Personalizza la configurazione prima di installare''' per accedere a opzioni avanzate come aggiungere più CPU, modificare il tipo di scheda di rete in '''virtio''', aggiungere dispositivi USB, ecc..
* Fare clic su '''Fine'''. La VM si avvierà e sarà possibile procedere con l'installazione del sistema operativo come su un computer fisico.
= Creare VM da terminale =
'''virt-install''' è uno script Python che permette la creazione di macchine virtuali KVM in modo automatizzato da terminale.
[[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virtinst|virtinst]].
== Esempio installazione Ubuntu Server ==
Questo esempio mostra come installare '''Ubuntu Server''' da un '''file ISO''', utilizzando '''driver Virtio''' per disco e rete.
0. È buona pratica creare il file immagine del disco prima di avviare `virt-install` per avere un maggiore controllo. Preparare un'immagine `qcow2` di 20GB:{{{
qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-server.qcow2 20G
}}}
0. Eseguire `virt-install`:{{{
sudo virt-install \
--name ubuntu-server-vm \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu-server.qcow2,bus=virtio,size=20 \
--os-variant ubuntufocal \
--network bridge=br0,model=virtio \
--cdrom /path/to/ubuntu-22.04-live-server-amd64.iso \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--virt-type kvm \
--hvm
}}}dove:
* `name ubuntu-server-vm`: è il nome della macchina virtuale.
* `memory 2048`: 2GB di RAM.
* `vcpus 2`: 2 core virtuali per la CPU.
* `disk ...`: configurazione del disco in cui:
* `path`: percorso dell'immagine.
* `bus=virtio`: per prestazioni ottimali.
* `size`: dimensione (se non specificato prima).
* `os-variant ubuntufocal`: aiuta '''libvirt''' a ottimizzare le impostazioni. Per '''Ubuntu 22.04''' si può utilizzare '''ubuntujammy''' o '''ubuntufocal'''.
* `network bridge=br0,model=virtio`: connette la VM al bridge '''br0''' sull'host usando l'interfaccia di rete '''virtio''' para-virtualizzata. Se '''br0''' non esiste si può utilizzare network=default per la rete NAT.
* `cdrom /path/to/ubuntu-22.04-live-server-amd64.iso`: percorso del file ISO per l'installazione.
* `graphics vnc,listen=0.0.0.0`: abilita l'accesso VNC da qualsiasi indirizzo. Per maggiore sicurezza si può limitare `listen=127.0.0.1`.
* `noautoconsole`: non connette automaticamente il terminale alla console della VM.
* `virt-type kvm --hvm`: specifica l'uso di KVM per la virtualizzazione hardware completa.
0. Connettersi alla VM per l'installazione. Dopo aver avviato `virt-install`, la VM sarà in esecuzione. Per accedere alla console grafica (VNC):{{{
virt-viewer --connect qemu:///system ubuntu-server-vm
}}}Si aprirà una finestra con la console della VM, dove è possibile procedere con l'installazione.
== Esempio installazione Windows ==
Per ottenere buone prestazioni l'installazione di Windows richiede l'utilizzo di driver '''Virtio'''. Questi driver non sono inclusi nella ISO di Windows e devono essere forniti separatamente.
0. Scaricare l'immagine ISO `virtio-win.iso` (ad esempio dal sito Fedora Koji) e posizionarla in una directory accessibile all'host KVM (es. `/var/lib/libvirt/images/`).
0. Preparare il disco immagine digitando:{{{
qemu-img create -f qcow2 /var/lib/libvirt/images/windows10.qcow2 60G
}}}
0. Eseguire `virt-install` per Windows:{{{
sudo virt-install \
--name windows10-vm \
--memory 4096 \
--vcpus 4 \
--disk path=/var/lib/libvirt/images/windows10.qcow2,bus=virtio,size=60 \
--disk path=/var/lib/libvirt/images/virtio-win.iso,device=cdrom \
--os-variant win10 \
--network bridge=br0,model=virtio \
--cdrom /path/to/Win10_22H2_Italian_x64.iso \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--virt-type kvm \
--hvm
}}}
{{{#!wiki note
Il primo `--disk` è per il disco di sistema (`bus=virtio`), mentre il secondo carica l'ISO dei driver '''Virtio''' come un CD-ROM virtuale. Durante l'installazione di Windows, quando viene richiesto '''Carica driver''', puntare a questo CD-ROM per installare i driver del disco e della rete.
}}}
0. Connettersi alla VM e installare i driver. Usare `virt-viewer` per accedere alla VM e seguire la procedura di installazione di Windows. Quando richiesto per i driver, caricarli dall'ISO `virtio-win.iso` montata.
= Clonazione di una macchina virtuale =
È possibile clonare una macchina virtuale esistente usando lo strumento '''virt-clone'''. Questo strumento duplicherà l'immagine del disco e creerà una nuova definizione di dominio `libvirt` con un nuovo MAC address e UUID per evitare conflitti.
Per clonare una macchina virtuale chiamata '''source-vm''' in una nuova macchina '''new-vm''':
0. Assicurarsi che la VM sorgente non sia in esecuzione:{{{
virsh shutdown source-vm
}}}E attendere che lo stato diventi `shut off`.
0. Eseguire `virt-clone`:{{{
sudo virt-clone \
--original source-vm \
--name new-vm \
--file /var/lib/libvirt/images/new-vm.qcow2
}}}Descrizione:
* `--original source-vm`: nome della VM da clonare.
* `--name new-vm`: nome della nuova VM.
* `--file /path/to/new-vm-disk.qcow2`: percorso e nome del file della nuova immagine disco per la VM clonata. Questo creerà una copia completa del disco.
Dopo la clonazione la '''new-vm''' sarà disponibile e potrà essere avviata tramite `virt-manager` o `virsh start new-vm`.
= Creazione MV da immagine preesistente - Overlay =
L'utilizzo di '''qcow2''' con ''overlay'' (snapshot basati su copy-on-write) permette di creare VM leggere occupando meno spazio su disco rispetto alla clonazione completa. È ideale per sperimentare senza alterare un'immagine di base.
0. In base alle esigenze:
* '''creare''' un'immagine `qcow2` di base. Ad esempio per un'installazione pulita di Ubuntu:{{{
qemu-img create -f qcow2 base_ubuntu.qcow2 20G
}}}
* '''convertire''' un'immagine `qcow2` esistente:{{{
qemu-img convert existing.raw -O qcow2 base_ubuntu.qcow2
}}}
0. Creare un'immagine '''overlay''' (snapshot differenziale). Questa immagine registrerà solo le modifiche rispetto all'immagine di base, conservando l'originale intatta:{{{
qemu-img create -f qcow2 -b /path/to/base_ubuntu.qcow2 /path/to/overlay_vm.qcow2
}}}`overlay_vm.qcow2` sarà il disco della nuova VM.
0. Creare una nuova macchina virtuale usando l'immagine '''overlay'''. Utilizzare '''virt-install''' o '''virt-manager''' per creare una nuova VM, puntando il disco virtuale al file `overlay_vm.qcow2` appena creato. Con '''virt-install''':{{{
sudo virt-install \
--name overlay-test-vm \
--memory 1024 \
--vcpus 1 \
--disk path=/path/to/overlay_vm.qcow2,bus=virtio \
--os-variant ubuntufocal \
--network network=default,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--virt-type kvm \
--hvm
}}}
In questo modo, la '''overlay-test-vm''' si avvierà usando `overlay_vm.qcow2` e tutte le modifiche verranno scritte solo in questo file, lasciando `base_ubuntu.qcow2` inalterato. Se la VM `overlay-test-vm` viene distrutta, basta cancellare `overlay_vm.qcow2` e crearne unoa nuova dalla base.
{{{#!wiki note
Il manuale `virt-image(5)` e lo strumento '''virt-image''' stesso sono parte di '''libguestfs-tools''' e sono utilizzati principalmente per la creazione automatizzata di VM da file XML descrittori, spesso in contesti di cloud o automazione.
}}}
= Ulteriori risorse =
* [[http://packages.ubuntu.com/search?keywords=apt-cacher-ng|apt-cacher-ng per il mirroring]]
* [[https://help.ubuntu.com/community/KVM/CreateGuests|Documento originale sul wiki Ubuntu internazionale]]
* [[https://qemu.org/|Sito ufficiale di QEMU]]
* [[https://virt-manager.org/|Sito ufficiale di virt-manager]]
----
CategoryVirtualizzazione