- 1 Introduzione
- 2 Confronto tra KVM e Altre Tecnologie di Virtualizzazione
- 3 Costruzione di un Ambiente KVM su Ubuntu [Installation & Initial Setup]
- 4 Creazione e Gestione delle Macchine Virtuali
- 5 Configurazione e Espansione della Rete
- 6 Gestione dello Storage e Operazioni sui Dischi
- 7 Installazione e Operazione del Guest OS
- 8 Casi d’Uso Pratici e Consigli per l’Automazione
- 9 Risoluzione dei Problemi e Soluzioni per Errori Comuni
- 10 Ottimizzazione della Sicurezza e delle Prestazioni
- 11 Riepilogo e Risorse per l’Apprendimento Ulteriore
- 12 Riferimento rapido ai comandi e impostazioni comuni (Cheat Sheet)
- 13 FAQ (Domande frequenti)
- 13.1 Q1: Quali sono le differenze tra KVM, VirtualBox e VMware?
- 13.2 Q2: Come eseguo il backup e il ripristino delle macchine virtuali?
- 13.3 Q3: Come posso utilizzare dispositivi USB all’interno di una macchina virtuale?
- 13.4 Q4: Come posso avviare automaticamente una VM quando l’host si avvia?
- 13.5 Q5: Cosa devo fare se le prestazioni della VM sono lente?
- 13.6 Q6: Ho problemi con le impostazioni di rete. Cosa devo controllare?
- 13.7 Q7: È possibile creare cluster o configurazioni HA con KVM?
Introduzione
Ubuntu è una delle distribuzioni Linux più utilizzate al mondo. È popolare in una varietà di scenari, dagli utenti individuali agli ambienti aziendali, e viene spesso scelta per il deployment di server e configurazioni di sviluppo. Se desideri implementare la virtualizzazione avanzata su Ubuntu, una delle soluzioni più potenti è KVM (Kernel-based Virtual Machine).
KVM è una tecnologia di hypervisor integrata direttamente nel kernel Linux. Sfruttando le estensioni di virtualizzazione hardware (come Intel VT o AMD-V), KVM offre alte prestazioni e stabilità. Essendo open-source, KVM ti permette di costruire un’infrastruttura di virtualizzazione completa con costi minimi.
La tecnologia di virtualizzazione può sembrare intimidatoria all’inizio. Tuttavia, con Ubuntu e KVM, anche i principianti possono creare e gestire facilmente macchine virtuali. Naturalmente, KVM è anche raccomandato per utenti intermedi che desiderano ottimizzare le risorse dei server fisici, nonché per ingegneri che intendono virtualizzare sistemi di produzione.
Questo articolo fornisce una guida completa per costruire un ambiente di virtualizzazione basato su KVM su Ubuntu, inclusi i passaggi di installazione, l’uso base, consigli pratici e soluzioni per la risoluzione dei problemi. Se stai considerando di adottare KVM o vuoi sfruttare al massimo le funzionalità di virtualizzazione di Ubuntu, assicurati di leggere fino alla fine.
Confronto tra KVM e Altre Tecnologie di Virtualizzazione
Esistono varie tecnologie di virtualizzazione disponibili, ma su Ubuntu, KVM, VirtualBox e VMware sono comunemente utilizzate. Questa sezione spiega le caratteristiche e le differenze di ciascuna, nonché i pro e i contro della scelta di KVM.
Principali Tipi di Tecnologie di Virtualizzazione
- KVM (Kernel-based Virtual Machine) KVM è una funzionalità di virtualizzazione integrata nel kernel Linux e richiede Linux come sistema operativo host. Utilizzando le estensioni di virtualizzazione hardware (Intel VT o AMD-V), KVM offre macchine virtuali ad alte prestazioni adatte per ambienti di produzione. Supporta una gestione flessibile attraverso strumenti da linea di comando e manager GUI come virt-manager.
- VirtualBox VirtualBox è un software di virtualizzazione orientato al desktop fornito da Oracle. Funziona su Windows, Mac e Linux, e presenta un’interfaccia facile da comprendere, rendendolo una scelta popolare per uso personale ed educativo. Tuttavia, rispetto a KVM, è meno adatto per ambienti commerciali o ad alto carico.
- VMware (Workstation/ESXi, ecc.) VMware è una soluzione di virtualizzazione commerciale ampiamente utilizzata, nota per il suo ricco set di funzionalità e supporto completo. Tuttavia, è richiesta una licenza a pagamento. Sebbene sia spesso scelta per deployment aziendali su larga scala, il costo può essere un fattore da considerare.
Vantaggi di KVM
- Alte Prestazioni e Stabilità KVM esegue come parte del kernel Linux, fornendo una gestione efficiente delle risorse e un controllo granulare sull’allocazione di CPU e memoria per ogni VM. È altamente stabile per l’esecuzione di sistemi aziendali reali.
- Open Source e Nessun Costo di Licenza KVM è completamente open-source e gratuito da utilizzare, rendendolo ideale per costruire piattaforme di virtualizzazione a basso costo.
- Ricchi Strumenti di Gestione e Supporto per l’Automazione Sono disponibili varie opzioni di gestione, inclusi strumenti da linea di comando (virsh, virt-install) e tool GUI (virt-manager). KVM è anche ben adatto per l’automazione e lo scripting, rendendolo ideale per DevOps e gestione dell’infrastruttura.
Svantaggi di KVM
- Requisito di Host Solo Linux Poiché KVM richiede il kernel Linux, non può essere utilizzato come host su ambienti Windows o Mac.
- Conoscenza Linux Necessaria per l’Impostazione Iniziale e la Risoluzione dei Problemi Sebbene siano disponibili tool GUI, alcune impostazioni di rete e ottimizzazioni avanzate potrebbero richiedere operazioni da linea di comando o conoscenze specifiche di Linux.
Quando Scegliere KVM?
- Quando si desidera utilizzare in modo efficiente le risorse del server fisico
- Quando si ha bisogno di virtualizzazione per sistemi di produzione o applicazioni server
- Quando si vuole costruire un’infrastruttura di virtualizzazione robusta a basso costo
- Quando si vuole automatizzare le operazioni del server Linux o la gestione dell’infrastruttura
KVM è un’eccellente tecnologia di virtualizzazione non solo per utenti e ingegneri Linux esperti, ma anche per coloro che vogliono provare a eseguire server su scala completa in futuro.
Costruzione di un Ambiente KVM su Ubuntu [Installation & Initial Setup]
Per utilizzare KVM su Ubuntu, è necessario soddisfare determinati prerequisiti, eseguire alcune preparazioni e quindi procedere con l’installazione. Questa sezione guida attraverso i passaggi richiesti per iniziare con KVM, con consigli per aiutare i principianti a configurare l’ambiente in modo fluido.
Prerequisiti e Controlli Preliminari
Per utilizzare KVM, il CPU del computer o del server deve supportare le estensioni di virtualizzazione (Intel VT o AMD-V).
Prima di tutto, verifica se la virtualizzazione hardware è abilitata con il seguente comando:
egrep -c '(vmx|svm)' /proc/cpuinfo
Se l’output è 1 o maggiore, il supporto per la virtualizzazione è disponibile.
Inoltre, è necessario eseguire una versione a 64 bit di Ubuntu.
Installazione di KVM e Pacchetti Richiesti
Installa il core KVM e gli strumenti correlati (come libvirt e virt-manager) utilizzando i seguenti comandi:
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm: Pacchetto core per la virtualizzazione KVMlibvirt-daemon-system,libvirt-clients: Servizi di gestione per le macchine virtualibridge-utils: Strumenti per la configurazione del bridge di retevirt-manager: Strumento GUI per la gestione delle macchine virtuali
Configurazione dei Gruppi Utente e dei Permessi
Dopo l’installazione, aggiungi l’utente corrente ai gruppi kvm e libvirt. Questo consente di gestire le VM senza privilegi root.
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)
Esci e accedi nuovamente, o riavvia, per applicare le modifiche.
Verifica dello Stato del Servizio KVM
Controlla che KVM sia installato correttamente e che il servizio sia in esecuzione:
sudo systemctl status libvirtd
Se mostra “active (running)”, tutto funziona.
Puoi anche verificare KVM con questo comando:
virsh list --all
Se vedi un elenco (attualmente vuoto) di VM, l’ambiente KVM è configurato correttamente.
Creazione e Gestione delle Macchine Virtuali
Una volta che l’ambiente KVM è pronto, puoi iniziare a creare e gestire le macchine virtuali. Con KVM, puoi utilizzare sia strumenti grafici (virt-manager) che strumenti da riga di comando (virt-install, virsh), a seconda delle tue esigenze. Qui introduciamo entrambi gli approcci.
Creazione di una VM Utilizzando virt-manager (GUI)
virt-manager è uno strumento grafico che ti permette di creare e gestire facilmente le macchine virtuali. Se stai utilizzando un ambiente desktop Linux, virt-manager è molto comodo.
- Avvia
virt-managerdal menu delle applicazioni o dalla riga di comando. - Clicca sul pulsante “New” in alto a sinistra.
- Seleziona la posizione del tuo media di installazione (come un’immagine ISO) e scegli il tipo di OS guest (ad esempio, Ubuntu, Windows).
- Imposta il numero di CPU, la dimensione della memoria, la dimensione del disco, ecc. per la VM.
- Rivedi le impostazioni e clicca “Finish” per creare la VM. Verrà visualizzato lo schermo di installazione.
Con virt-manager, puoi anche avviare, arrestare e riavviare le VM, acquisire snapshot e aggiungere reti o dischi tramite un’interfaccia intuitiva.
Creazione di una VM Utilizzando virt-install (CLI)
Per ambienti server o remoti, è spesso più semplice creare le VM dalla riga di comando.
Ecco un esempio base utilizzando virt-install:
sudo virt-install
--name ubuntu-vm
--memory 2048
--vcpus 2
--disk size=20
--cdrom /path/to/ubuntu.iso
--os-type linux
--os-variant ubuntu20.04
--network network=default
--graphics vnc
--name: Nome della macchina virtuale--memory: Allocazione della memoria (in MB)--vcpus: Numero di core CPU--disk size=20: Dimensione del disco (in GB)--cdrom: Percorso all’immagine ISO per l’installazione--os-type,--os-variant: Tipo e versione del SO--network: Rete a cui connettersi--graphics: Modalità grafica (ad es., VNC)
Dopo aver eseguito questo comando, la VM si avvierà e lo schermo di installazione verrà visualizzato tramite VNC o un altro metodo specificato.
Avvio, Arresto, Eliminazione e Creazione di Snapshot delle Macchine Virtuali
Gestire le tue macchine virtuali con KVM è semplice. Ecco alcuni comandi comunemente usati:
- Avviare una macchina virtuale:
virsh start <vm-name>
- Arrestare una macchina virtuale:
virsh shutdown <vm-name>
- Arrestare forzatamente una macchina virtuale:
virsh destroy <vm-name>
- Eliminare una macchina virtuale (nota: elimina anche il suo disco):
virsh undefine <vm-name>
- Creare uno snapshot:
virsh snapshot-create-as <vm-name> <snapshot-name>
Puoi anche eseguire queste operazioni dall’interfaccia grafica di virt-manager.
Configurazione e Espansione della Rete
Le impostazioni di rete sono cruciali quando si eseguono macchine virtuali con KVM. Sebbene le impostazioni predefinite funzionino per molti casi, ambienti aziendali o di produzione richiedono spesso personalizzazioni. Questa sezione spiega la rete KVM di base e le impostazioni avanzate comunemente usate.
Differenze tra NAT Predefinito (virbr0) e Reti Bridge
Quando KVM è installato, crea automaticamente un bridge di rete virtuale chiamato “virbr0”. Si tratta di una rete NAT (Network Address Translation) con le seguenti caratteristiche:
- Caratteristiche di virbr0 (modalità NAT):
- Le VM possono accedere a internet esterno
- Tuttavia, l’accesso diretto alle VM dall’host o da altre reti richiede il port forwarding
- Ideale per laboratori domestici, sviluppo o test
D’altra parte, una “rete bridge” consente alle VM di unirsi allo stesso segmento di rete dell’host fisico.
- Caratteristiche della rete bridge:
- Le VM si uniscono allo stesso segmento di rete dell’host
- I PC fisici o altri server possono accedere direttamente alle VM
- Ideale per server interni o servizi di produzione
Creazione e Configurazione di un Bridge Personalizzato (per Accesso LAN)
Se desideri che le VM siano direttamente accessibili da altri PC o server, crea una rete bridge. Di seguito è riportata una procedura tipica (supponendo che la NIC dell’host sia eth0):
- Installa bridge-utils (salta se già installato)
sudo apt install bridge-utils
- Modifica il file di configurazione della rete Su Ubuntu 18.04 e versioni successive, viene utilizzato Netplan. Modifica
/etc/netplan/01-netcfg.yaml, ad esempio:network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no bridges: br0: interfaces: [eth0] dhcp4: yes
- Applica le impostazioni
sudo netplan apply
- Aggiungi il nuovo bridge (br0) alla rete KVM Cambia l’adattatore di rete della tua VM su br0 utilizzando virt-manager o virsh.
Assegnazione di IP Statici e Impostazione del Port Forwarding
- Assegnazione di IP Statici Tipicamente, imposta un IP statico nel SO della VM, o usa il server DHCP per assegnare un IP fisso in base all’indirizzo MAC.
- Port Forwarding (quando si usa NAT) Con virsh o XML di libvirt, puoi inoltrare porte (ad es., SSH o server web) dall’host alla VM. Esempio per inoltrare SSH sulla porta 22:
virsh nat-forward --network default --add-port tcp:2222:22
Per configurazioni più complesse, puoi anche modificare i file di configurazione di libvirt o utilizzare firewalld.
Gestione dello Storage e Operazioni sui Dischi
Una progettazione adeguata dello storage e la gestione dei dischi sono essenziali anche quando si operano macchine virtuali con KVM. Questa sezione spiega i diversi tipi di dischi virtuali, come crearli, la gestione dei pool di storage, l’espansione dei dischi e l’uso degli snapshot.
Tipi e Usi dei Dischi Virtuali (qcow2, raw)
KVM supporta principalmente due tipi di formati per dischi virtuali:
- Formato qcow2
- Il formato standard per i dischi virtuali per KVM
- Supporta snapshot, compressione e uso efficiente dello spazio su disco
- Ideale per operazioni flessibili o ambienti di test
- Formato raw
- Un formato semplice senza compressione o conversione
- Ideale quando hai bisogno della massima performance I/O disco
Nella maggior parte dei casi, qcow2 è raccomandato, ma puoi scegliere in base alle tue esigenze specifiche.
Creazione e Gestione dei Pool di Archiviazione
KVM utilizza il concetto di “pool di archiviazione” per gestire lo spazio su disco utilizzato dalle macchine virtuali.
- Pool di Archiviazione Predefinito Per impostazione predefinita,
/var/lib/libvirt/images/viene utilizzato come pool di archiviazione, e i nuovi dischi virtuali vengono creati in questa directory. - Creazione di un Nuovo Pool di Archiviazione (Esempio)
Crea una directory:
sudo mkdir /data/kvm-images sudo chown libvirt-qemu:kvm /data/kvm-images2. Aggiungi un nuovo pool usando virt-manager o il comando virsh. Con virsh:virsh pool-define-as --name mypool --type dir --target /data/kvm-images virsh pool-autostart mypool virsh pool-start mypool
Espansione dei Dischi Virtuali e Utilizzo degli Snapshot
- Espansione di un Disco Virtuale Se hai bisogno di aumentare la dimensione del disco, usa il comando
qemu-img(funziona per entrambi qcow2 e raw):sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
Dopo questo, espandi la partizione e il file system all’interno del guest OS secondo necessità.
- Utilizzo degli Snapshot Con i dischi qcow2, puoi creare snapshot per salvare lo stato corrente della tua VM in qualsiasi momento.
virsh snapshot-create-as <vm-name> <snapshot-name>
Gli snapshot sono molto utili per il backup prima degli aggiornamenti, il rollback dei test o il recupero da errori di configurazione.
Installazione e Operazione del Guest OS
Questa sezione spiega come installare ed eseguire sistemi operativi su macchine virtuali KVM. Copriremo l’installazione di guest OS tipici, la gestione delle immagini ISO e consigli per migliorare le prestazioni durante l’operazione.
Installazione di Guest OS Popolari
KVM ti permette di eseguire una varietà di OS, come Ubuntu, CentOS e Windows. Di seguito ci sono i passaggi di installazione di esempio per Ubuntu e Windows:
- Per Ubuntu
- Scarica l’ultima ISO di Ubuntu dal sito ufficiale.
- In virt-manager, scegli “Crea una nuova macchina virtuale”, seleziona “Media di installazione locale” e specifica il file ISO.
- Imposta la CPU, la memoria e la dimensione del disco della VM, poi avvia l’installazione.
- Segui le istruzioni sullo schermo per completare l’installazione standard di Ubuntu.
- Per Windows
- Scarica un’ISO di valutazione di Windows dal sito ufficiale Microsoft.
- Crea una nuova VM in virt-manager o usando virt-install, e seleziona l’ISO come media di installazione.
- Per una migliore performance di disco e rete, monta l’ISO dei driver virtio come un drive CD aggiuntivo e installa i driver durante la configurazione.
Ottenere e Montare Immagini ISO
- Scarica le immagini ISO da fonti ufficiali per l’OS che vuoi installare.
- Specifica il percorso al file ISO quando crei una nuova macchina virtuale; verrà montato come un drive CD/DVD virtuale.
- Se necessario, puoi montare multiple ISO contemporaneamente (ad es., OS e driver).
Consigli per l’Operazione e le Prestazioni del Guest OS
- Ottimizza l’Allocazione delle Risorse Assegna quantità appropriate di CPU e memoria a ogni VM. L’allocazione eccessiva di risorse può influenzare negativamente l’OS host e altre VM.
- Installa i Driver virtio Per guest Windows o Linux più vecchi, installare i driver virtio può aumentare significativamente le prestazioni di disco e rete.
- Disabilita Servizi Non Utilizzati Spegni servizi non necessari e programmi in background nel guest OS per massimizzare le risorse disponibili.
- Usa Strumenti Guest KVM Installa l’Agente Guest QEMU per migliorare l’accuratezza della gestione VM e supportare funzionalità come lo spegnimento pulito.
Casi d’Uso Pratici e Consigli per l’Automazione
KVM non è solo per creare e gestire VM — può essere sfruttato in vari scenari aziendali e di sviluppo. Abbinarlo a script o strumenti di automazione può rendere la gestione molto più efficiente. Questa sezione condivide casi d’uso pratici di KVM e idee di automazione.
Casi d’Uso per Server
- Ambienti di Sviluppo e Test Isolati Provisiona una VM separata per ogni progetto, permettendoti di passare liberamente tra versioni di OS e stack software senza impattare la produzione. Questo è un grande vantaggio quando si testano nuove versioni di OS o aggiornamenti software.
- Costruzione di Servizi Interni Separa i servizi critici (server file, web server, database, ecc.) in VM individuali, in modo che i guasti influenzino solo un ambito limitato. Backup e snapshot sono facili su base per-VM.
Esempi di Automazione Usando CLI o Ansible
- Creazione Automatizzata di VM via CLI Usa script per eseguire automaticamente i comandi
virt-installovirshper creare e gestire multiple VM. Esempio usando uno script shell:for i in {1..5} do virt-install --name test-vm-$i --memory 1024 --vcpus 1 --disk size=10 --cdrom /path/to/ubuntu.iso --os-type linux --os-variant ubuntu20.04 --graphics none --network network=default --noautoconsole done
- Automazione con Ansible Con lo strumento di automazione infrastrutturale Ansible, puoi descrivere la creazione di VM, l’allestimento iniziale e il deployment delle applicazioni in playbook — automatizzando l’intero processo. Questo è particolarmente efficace quando si gestiscono un gran numero di server o quando la consistenza è critica.
Suggerimenti per Operazioni Simili al Cloud
- Templating di VM Salva stati iniziali di VM comunemente usati come template, permettendoti di deployare rapidamente nuovi server.
- Integrazione API e Gestione Web-Based libvirt fornisce un’API per l’integrazione con tool personalizzati o altri sistemi di gestione. Per ambienti grandi, usa tool di gestione web-based (come Cockpit) per gestire le VM visivamente.
Risoluzione dei Problemi e Soluzioni per Errori Comuni
Mentre esegui KVM, potresti incontrare problemi come l’avvio fallito di VM o problemi di connettività di rete. Questa sezione copre problemi comuni, come risolverli, e come controllare i log e usare risorse di supporto.
Problemi Comuni con KVM
- VM Non Riesce ad Avviarsi o Crearsi
- Virtualizzazione hardware (Intel VT, AMD-V) è disabilitata
- Memoria o spazio disco insufficiente allocato
- Pool di storage o percorso ISO incorretto
- Problemi di Connettività di Rete
- Adattatore di rete VM non configurato correttamente
- Errori nelle impostazioni bridge o NAT, o fallimenti nell’assegnazione DHCP
- Restrizioni firewall o di sicurezza
- Pessime Prestazioni
- Sovrallocazione o sottoallocazione di risorse
- Driver virtio mancanti (specialmente per guest Windows)
- Colli di bottiglia I/O disco
Come Controllare i Log e Flusso di Risoluzione dei Problemi Base
Quando si verificano problemi, controllare i log è critico.
- Controlla i Log di Sistema
sudo journalctl -xe
Guarda i messaggi di errore relativi a KVM o libvirt.
- Controlla i Log di libvirt Rivedi i file di log sotto
/var/log/libvirt/(es. libvirtd.log). - Controlla i Log Specifici per VM In virt-manager o virsh, rivedi la scheda “Details” o “Logs” per ogni VM.
- Controlla lo Stato della Rete
ip a brctl show virsh net-list --all
Controlla le connessioni di rete correnti e l’allestimento del bridge.
Passi Base per la Risoluzione dei Problemi
- Identifica quando il problema è iniziato e chiarisci i sintomi
- Controlla i log e i file di configurazione sopra
- Se necessario, modifica i file di configurazione, riavvia i servizi, o ricrea la VM
Sfruttare la Documentazione Ufficiale e Risorse della Community
Se rimani bloccato, queste risorse possono essere inestimabili:
- Documentazione Ufficiale Ubuntu Official KVM Guide libvirt Official Documentation
- Forum della Comunità e Siti di Q&A
- Ubuntu Forums
- Ask Ubuntu
- Stack Overflow
- Cerca Messaggi di Errore Prova a cercare i messaggi di errore sia in inglese che nella tua lingua nativa — troverai spesso molte soluzioni.
Ottimizzazione della Sicurezza e delle Prestazioni
Per operare il tuo ambiente KVM in modo sicuro ed efficiente, misure di sicurezza e ottimizzazione delle prestazioni sono essenziali. Questa sezione copre punti chiave per proteggere la tua infrastruttura di virtualizzazione e consigli pratici per massimizzare l’efficienza delle risorse.
Rafforzare la Sicurezza negli Ambienti Virtualizzati
- Disabilita Servizi Non Necessari e Usa Configurazioni Minime Disabilita i servizi inutilizzati all’interno delle tue VM per ridurre la superficie di attacco. Allo stesso modo, ferma i servizi non necessari sul sistema operativo host.
- Firewall e Controlli di Accesso Configura correttamente i firewall (come ufw o firewalld) sia sull’host che sui sistemi guest per bloccare accessi esterni non autorizzati. Per SSH, considera di cambiare il numero di porta, di usare l’autenticazione basata su chiavi e di implementare fail2ban per una protezione aggiuntiva.
- Isolamento delle VM (Segmentazione della Rete) Separa i server critici su diverse reti virtuali o segmenti fisici per minimizzare l’impatto in caso di violazione.
- Aggiornamenti Regolari Mantieni sia l’host che il sistema operativo guest aggiornati con le ultime patch di sicurezza e aggiornamenti software.
Ottimizzazione dell’Allocazione delle Risorse (CPU/Memoria/I/O Disco)
- Gestione Base delle Risorse Alloca CPU e memoria in modo appropriato a ciascuna VM e lascia margine sull’host per la stabilità generale del sistema. L’allocazione eccessiva può causare degradazione delle prestazioni sia per l’host che per le altre VM.
- Ottimizzazione I/O Disco Le prestazioni del disco spesso diventano un collo di bottiglia. Assegna storage SSD veloce alle VM importanti per ottenere i migliori risultati. Inoltre, l’uso di troppe snapshot con dischi qcow2 può ridurre le prestazioni, quindi bilancia l’utilizzo di conseguenza.
- Sfrutta i Driver virtio Installa i driver virtio nei sistemi operativi guest per migliorare notevolmente le prestazioni di disco e rete.
Automatizzazione di Backup e Snapshot
- Pianifica Snapshot Regolari Esegui snapshot regolari delle VM di produzione in modo da poter recuperare rapidamente in caso di guasto.
- Esegui Backup di Immagini Disco e File di Configurazione Esegui backup regolari delle tue immagini di disco virtuali (file qcow2/raw) e dei file di configurazione XML di libvirt su un altro dispositivo di storage o server esterno.
- Integra con Strumenti di Automazione Usa job cron o strumenti di automazione come Ansible per pianificare automaticamente i backup e la creazione di snapshot.
Riepilogo e Risorse per l’Apprendimento Ulteriore
Questo articolo ha coperto la costruzione e l’operatività di un ambiente di virtualizzazione KVM su Ubuntu — dall’installazione all’uso avanzato, risoluzione dei problemi, sicurezza e ottimizzazione delle prestazioni. Rivediamo i punti chiave e introduciamo risorse per aiutarti a continuare l’apprendimento.
Riepilogo dei Punti Chiave
- Panoramica KVM e Vantaggi KVM è una soluzione di virtualizzazione open-source ad alte prestazioni ampiamente utilizzata con i server Ubuntu.
- Passo per Passo dall’Installazione all’Operatività Abbiamo esaminato il controllo del supporto alla virtualizzazione, l’installazione dei pacchetti, l’impostazione dei permessi utente, la creazione delle VM e l’esecuzione di operazioni base.
- Consigli Pratici su Rete, Storage e Operazioni Hai imparato come configurare reti NAT o bridge, gestire pool di storage, espandere dischi e utilizzare snapshot.
- Risoluzione dei Problemi e Sicurezza Abbiamo coperto la gestione comune degli errori, come controllare i log e punti per un’operatività sicura ed efficiente.
Prossimi Passi e Risorse di Apprendimento Raccomandate
- Documentazione ufficiale
- Guida ufficiale KVM di Ubuntu
- Documentazione ufficiale di libvirt
- Ask Ubuntu
- Stack Overflow (Inglese)
Una volta padroneggiati i concetti di base, KVM può essere usato per tutto, dai progetti personali all’infrastruttura aziendale. Usa questa guida come fondamento e continua a esplorare in base ai tuoi obiettivi e all’ambiente.
Riferimento rapido ai comandi e impostazioni comuni (Cheat Sheet)
Avere un riferimento rapido di comandi utili ed esempi di configurazione per KVM e libvirt è molto pratico per la gestione quotidiana delle VM. Questa sezione elenca i comandi più comuni e esempi compatti di impostazioni per reti e dischi.
Principali comandi KVM/virsh/virt-manager
- Elenca tutte le macchine virtuali
virsh list --all
- Avvia una macchina virtuale
virsh start <vm-name>
- Arresta una macchina virtuale
virsh shutdown <vm-name>
- Forza l’arresto di una macchina virtuale
virsh destroy <vm-name>
- Crea una nuova macchina virtuale (virt-install)
virt-install --name <name> --memory <MB> --vcpus <cores> --disk size=<GB> --cdrom <ISO path> --os-type linux --os-variant ubuntu20.04
- Elimina una macchina virtuale (solo impostazioni)
virsh undefine <vm-name>
Esempi di configurazione rete e bridge
- Elenca le reti attuali
virsh net-list --all
- Crea una nuova rete (esempio XML) Posiziona un file XML in
/etc/libvirt/qemu/networks/, quindi attivalo convirsh net-define <filename>evirsh net-start <network-name>
Esempi di gestione storage e operazioni su disco
- Elenca i pool di storage
virsh pool-list --all
- Espandi un disco virtuale
sudo qemu-img resize /path/to/disk.qcow2 +10G
- Crea uno snapshot
virsh snapshot-create-as <vm-name> <snapshot-name>
Altri suggerimenti utili
- Imposta la VM per l’avvio automatico al boot dell’host
virsh autostart <vm-name>
- Ottieni informazioni dettagliate su una VM
virsh dominfo <vm-name>
- Avvia virt-manager (GUI)
virt-manager
FAQ (Domande frequenti)
Ecco le risposte alle domande più comuni dei lettori su KVM e gli ambienti di virtualizzazione Ubuntu. Usale per la risoluzione dei problemi e le operazioni quotidiane.
Q1: Quali sono le differenze tra KVM, VirtualBox e VMware?
A1: KVM è una piattaforma di virtualizzazione ad alte prestazioni integrata nel kernel Linux ed è più adatta a server e ambienti di produzione. VirtualBox è orientato all’uso desktop, mentre VMware offre molte funzionalità e supporto per ambienti commerciali su larga scala. KVM è consigliato quando si desidera alteazioni a basso costo.
Q2: Come eseguo il backup e il ripristino delle macchine virtuali?
A2: Puoi eseguire facilmente il backup copiando le immagini dei dischi virtuali (file qcow2). È inoltre consigliato salvare gli snapshot di virsh e i file di configurazione XML della VM per un ripristino senza intoppi.
Q3: Come posso utilizzare dispositivi USB all’interno di una macchina virtuale?
A3: Usa la funzione “Add Hardware” in virt-manager o configura il passthrough USB con virsh. Questo ti permette di utilizzare unità USB, HDD esterni, stampanti, ecc. all’interno delle tue VM.
Q4: Come posso avviare automaticamente una VM quando l’host si avvia?
A4: Esegui virsh autostart <vm-name> per configurare quella VM affinché si avvii automaticamente al boot del sistema operativo host.
Q5: Cosa devo fare se le prestazioni della VM sono lente?
A5: Rivedi e regola l’allocazione di CPU/memoria, ottimizza l’I/O del disco (usando storage più veloce o passando da qcow2 a raw) e installa i driver virtio nel sistema operativo guest.
Q6: Ho problemi con le impostazioni di rete. Cosa devo controllare?
A6: Usa virsh o brctl per verificare lo stato della rete. Rivedi e, se necessario, ricrea le reti virtuali o modifica le impostazioni del bridge con Netplan o NetworkManager.
Q7: È possibile creare cluster o configurazioni HA con KVM?
A7: Sì. Puoi combinare KVM con strumenti come Pacemaker, Corosync e storage condiviso (NFS, iSCSI, ecc.) per abilitare cluster ad alta disponibilità (HA) e migrazione live delle VM. È necessaria una conoscenza avanzata.



