Guida completa alla virtualizzazione KVM su Ubuntu: installazione, rete, archiviazione e migliori pratiche

目次

Introduzione

Ubuntu è una delle distribuzioni Linux più utilizzate al mondo, affidata in una vasta gamma di ambienti, dagli utenti individuali ai sistemi aziendali. È comunemente usata per la costruzione di server e per ambienti di sviluppo. Quando si desidera implementare una virtualizzazione su larga scala su Ubuntu, una delle soluzioni più potenti disponibili è KVM (Kernel-based Virtual Machine).

KVM è una tecnologia di virtualizzazione basata su hypervisor, integrata direttamente nel kernel Linux. Sfruttando le funzionalità di virtualizzazione assistita dall’hardware, come Intel VT e AMD‑V, offre alte prestazioni e stabilità. Come soluzione open source, KVM consente di costruire un’infrastruttura di virtualizzazione robusta mantenendo bassi i costi.

Le tecnologie di virtualizzazione possono sembrare complesse all’inizio. Tuttavia, con la combinazione di Ubuntu e KVM, anche i principianti possono creare e gestire macchine virtuali in modo relativamente semplice. È inoltre altamente consigliata per gli utenti intermedi che desiderano utilizzare in modo efficiente le risorse dei server fisici esistenti, così come per gli ingegneri che intendono virtualizzare i sistemi di produzione.

Questo articolo fornisce una spiegazione approfondita su come costruire un ambiente di virtualizzazione basato su KVM su Ubuntu, coprendo l’uso di base, le tecniche operative pratiche e le soluzioni ai problemi più comuni. Se stai valutando l’introduzione di KVM o desideri sfruttare al meglio la virtualizzazione su Ubuntu, assicurati di leggere fino alla fine.

Confronto tra KVM e altre tecnologie di virtualizzazione

Esistono molti tipi di tecnologie di virtualizzazione disponibili. Negli ambienti Ubuntu, le opzioni più comunemente usate includono KVM, VirtualBox e VMware. Questa sezione spiega le caratteristiche e le differenze di ciascuna, insieme ai vantaggi e agli svantaggi della scelta di KVM.

Principali tipologie 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. Sfruttando il supporto alla virtualizzazione hardware come Intel VT e AMD‑V, offre alte prestazioni delle macchine virtuali adatte all’uso in produzione. Operazioni flessibili sono possibili usando strumenti da riga di comando e utility di gestione come virt-manager.
  • VirtualBox VirtualBox è un software di virtualizzazione orientato al desktop fornito da Oracle, che funziona su Windows, macOS e Linux. Presenta un’interfaccia intuitiva ed è spesso usato per scopi personali o di apprendimento. Rispetto a KVM, tuttavia, è meno adatto a ambienti ad alto carico o commerciali.
  • VMware (VMware Workstation / ESXi, ecc.) VMware è un prodotto di virtualizzazione commerciale ampiamente usato negli ambienti aziendali. Offre funzionalità ricche e un forte supporto, ma richiede licenze a pagamento, il che aumenta i costi operativi, soprattutto in implementazioni su larga scala.

Vantaggi di KVM

  • Alte prestazioni e stabilità Poiché KVM opera come parte del kernel Linux, offre un utilizzo efficiente delle risorse e un controllo fine su CPU e allocazione della memoria. La sua stabilità lo rende adatto a sistemi di produzione reali.
  • Open source e gratuito KVM è completamente open source e non richiede costi di licenza, rendendolo ideale per costruire una piattaforma di virtualizzazione con un budget limitato.
  • Strumenti di gestione ricchi e automazione KVM fornisce sia strumenti da riga di comando (virsh, virt‑install) sia strumenti GUI (virt‑manager), facilitando l’automazione delle operazioni e l’integrazione con i flussi di lavoro DevOps e di gestione dell’infrastruttura.

Svantaggi di KVM

  • OS host solo Linux KVM richiede il kernel Linux e non può essere usato come host su Windows o macOS.
  • Conoscenza di Linux necessaria per l’installazione e la risoluzione dei problemi Sebbene esistano strumenti GUI, la configurazione avanzata e la risoluzione dei problemi spesso richiedono operazioni da riga di comando e conoscenze specifiche di Linux.

Quando dovresti scegliere KVM?

  • Quando vuoi utilizzare in modo efficiente le risorse di un server fisico
  • Quando è necessaria la virtualizzazione per sistemi o server di livello produttivo
  • Quando vuoi costruire una piattaforma di virtualizzazione completa a basso costo
  • Quando vuoi automatizzare le operazioni dei server Linux e la gestione dell’infrastruttura

