|
Dimensione: 14638
Commento: Aggiornamento
|
Dimensione: 11768
Commento: importato da ivantu/Virtualizzazione/Kvm/CreazioneOspiti
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## page was renamed from FabioMarconi/Prove9 | |
| Linea 3: | Linea 2: |
| #language it [[Indice(depth=2)]] [[Informazioni(help="http://help.ubuntu-it.org/current/ubuntu/serverguide/it/virtualization.html"; forum="http://forum.ubuntu-it.org/index.php/topic,371617.0.html";)]] |
#LANGUAGE it <<BR>> <<Indice(depth=2)>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="25.10 25.04 24.04 22.04 10.04")>> |
| Linea 9: | Linea 9: |
| In questa pagina viene spiegato come creare delle macchine virtuali dopo aver installato '''KVM'''. | Questa pagina spiega come creare e gestire macchine virtuali (ospiti) dopo aver installato '''[[Virtualizzazione/Kvm/Installazione|KVM]]''' su Ubuntu 22.04 e versioni successive. |
| Linea 11: | Linea 11: |
| Ciò può essere fatto usando: | 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. |
| Linea 13: | Linea 16: |
| * [http://help.ubuntu-it.org/current/ubuntu/serverguide/it/jeos-and-vmbuilder.html ubuntu-vm-builder], sviluppato da Canonical. * [http://help.ubuntu-it.org/current/ubuntu/serverguide/it/libvirt.html virt-install], uno script python sviluppato da Red Hat. * [http://help.ubuntu-it.org/current/ubuntu/serverguide/it/libvirt.html#libvirt-management virt-manager]: uno strumento GUI. |
= Virt-manager: Creazione di una VM tramite interfaccia grafica = |
| Linea 17: | Linea 18: |
| = Ubuntu-vm-builder = | '''virt-manager''' è lo strumento più semplice e raccomandato per la maggior parte degli utenti per creare e gestire le macchine virtuali KVM. |
| Linea 19: | Linea 20: |
| '''Ubuntu-vm-builder''' è il miglior strumento per la creazione di macchine virtuali che eseguono '''Ubuntu JEOS 8.04''', dato che l'installazione avviene interamente tramite script. | [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virt-manager|virt-manager]]. |
| Linea 21: | Linea 22: |
| == Installazione == | 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. |
| Linea 23: | Linea 51: |
| Installare il pacchetto: [apt://ubuntu-vm-builder ubuntu-vm-builder] | = Virt-install: Creazione di una VM tramite riga di comando = |
| Linea 25: | Linea 53: |
| ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''A partire da '''Ubuntu 8.10''' il pacchetto viene chiamato: '''python-vm-builder'''; il comando: '''vmbuilder'''. Per un dettagliato tutorial consultare la [http://help.ubuntu-it.org/9.10/ubuntu/serverguide/it/jeos-and-vmbuilder.html relativa pagina]''.|| | '''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. |
| Linea 27: | Linea 55: |
| == Utilizzo elementare == | [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virtinst|virtinst]]. |
| Linea 29: | Linea 57: |
| Digitando il seguente comando in una finestra di terminale:{{{ sudo ubuntu-vm-builder kvm hardy |
== 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 |
| Linea 32: | Linea 64: |
| si creerà una '''Ubuntu Hardy''', con tutte le opzione impostate in modo predefinito. Oppure è possibile usare questo URL: * http://people.ubuntu.com/~kirkland/ubuntu-vm-builder.html in uno strumento per script java per generare la lunga serie di parametri disponibili per ''ubuntu-vm-builder''. Se si preferisce usare '''Virsh''' per la gestione della macchina virtuale è necessario aggiungere questo parametro:{{{ --libvirt qemu:///system }}} sfortunatamente lo script java non contiene una opzione per farlo automaticamente. Utilizzando il parametro '''--libvirt''', il file `XML` non viene archiviato localmente ma viene inserito in '''libvirt'''. * Utilizzare: {{{ virsh -c qemu:///system }}} oppure, {{{ virt-manager -c qemu:///system }}} per avviare la macchina o modificarne la configurazione. == Esempio più complesso == In seguito è riportato un esempio più complesso:{{{ ubuntu-vm-builder kvm hardy \ --domain newvm \ --dest newvm \ --arch i386 \ --hostname hostnameformyvm \ --mem 256 \ --user john \ --pass doe \ --ip 192.168.0.12 \ --mask 255.255.255.0 \ --net 192.168.0.0 \ --bcast 192.168.0.255 \ --gw 192.168.0.1 \ --dns 192.168.0.1 \ --mirror http://archive.localubuntumirror.net/ubuntu \ --components main,universe \ --addpkg vim openssh-server \ --libvirt qemu:///system ; }}} ciò creerà una nuova macchina virtuale '''Ubuntu Hardy''' chiamata '''newvm''': * L' '''hostname''' sarà impostato a hostnameformyvm. * La '''rete''' sarà configurata con un indirizzo IP statico e il '''gateway''' all'indirizzo «192.168.0.1.». * Il parametro '''--mirror''' richiederà allo script lo scaricamento dei pacchetti da un mirror locale di '''Ubuntu''' piuttosto che dal server centrale (ciò diminuirà di molto il tempo necesario alla creazione della macchina virtuale). * L'argomento '''components''' abiliterà i repository main e universe predefiniti sulla macchina virtuale. * '''--addpkg vim''' installerà Vim. * L'aggiunta di '''openssh-server''' a '''--addpkg''' consentirà di eseguire una sessione ssh sulla nuova macchina una volta avviata (assicurarsi che i dispositivi di connessione funzionino correttamente). * L'ultimo argomento aggiungerà automaticamente la macchina virtuale appena creata a '''KVM'''. ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">'' Il manuale non fornisce spiegazioni dettagliate sull'utilizzo dell'opzione '''--exec''', usata per lanciare uno script durante il processo dicostruzione della macchina virtuale. Quindi se si specifica l'opzione '''--exec''' è necessario fornire l'indirizzo completo dallo script. In mancanza di ciò il programma d'installazione restituirà un errore relativo all'impossibilità di recuperare lo script''.|| === Avviso bug === Sembra che il pacchetto ''linux-package'' non venga trovato durante la costruzione della macchina virtuale fino a che non viene aggiunta l'opzione '''restricted''' nell'argomento '''component''' di ''ubuntu-vm-builder''. Se non specificato si otterrà un Sistema Operativo non funzionante che si avvierà solamente da grub. Per risolvere il problema modificare l'argomento '''component''' come da esempio:{{{ --components 'main,universe,restricted' }}} presumendo che ciò sia un bug di ''ubuntu-vm-builder''. == Intallazione su un dispositivo a blocchi grezzo == ''Ubuntu-vm-builder'' non consente la creazione di macchine virtuali su un dispositivo a blocchi grezzo (come ad esempio una partizione indipendente, oppure una condivisione iSCSI). È possibile usare ''ubuntu-vm-builder'' per creare l'immagine '''qcow2''' e quindi spostare la VM sul dispositivo a blocchi con '''qemu-img'''; se `/dev/sdb` è il disco sul quale trasferire la macchina virtuale procedere come segue: * Digitare il seguente comando in una finestra di terminale:{{{ sudo qemu-img convert root.qcow2 -O raw /dev/sdb }}} * Aprire con un [:Ufficio/EditorDiTesto:editor di testo] il file definizione `XML` per la VM in `/etc/libvirt/qemu/`, ed impostare il file sorgente per essere:{{{ <source file='/dev/sdb'/> }}} * Ridefinire la macchina virtuale ed avviarla; così facendo funzionerà da `/dev/sdb`. Per avere un elenco più dettagliato delle capacità di ''Ubuntu-vm-builder'', utilizzare:{{{ ubuntu-vm-builder --help }}} = Virt-install: creazione di una macchina virtuale in grado di eseguire altri sistemi operativi = '''Virt-install''' a differenza di '''Ubuntu-vm-builder''' non crea una nuova macchina virtuale ma consente di avviare un immagine ISO e di installare qualsiasi sistema operativo. Per l'elenco dei sistemi operativi supportati, consultare la [http://www.linux-kvm.org/page/Guest_Support_Status relativa pagina]. Di seguito viene descritto come installare '''Windows XPA'''. |
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. |
| Linea 136: | Linea 95: |
| La seguente descrizione è relativa a windows XP sotto '''KVM-62''' (Predefinito in Hardy durante la stesura di questo testo). In questa versione è impossibile l'esecuzione di windows 2000 server in modalità accelerata, per cui occorre usare '''KVM-72''' adattato per Hardy fornito a: [https://launchpad.net/~soren/+archive questo indirizzo]. | 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. |
| Linea 138: | Linea 97: |
| 0. Copiare la ISO del sistema da installare nella vostra '''Home''':{{{ yhamon@paris:~$ ls *.iso ubuntu-8.04-server-i386.iso windowsxpsp2.iso }}} in caso di solo possesso del CD è possibile creare il file `.iso` inserendo il CD nell'apposito lettore e digitando in una finestra di terminale:{{{ dd if=/dev/dvd of=dvd.iso }}} 0. Installare il pacchetto [apt://python-virtinst python-virtinst] 0. Eseguire '''virt-install'''. Su '''Ubuntu Hardy''' con '''KVM-62''', l'installazione di windows XP non funziona se accelerata (cioè, usando --accelerate). * Installare senza questo argomento e sosituire '''qemu''' con '''kvm''' nel file definizione `XML` in `/etc/libvirt/qemu` dopo il primo riavvio:{{{ sudo virt-install --connect qemu:///system -n xpsp2 -r 512 -f windows.qcow2 -s 12 -c windowsxpsp2.iso --vnc --noautoconsole --os-type windows --os-variant winxp }}} Questo avvierà una nuova macchina virtuale dalla ISO. ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Per la versione di '''Ubuntu 8.10''' aggiungere l'opzione '''--hvm''' per avere l'ospite completamente virtualizzato e far si che il precedente comando funzioni''.|| ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Per la versione di '''Ubuntu 9.10''' usare l'opzione '''--accelerate''' invece di '''--hvm''' nel caso in cui la macchina virtuale dovesse bloccarsi 1 o 2 minuti dopo l'inizio dell'installazione di Windows xp.''|| * Connettersi alla nuova macchina virtuale usando '''virt-viewer''':{{{ virt-viewer -c qemu:///system xpsp2 }}} Oppure se '''KVM''' è in funzione su di un altro server:{{{ virt-viewer -c qemu+ssh://ip/system xpsp2 }}} * Ora è possibile avviare l'installazione. Un'altro problema è che dopo il primo riavvio, nel processo di installazione, il programma di installazione di windows riferirà che non è più possibile trovare il disco d'installazione. * Quindi nel file definizione `XML` della macchina virtuale aggiungere le seguenti linee alla lista dei dispositivi:{{{ <domain type='kvm'> [...] <devices> [...] <disk type='file' device='cdrom'> <source file='//home/nomeutente/windowsxpsp2.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> </devices> </domain> }}} * Ridefinire la macchina virtuale in '''virsh''' digitando da una finestra di terminale:{{{ sudo virsh define /etc/libvirt/qemu/xpsp2.xml }}} * Riavviare la macchina virtuale. Un altro problema con la combinazione '''virt-install - Windows''' è che il disco immagine creato è corrotto. Inizialmente l'installazione sembra funzionare, ma dopo il primo riavvio si fermerà riportando il messaggio «A read error occured». Ciò può essere risolto creando un nuovo disco immagine (prima dell'installazione):{{{ qemu-img create -f qcow2 disk0.qcow2 12G }}} questo comando sovrascrive il file `qcow2` creato da '''virt-install'''. Con questo nuovo file, riavviare la macchina virtuale. == Esempio di installazione di Ubuntu == Per installare '''Ubuntu 8.04''' digitare il seguente comando in un terminale:{{{ sudo virt-install --connect qemu:///system -n hardy -r 512 -f hardy.qcow2 -s 12 -c hardy-server-amd64.iso --vnc --noautoconsole --os-type linux --os-variant ubuntuHardy --accelerate --network=network:default }}} L'opzione '''--network''' imposta la machina all'uso della rete '''libvirt''' predefinita. Per un elenco delle reti '''libvirt''' digitare il seguente comando in un yerminale:{{{ virsh net-list --all }}} == Altri sistemi operativi == È possibile installare altri sistemi operativi seguendo il metodo precedente. Consultare: {{{ man virt-install }}} per maggiori informazioni e differenti opzioni per la macchina virtuale, sistemi operativi supportati e relative varianti. ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Questo metodo non funziona con il LiveCD di Fedora e probabilmente anche altri. Per maggiori informazioni vedere: [https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/220463 bug #220463]''.|| |
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).<<BR>>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. |
| Linea 229: | Linea 123: |
| È possibile clonare una macchina virtuale usando lo strumento '''virt-clone'''. Quest'ultimo duplicherà l'immagine del disco e configurerà il dominio della 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. |
| Linea 231: | Linea 125: |
| Per clonare una macchina virtuale chiamata '''srchost''' in una nouva macchina '''newhost''', assicurarsi che la macchina virtuale '''srchost''' non sia in esecuzione e digitare il seguente comando in un terminale:{{{ virt-clone --connect=qemu:///system -o srchost -n newhost -f /indirizzo/per/newhost.qcow2 |
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 |
| Linea 235: | Linea 171: |
| = Creazione di una macchina virtuale da un'immagine preesistente = | 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. |
| Linea 237: | Linea 173: |
| '''Virt-manager''' viene utilizzato per gestire macchine virtuali. Nel caso si voglia corrompere un immagine è possibile sperimentarlo sulle macchine virtuali senza dover eseguire complete reinstallazzioni, usando '''qcow2''' con '''overlays'''. Un lato positivo di questo metodo rispetto alla clonazione è il minor utilizzo di spazio su disco. Procedura: 0. Creare un immagine del hard disk in formato qcow2:{{{ qemu-img create -f qcow2 nome_immagine.qcow2 }}} sostituire «nome_immagine» con il nome dell'immagine in uso. 0. Installare la macchina virtuale usando virt-manager. Invece di consentire a '''virt-manager''' la creazione di una nuova immagine del disco, indirizzarlo all'uso dell'immagine precedentemente creata. 0. Creare l'overlay digitanto il seguente comando in un terminale:{{{ qemu-img create -f qcow2 -b <nome immagine>.qcow2 <nome immagine>.ovl }}} 0. Creare l'immagine virtuale del descrittore XML. * Prima di proseguire leggere:{{{ man virt-image man 5 virt-image }}} * Copiare il file `XML` creato:{{{ cp ~/.libvirt/qemu/<nome vm>.xml overlay.xml }}} * Aprire con un [:Ufficio/EditorDiTesto:editor di testo] il file `overlay.xml`. * Creare l'immagine virtuale del descrittore XML basandosi sulla pagina del manuale: virt-image(5), commentando il testo originale ed usandolo come guida durante la creazione del descrittore. 0. Creare la nuova macchina virtuale dall'immagine del descrittore digitando in un terminale{{{ virt-image --vnc overlay.xml }}} 0. Avviare e verificare che la nuova macchina sia basata sull'overlay. Avviare la macchina virtuale e testarla come meglio si crede. In caso di malfunzionamento basta semplicemente distruggerla e cancellarla. Quindi ricreare l'immagine e la macchina overlay come descritto sopra. È possibile effettuare cambiamenti overlay all'immagine di base. In tal caso consultare il manuale alla pagina '''qemu-img''' per i dettagli. |
{{{#!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. |
| Linea 276: | Linea 178: |
| *[http://wiki.ubuntu-it.org/FabioMarconi/Prove12 Domande frequenti] *[http://packages.ubuntu.com/search?keywords=apt-cacher-ng apt-cacher-ng per il mirroring] *[https://help.ubuntu.com/community/KVM/CreateGuests Documento originale] |
* [[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]] |
| Linea 280: | Linea 185: |
| CategoryEmulatori | CategoryVirtualizzazione |
Guida verificata con Ubuntu: 22.04 24.04 25.10
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa pagina spiega come creare e gestire macchine virtuali (ospiti) dopo aver installato 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.
Installare il pacchetto virt-manager.
Avviare "Virtual Machine Manager".
Potrebbe essere richiesta la password di amministratore se l'utente non fa parte del gruppo libvirt (vedere la guida di installazione).
- 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".
- Metodo di installazione:
- 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.
- 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.
- 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.
- 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.
- Selezionare la configurazione di rete desiderata:
- 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.
Installare il pacchetto 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.
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
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 \ --hvmSpiegazione 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.
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.
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/).
Preparare il disco immagine:
qemu-img create -f qcow2 /var/lib/libvirt/images/windows10.qcow2 60G
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 \ --hvmIl 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.
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:
Assicurarsi che la VM sorgente non sia in esecuzione:
virsh shutdown source-vm
(Attendere che lo stato diventi shut off).
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.
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
Oppure convertire un'immagine esistente in qcow2: qemu-img convert existing.raw -O qcow2 base_ubuntu.qcow2
- 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.
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.
