#format wiki
#LANGUAGE it
<
>
<>
<>
<>
= Introduzione =
Questa pagina spiega come creare e gestire macchine virtuali (ospiti) dopo aver installato '''[[Virtualizzazione/Kvm/Installazione|KVM]]''' su Ubuntu 22.04 e versioni successive.
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.
= Virt-manager: Creazione di una VM tramite interfaccia grafica =
'''virt-manager''' è lo strumento più semplice e raccomandato per la maggior parte degli utenti per creare e gestire le macchine virtuali KVM.
[[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 la guida di installazione).
}}}
0. Creare una nuova macchina virtuale. Cliccare sull'icona "Crea una nuova macchina virtuale" (un monitor con una stella verde).
* Metodo di installazione:
* "Local install media (ISO image or CDROM)": Utilizzato per installare un sistema operativo da un file ISO o da un CD/DVD fisico. Questo è il metodo più comune.
* "Network Install (HTTP, FTP, NFS)": Utilizzato per installare un sistema operativo tramite un server di installazione di rete.
* "Import existing disk image": Utilizzato per configurare una VM che utilizzi un disco virtuale preesistente.
* "Network Boot (PXE)": Utilizzato per l'avvio della VM tramite PXE da una rete.
* Selezionare "Local install media" e cliccare "Avanti".
0. Specificare il percorso del media di installazione:
* Cliccare "Sfoglia..." per selezionare il file ISO del sistema operativo che si desidera installare.
* Spuntare "Automatically detect from the install media / source". virt-manager tenterà di rilevare il tipo di sistema operativo e la variante 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": Questo è 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 usare 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 (es. aggiungere più CPU, modificare il tipo di scheda di rete in virtio, aggiungere dispositivi USB, ecc.).
* Cliccare "Fine". La VM si avvierà e sarà possibile procedere con l'installazione del sistema operativo come su un computer fisico.
= Virt-install: Creazione di una VM tramite riga di comando =
'''virt-install''' è uno script Python che permette la creazione di macchine virtuali KVM in modo automatizzato da terminale. È utile per scripting o per utenti esperti.
[[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virtinst|virtinst]].
== Esempio di installazione di Ubuntu Server ==
Questo esempio mostra come installare Ubuntu Server da un file ISO, utilizzando driver Virtio per disco e rete.
0. Preparare il disco immagine. È buona pratica creare il file immagine del disco prima di avviare `virt-install` per avere un maggiore controllo. 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
}}} Spiegazione degli argomenti:{{{
--name ubuntu-server-vm: Nome della macchina virtuale.
--memory 2048: 2 GB di RAM.
--vcpus 2: 2 core virtuali per la CPU.
--disk ...: Configurazione del disco. path è il percorso dell'immagine, bus=virtio per prestazioni ottimali, size è la dimensione (se non specificato prima).
--os-variant ubuntufocal: Aiuta libvirt a ottimizzare le impostazioni. Per Ubuntu 22.04, si può usare ubuntujammy o ubuntufocal.
--network bridge=br0,model=virtio: Connette la VM al bridge br0 sull'host, usando l'interfaccia di rete virtio paravirtualizzata. Se br0 non esiste, si può usare 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 di installazione di Windows ==
L'installazione di Windows richiede l'uso di driver virtio per ottenere buone prestazioni. Questi driver non sono inclusi nell'ISO di Windows e devono essere forniti separatamente.
0. Scaricare i driver Virtio per Windows. Scaricare l'immagine ISO `virtio-win.iso` (ad esempio da Fedora Koji) e posizionarla in una directory accessibile all'host KVM (es. `/var/lib/libvirt/images/`).
0. Preparare il disco immagine:{{{
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).<
>Il secondo --disk 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
}}} (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: Specifica il nome della VM da clonare.
* --name new-vm: Specifica il nome della nuova VM.
* --file /path/to/new-vm-disk.qcow2: Specifica il percorso e il 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 di una macchina virtuale da un'immagine preesistente / Overlay (snapshot) =
L'uso di '''qcow2''' con overlay (snapshot basati su copy-on-write) permette di creare VM leggere e usa meno spazio su disco rispetto alla clonazione completa. È ideale per sperimentare senza alterare un'immagine di base.
0. Creare un'immagine di base (se non già presente). Assicurarsi di avere un'immagine 'qcow2' di base. Per esempio, un'installazione pulita di Ubuntu:{{{
qemu-img create -f qcow2 base_ubuntu.qcow2 20G
}}}
{{{#!wiki note
Oppure convertire un'immagine esistente in qcow2: `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 uno nuovo 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. La procedura descritta originariamente era più complessa del necessario per la creazione di overlay con qemu-img e virt-install/virt-manager.
= 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 (Community Ubuntu)]]
* [[https://qemu.org/|Sito ufficiale di QEMU]]
* [[https://virt-manager.org/|Sito ufficiale di virt-manager]]
* [[https://help.ubuntu.com/community/KVM/CreateGuests|Documento originale]]
----
CategoryHomepage CategoryNuoviDocumenti