KVM è consigliato non solo per utenti Linux esperti e ingegneri, ma anche per chi prevede di passare a operazioni server serie in futuro.

Creazione di macchine virtuali e operazioni di base

Una volta che l’ambiente KVM è pronto, puoi iniziare a creare e gestire macchine virtuali. KVM ti permette di scegliere tra uno strumento di gestione grafica (virt‑manager) e operazioni da riga di comando (virt‑install e virsh), a seconda del caso d’uso. Questa sezione presenta entrambi gli approcci.

Creazione di macchine virtuali con virt‑manager (GUI)

virt‑manager è uno strumento che consente di creare e gestire macchine virtuali tramite un’interfaccia grafica intuitiva. Se utilizzi un ambiente desktop Linux, virt‑manager è particolarmente comodo.

  1. Avvia virt-manager dal menu delle applicazioni o dalla riga di comando.
  2. Fai clic sul pulsante “New” nell’angolo in alto a sinistra.
  3. Seleziona la posizione del supporto di installazione (ad esempio un’immagine ISO) e scegli il tipo di OS guest (es. Ubuntu o Windows).
  4. Configura il numero di CPU, la quantità di memoria e la capacità del disco per la macchina virtuale.
  5. Rivedi le impostazioni e fai clic su “Finish” per creare la macchina virtuale e avviare il processo di installazione.

Con virt‑manager puoi avviare, arrestare e riavviare facilmente le macchine virtuali, creare snapshot e aggiungere interfacce di rete o dispositivi di archiviazione.

Creazione di macchine virtuali con virt‑install (CLI)

Per casi d’uso server o ambienti remoti, creare macchine virtuali dalla riga di comando è spesso più pratico.
Di seguito è riportato un esempio di utilizzo base del comando 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 : Memoria allocata (in MB)
  • --vcpus : Numero di core CPU virtuali
  • --disk size=20 : Dimensione del disco virtuale (in GB)
  • --cdrom : Percorso dell’immagine ISO usata per l’installazione
  • --os-type , --os-variant : Tipo e versione del sistema operativo
  • --network : Configurazione di rete
  • --graphics : Modalità grafica (es. VNC)

Dopo aver eseguito il comando, la macchina virtuale si avvierà automaticamente e mostrerà la schermata di installazione tramite VNC o un’altra interfaccia grafica.

Avvio, arresto, eliminazione e creazione di snapshot delle macchine virtuali

KVM semplifica la gestione delle macchine virtuali con comandi semplici. Le operazioni più comuni includono le seguenti.

  • Avviare una macchina virtuale
    virsh start <virtual-machine-name>
    
  • Spegnere una macchina virtuale
    virsh shutdown <virtual-machine-name>
    
  • Forzare l’arresto di una macchina virtuale
    virsh destroy <virtual-machine-name>
    
  • Eliminare una macchina virtuale (fare attenzione se si rimuovono i dischi)
    virsh undefine <virtual-machine-name>
    
  • Creare uno snapshot
    virsh snapshot-create-as <virtual-machine-name> <snapshot-name>
    

Tutte queste operazioni possono essere eseguite anche tramite l’interfaccia grafica di virt‑manager.

Configurazione di rete ed estensioni

La configurazione di rete è un aspetto critico nella gestione delle macchine virtuali con KVM. Sebbene la configurazione predefinita sia sufficiente per molti casi d’uso, gli ambienti di produzione spesso richiedono personalizzazioni. Questa sezione spiega le basi della rete KVM e le configurazioni avanzate più comuni.

Differenze tra NAT predefinito (virbr0) e networking bridge

Quando KVM è installato, viene creato automaticamente un bridge di rete virtuale chiamato virbr0. Si tratta di una rete basata su NAT con le seguenti caratteristiche.

  • Caratteristiche di virbr0 (modalità NAT)
  • Le macchine virtuali possono accedere a Internet esterno
  • L’accesso diretto dall’host o da altre reti richiede il port forwarding
  • Ideale per uso domestico, sviluppo e ambienti di test

Al contrario, il networking bridge fornisce alle macchine virtuali un accesso equivalente a quello della rete fisica.

  • Caratteristiche del networking Bridge
  • Le macchine virtuali si uniscono allo stesso segmento di rete dell’host
  • È possibile l’accesso diretto da PC fisici e altri server
  • Ideale per server di produzione e servizi accessibili pubblicamente

Creazione e configurazione di un bridge personalizzato (per accesso LAN)

Se desideri consentire l’accesso diretto alle macchine virtuali da server di produzione o altri PC, dovresti configurare una rete bridge. Di seguito è riportato un esempio di procedura generale in cui la NIC fisica sull’host è eth0.

  1. Installa bridge-utils (salta se già installato)
    sudo apt install bridge-utils
    
  1. Modifica il file di configurazione di rete Ubuntu 18.04 e successive usano Netplan. Modifica un file di configurazione come /etc/netplan/01-netcfg.yaml. Esempio:
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
      bridges:
        br0:
          interfaces: [eth0]
          dhcp4: yes
    
  1. Applica la configurazione
    sudo netplan apply
    
  1. Assegna il nuovo bridge (br0) alla rete della macchina virtuale Cambia l’adattatore di rete a br0 usando virt-manager o virsh.

Assegnazione IP statico e port forwarding

  • Assegnazione IP statico Puoi configurare un indirizzo IP statico all’interno del sistema operativo guest o assegnare un IP fisso tramite il server DHCP basato sull’indirizzo MAC.
  • Port forwarding (quando si usa NAT) Utilizzando il comando virsh o la configurazione XML di libvirt, puoi inoltrare porte specifiche (come SSH o servizi web) dall’host alla macchina virtuale. Esempio (inoltro della porta SSH 22):
    virsh nat-forward --network default --add-port tcp:2222:22
    

Nota: Configurazioni più avanzate sono possibili modificando i file di configurazione di libvirt o controllando l’accesso con firewalld.

Gestione dello storage e operazioni su disco

Quando si gestiscono macchine virtuali con KVM, la progettazione dello storage e la gestione dei dischi sono estremamente importanti. Questa sezione spiega i tipi di dischi virtuali, come crearli, come gestire i pool di storage e come espandere i dischi e utilizzare gli snapshot in modo efficace.

Tipi di disco virtuale (qcow2 e raw) e casi d’uso

KVM supporta principalmente i seguenti due tipi di dischi virtuali.

  • Formato qcow2
  • Il formato di disco virtuale standard per KVM
  • Supporta snapshot, compressione del disco e allocazione efficiente dello spazio
  • Ideale per operazioni flessibili e ambienti di test
  • Formato raw
  • Un formato semplice senza compressione o conversione
  • Ideale per massime prestazioni e carichi di lavoro ad alta I/O

Nella maggior parte dei casi, si consiglia qcow2, ma dovresti scegliere il formato in base alle tue esigenze specifiche.

Creazione e gestione dei pool di storage

KVM gestisce le risorse disco utilizzate dalle macchine virtuali tramite un concetto chiamato pool di storage.

  • Pool di storage predefinito Dopo l’installazione, /var/lib/libvirt/images/ è usato come pool di storage predefinito. I dischi virtuali vengono creati all’interno di questa directory.
  • Creazione di un nuovo pool di storage (esempio)
  1. Crea una directory sudo mkdir /data/kvm-images sudo chown libvirt-qemu:kvm /data/kvm-images
  2. Aggiungi un nuovo pool usando virt-manager o virsh. Usando 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 dei dischi virtuali Per aumentare la capacità del disco, usa il comando qemu-img (supportato sia per qcow2 che per raw).
    sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
    

Dopo il ridimensionamento, devi anche espandere la partizione e il filesystem all’interno del sistema operativo guest.

  • Utilizzo degli Snapshot Con i dischi qcow2, è possibile creare snapshot per salvare lo stato di una macchina virtuale in un momento specifico.
    virsh snapshot-create-as <virtual-machine-name> <snapshot-name>
    

Gli snapshot sono estremamente utili per i backup prima di modifiche di configurazione, aggiornamenti di sistema o per testare scenari di rollback.

Installazione e Operatività del Sistema Operativo Guest

Questa sezione spiega come installare e gestire in modo efficiente i sistemi operativi all’interno di macchine virtuali KVM. Copre le procedure tipiche di installazione del sistema operativo guest, la gestione delle immagini ISO e consigli per l’ottimizzazione delle prestazioni.

Installazione dei Sistemi Operativi Guest più Comuni

KVM supporta una vasta gamma di sistemi operativi guest, tra cui Ubuntu, CentOS e Windows. Di seguito sono riportate le procedure di installazione di esempio per Ubuntu e Windows.

  • Installazione di Ubuntu
  1. Scarica l’ultima immagine ISO dal sito ufficiale di Ubuntu.
  2. In virt-manager, seleziona “Local install media” (media di installazione locale) durante la creazione di una nuova macchina virtuale e specifica il file ISO scaricato.
  3. Configura CPU, memoria e capacità del disco per la macchina virtuale.
  4. Segui le istruzioni a schermo per completare l’installazione standard di Ubuntu.
  • Installazione di Windows
  1. Scarica un’immagine ISO di valutazione di Windows dal sito ufficiale di Microsoft.
  2. Crea una nuova macchina virtuale usando virt-manager o virt-install e specifica il file ISO.
  3. Per i guest Windows, l’installazione dei driver virtio migliora notevolmente le prestazioni di disco e rete. Monta l’ISO virtio come unità CD virtuale e applicalo durante l’installazione.

Ottenere e Montare Immagini ISO

  • L’installazione del sistema operativo guest richiede immagini ISO scaricate da fonti ufficiali.
  • Specificando il percorso del file ISO durante la creazione della VM, verrà montato come CD/DVD virtuale.
  • È possibile montare più immagini ISO (OS e driver) simultaneamente, se necessario.

Consigli per l’Operatività del Guest OS e l’Ottimizzazione delle Prestazioni

  • Ottimizzare l’Allocazione delle Risorse Assegna CPU e memoria in modo appropriato. Un’allocazione eccessiva delle risorse può influire negativamente sul sistema host e su altre macchine virtuali.
  • Installare i Driver virtio L’installazione dei driver virtio su Windows o su guest Linux più vecchi migliora notevolmente le prestazioni di disco e rete.
  • Disabilitare Servizi Inutili Disabilitare i servizi non utilizzati e i processi in background all’interno del guest OS aiuta a conservare le risorse di sistema.
  • Utilizzare gli Strumenti Guest di KVM L’installazione del QEMU Guest Agent consente un recupero più accurato delle informazioni della VM e operazioni di spegnimento controllate.

Casi d’Uso Pratici e Consigli per l’Automazione

KVM non si limita alla semplice creazione e gestione di macchine virtuali. È ampiamente utilizzato in vari scenari aziendali e di sviluppo, e la sua efficienza gestionale può essere notevolmente migliorata combinandolo con script e strumenti di automazione. Questa sezione presenta casi d’uso pratici e idee per l’automazione.

Esempi di Casi d’Uso per Server

  • Separazione degli Ambienti di Sviluppo e Test Preparando macchine virtuali separate per ogni progetto, è possibile cambiare liberamente versioni software e configurazioni. Questo consente di testare nuove versioni di OS o applicazioni senza influire sui sistemi di produzione.
  • Costruzione di Servizi Interni Eseguire file server, web server e server di database in macchine virtuali separate aiuta a limitare l’impatto dei guasti. Backup e snapshot possono anche essere gestiti facilmente per ogni VM.

Provisioning Automatizzato con CLI e Ansible

  • Creazione Automatizzata di VM con CLI Scriptando i comandi virt-install e virsh, è possibile creare e gestire automaticamente più macchine virtuali. Esempio: script shell per la creazione batch di VM.
    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 dell’Infrastruttura con Ansible Usando Ansible, è possibile automatizzare la creazione di macchine virtuali, la configurazione iniziale e il deployment delle applicazioni usando solo i playbook. Questo è particolarmente efficace per ambienti con molti server o dove la coerenza della configurazione è critica.

Suggerimenti per Operazioni in Stile Cloud

  • Creazione di Template VM Salvare le macchine virtuali di base usate frequentemente come template consente di distribuire nuovi server quasi istantaneamente.
  • Integrazione API e Strumenti di Gestione Web libvirt fornisce API che possono essere integrate con strumenti personalizzati o altri sistemi di gestione. In ambienti su larga scala, strumenti di gestione basati sul web come Cockpit consentono un controllo visivo e centralizzato.

Risoluzione dei Problemi e Soluzioni di Errori Comuni

Quando si gestisce un ambiente KVM, è possibile incontrare problemi come macchine virtuali che non si avviano o problemi di connettività di rete. Questa sezione copre i problemi comuni, i passaggi di risoluzione e come utilizzare efficacemente i log e le risorse di supporto.

Problemi Comuni in KVM

  • La macchina virtuale non si avvia o non può essere creata
  • La virtualizzazione hardware (Intel VT o AMD‑V) è disabilitata
  • Memoria o spazio disco assegnati insufficienti
  • Pool di storage o percorso dell’immagine ISO errati
  • Problemi di connettività di rete
  • Configurazione errata dell’adattatore di rete virtuale
  • Bridge o NAT configurati in modo errato, o fallimento dell’assegnazione DHCP
  • Restrizioni del firewall o di sicurezza
  • Prestazioni gravemente degradate
  • Sovra‑allocazione o sotto‑allocazione delle risorse
  • Driver virtio mancanti (soprattutto per guest Windows)
  • Collo di bottiglia I/O del disco

Ispezione dei Log e Flusso di Risoluzione di Base

Quando si verificano problemi, controllare i log dovrebbe essere il tuo primo passo.

  • Controlla i log di sistema
    sudo journalctl -xe
    

Cerca messaggi di errore relativi a KVM o libvirt.

  • Controlla i log di libvirt I file di log sotto /var/log/libvirt/ (come libvirtd.log) forniscono informazioni preziose.
  • Controlla i log specifici della VM Usa virt‑manager o virsh per ispezionare lo stato della VM e rivedere i dettagli degli errori nei log o nella vista dei dettagli.
  • Controlla lo stato della rete
    ip a
    brctl show
    virsh net-list --all
    

Questi comandi aiutano a verificare le connessioni di rete e le configurazioni del bridge.

Flusso di Risoluzione di Base

  1. Identifica quando è iniziato il problema e cosa è cambiato
  2. Rivedi i log e le configurazioni
  3. Modifica le impostazioni se necessario e riavvia i servizi o ricrea la macchina virtuale

Utilizzo della Documentazione Ufficiale e delle Risorse della Community

Le seguenti risorse sono estremamente utili durante la risoluzione dei problemi.

Sicurezza e Ottimizzazione delle Prestazioni

Per gestire un ambiente KVM in modo sicuro ed efficiente, le misure di sicurezza e l’ottimizzazione delle prestazioni sono essenziali. Questa sezione introduce tecniche pratiche per proteggere la tua piattaforma di virtualizzazione e massimizzare l’efficienza delle risorse.

Rafforzare la Sicurezza della Virtualizzazione

  • Disabilitare i Servizi Inutili e Ridurre la Configurazione Disabilita i servizi non utilizzati sia nei sistemi guest che host per ridurre la superficie di attacco.
  • Firewall e Controllo degli Accessi Configura i firewall (come ufw o firewalld) in modo appropriato su host e guest. Proteggi l’accesso SSH usando porte non predefinite, autenticazione basata su chiave e strumenti come fail2ban.
  • Isolamento tra le Macchine Virtuali Separa i server critici usando reti virtuali diverse o segmentazione fisica della rete per limitare i danni in caso di compromissione.
  • Aggiornamenti Regolari Mantieni sia host che guest aggiornati con patch di sicurezza e aggiornamenti software.

Ottimizzazione dell’Allocazione delle Risorse (CPU, Memoria, I/O Disco)

  • Gestione di Base delle Risorse Assegna CPU e memoria con attenzione a ciascuna macchina virtuale lasciando risorse sufficienti per il sistema host.
  • Ottimizzazione I/O Disco Usa storage SSD ad alta velocità per le macchine virtuali critiche. Fai attenzione all’uso eccessivo di snapshot in formato qcow2, poiché può influire sulle prestazioni.
  • Utilizzare i Driver virtio L’installazione dei driver virtio migliora notevolmente le prestazioni di disco e rete nei sistemi operativi guest.

Automazione di Backup e Snapshot

  • Creazione Regolare di Snapshot Snapshot periodici consentono un rapido ripristino in caso di guasto del sistema.
  • Backup di Immagini Disco e File di Configurazione Esegui regolarmente il backup delle immagini disco virtuali (qcow2 o raw) e dei file di configurazione XML di libvirt su storage esterno.
  • Integrazione con Strumenti di Automazione Usa cron o Ansible per automatizzare le attività di backup e snapshot.

Conclusione e Risorse di Apprendimento

Questo articolo ha coperto tutto, dalla creazione di un ambiente di virtualizzazione KVM su Ubuntu alle operazioni quotidiane, casi d’uso pratici, risoluzione dei problemi, sicurezza e ottimizzazione delle prestazioni. Di seguito trovi un riepilogo e le risorse consigliate per approfondire.

Riepilogo

  • Panoramica e Vantaggi di KVM KVM è una tecnologia di virtualizzazione open-source ad alte prestazioni ampiamente utilizzata negli ambienti server Ubuntu.
  • Dall’Installazione all’Operatività Abbiamo esaminato i controlli di virtualizzazione CPU, l’installazione dei pacchetti, la configurazione dei permessi, la creazione delle VM e le operazioni di base.
  • Rete, Storage e Best Practice Operative Hai imparato a configurare la rete NAT e bridge, gestire i pool di storage, espandere i dischi e utilizzare efficacemente gli snapshot.
  • Risoluzione dei Problemi e Sicurezza Sono state introdotte soluzioni per errori comuni, metodi di ispezione dei log e best practice per operazioni sicure ed efficienti.

Prossimi Passi e Risorse Consigliate

KVM è una potente piattaforma di virtualizzazione adatta sia all’uso individuale che aziendale. Usa questa guida come base per approfondire ulteriormente la tua comprensione e personalizzare KVM secondo le tue esigenze specifiche.

Cheat Sheet dei Comandi e Esempi di Configurazione Comuni

Avere a disposizione i comandi e gli esempi di configurazione più usati può migliorare notevolmente l’efficienza nella gestione quotidiana delle VM. Questa sezione fornisce un riferimento conciso.

Comandi Comuni KVM / virsh / virt-manager

  • Elencare le macchine virtuali
    virsh list --all
    
  • Avviare una macchina virtuale
    virsh start <virtual-machine-name>
    
  • Spegnere una macchina virtuale
    virsh shutdown <virtual-machine-name>
    
  • Forzare l’arresto di una macchina virtuale
    virsh destroy <virtual-machine-name>
    
  • Creare una 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
    
  • Rimuovere una macchina virtuale (solo definizione)
    virsh undefine <virtual-machine-name>
    

Esempi di Configurazione di Rete e Bridge

  • Elenca le reti
    virsh net-list --all
    

Gestione dello Storage e Operazioni su Disco

  • Elenca i pool di storage
    virsh pool-list --all
    
  • Ridimensiona un disco virtuale
    sudo qemu-img resize /path/to/disk.qcow2 +10G
    
  • Crea uno snapshot
    virsh snapshot-create-as <virtual-machine-name> <snapshot-name>
    

Altri Suggerimenti Utili

  • Abilita l’avvio automatico della VM
    virsh autostart <virtual-machine-name>
    
  • Mostra informazioni dettagliate della VM
    virsh dominfo <virtual-machine-name>
    
  • Avvia virt-manager (GUI)
    virt-manager
    

FAQ

Q1: Qual è la differenza tra KVM, VirtualBox e VMware?

A1: KVM è una piattaforma di virtualizzazione ad alte prestazioni integrata nel kernel Linux ed è particolarmente adatta per server di produzione. VirtualBox è principalmente progettato per l’uso desktop, mentre VMware offre ricche funzionalità enterprise con supporto commerciale. KVM è ideale se desideri alte prestazioni a basso costo.

Q2: Come posso eseguire il backup e il ripristino delle macchine virtuali?

A2: Puoi eseguire il backup delle macchine virtuali copiando i file immagine del disco (qcow2 o raw). È inoltre consigliato eseguire il backup dei file di configurazione XML di libvirt e degli snapshot per una più facile ripristino.

Q3: Posso utilizzare dispositivi USB all’interno di una macchina virtuale?

A3: Sì. Puoi configurare il passthrough USB usando le impostazioni hardware di virt-manager o tramite virsh, consentendo l’uso di dispositivi di archiviazione USB, unità esterne e stampanti all’interno delle macchine virtuali.

Q4: Come posso avviare automaticamente le macchine virtuali al boot dell’host?

A4: Esegui il comando virsh autostart <virtual-machine-name> per abilitare l’avvio automatico al boot del sistema host.

Q5: Cosa devo fare se una macchina virtuale è lenta?

A5: Verifica l’allocazione di CPU e memoria, ottimizza l’I/O del disco (usa storage più veloce o passa da qcow2 a raw se opportuno) e installa i driver virtio nel sistema operativo guest.

Q6: La configurazione di rete non funziona correttamente. Cosa devo controllare?

A6: Verifica lo stato della rete usando i comandi virsh e brctl. Controlla i file di configurazione del bridge e di Netplan o NetworkManager e ricrea le reti virtuali se necessario.

Q7: Posso creare cluster o configurazioni ad alta disponibilità (HA) con KVM?

A7: Sì. Combinando KVM con Pacemaker, Corosync e storage condiviso (NFS o iSCSI), è possibile implementare configurazioni HA e migrazione live. È necessaria una conoscenza avanzata.