|
Dimensione: 16376
Commento:
|
← Versione 74 del 24/10/2025 14.14.56 ⇥
Dimensione: 11486
Commento: revisione
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## page was renamed from Emulatori/Kvm/CreazioneOspiti ## page was renamed from FabioMarconi/Prove9 ##page updated 25-05-2010 |
|
| Linea 5: | Linea 2: |
| #language it | #LANGUAGE it <<BR>> |
| Linea 7: | Linea 5: |
| <<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";)>> | <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="25.10 25.04 24.04 22.04")>> |
| Linea 9: | Linea 7: |
| <<BR>><<BR>> | |
| Linea 12: | 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]]'''. 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 14: | Linea 14: |
| Ciò può essere fatto usando: | = Creare VM da interfaccia grafica = |
| Linea 16: | 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''' è lo strumento più semplice e raccomandato per la maggior parte degli utenti per creare e gestire le macchine virtuali '''KVM'''. |
| Linea 20: | Linea 18: |
| = Ubuntu-vm-builder = | 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virt-manager|virt-manager]]. 0. [[AmbienteGrafico/AvviareProgrammi|Avviare]] '''Virtual Machine Manager'''. {{{#!wiki note Potrebbe essere richiesta la password di amministratore se l'utente non fa parte del gruppo '''libvirt''' (vedere [[Virtualizzazione/Kvm/Installazione#root|guida]]). }}} 0. Creare una nuova macchina virtuale. Fare clic sull'icona '''Crea una nuova macchina virtuale''' (monitor con stella verde). 0. Verranno visualizzati i seguenti metodi di installazione: * '''Local install media (ISO image or CDROM)''': installare un sistema operativo da un file ISO o da un CD/DVD fisico. (Metodo più comune). * '''Network Install (HTTP, FTP, NFS)''': installare un sistema operativo tramite un server di installazione di rete. * '''Import existing disk image''': configurare una VM che utilizzi un disco virtuale preesistente. * '''Network Boot (PXE)''': avvio della VM tramite PXE da una rete. 0. Selezionare '''Local install media''' e fare clic su '''Avanti'''. 0. Specificare il percorso del media di installazione facendo clic su '''Sfoglia...''' per selezionare il file ISO del sistema operativo che si desidera installare. 0. Spuntare '''Automatically detect from the install media / source''' in modo che '''virt-manager''' tenti di rilevare il tipo di sistema operativo per ottimizzare le impostazioni. 0. Configurare RAM e CPU: * Assegnare la quantità di RAM desiderata alla VM. Si consiglia di lasciare almeno 1GB (1024 MB) per l'host. * Assegnare il numero di core CPU. 0. Creare o specificare il disco virtuale: * '''Crea una nuova immagine del disco gestita''': è il metodo predefinito e raccomandato. Specificare la dimensione desiderata per il disco. '''virt-manager''' creerà un'immagine '''qcow2''' nella directory predefinita di '''libvirt''' `/var/lib/libvirt/images/`. * '''Seleziona o crea un volume di archiviazione personalizzato''': permette di utilizzare un'immagine disco esistente o di crearne una in un percorso specifico o su un dispositivo a blocchi. 0. Configurare la rete selezionare la configurazione di rete desiderata: * '''Virtual network 'default' (NAT)''': la VM sarà isolata nella rete virtuale predefinita di '''libvirt''' con accesso a internet tramite NAT sull'host. * '''Bridge device''': selezionare il bridge configurato sull'host (es. '''br0'''). La VM sarà direttamente visibile sulla rete fisica. 0. Finalizzare la creazione: * Assegnare un nome alla macchina virtuale. * Spuntare '''Personalizza la configurazione prima di installare''' per accedere a opzioni avanzate come aggiungere più CPU, modificare il tipo di scheda di rete in '''virtio''', aggiungere dispositivi USB, ecc.. * Fare clic su '''Fine'''. La VM si avvierà e sarà possibile procedere con l'installazione del sistema operativo come su un computer fisico. |
| Linea 22: | Linea 46: |
| '''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. | = Creare VM da terminale = |
| Linea 24: | Linea 48: |
| == Installazione == | '''virt-install''' è uno script Python che permette la creazione di macchine virtuali KVM in modo automatizzato da terminale. |
| Linea 26: | Linea 50: |
| Installare il pacchetto: [[apt://ubuntu-vm-builder | ubuntu-vm-builder]] | [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://virtinst|virtinst]]. |
| Linea 28: | Linea 52: |
| ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/note.png,,center)>> ||<style="padding:0.5em; border:none;">''Per il corretto funzionamento di '''vmbuilder''' è necessario avere installato grub. Il sistema operativo host può tranquillamente essere avviato con lilo, ma il sistema ospite deve essere avviato da grub. Grub deve essere installato sulla macchina ospite per costruire l'immagine. 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]]. Verificare inoltre di avere una /tmp di almeno 1GB altrimenti in alcune localizzazioni ubuntu-vm-builder potrebbe crashare''.|| | == Esempio installazione Ubuntu Server == |
| Linea 30: | Linea 54: |
| == Utilizzo elementare == | Questo esempio mostra come installare '''Ubuntu Server''' da un '''file ISO''', utilizzando '''driver Virtio''' per disco e rete. |
| Linea 32: | Linea 56: |
| Digitando il seguente comando in una finestra di terminale:{{{ sudo ubuntu-vm-builder kvm hardy |
0. È buona pratica creare il file immagine del disco prima di avviare `virt-install` per avere un maggiore controllo. Preparare un'immagine `qcow2` di 20GB:{{{ qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-server.qcow2 20G |
| Linea 35: | Linea 59: |
| si creerà una '''Ubuntu Hardy''', con tutte le opzione impostate in modo predefinito. | 0. Eseguire `virt-install`:{{{ sudo virt-install \ --name ubuntu-server-vm \ --memory 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/ubuntu-server.qcow2,bus=virtio,size=20 \ --os-variant ubuntufocal \ --network bridge=br0,model=virtio \ --cdrom /path/to/ubuntu-22.04-live-server-amd64.iso \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --virt-type kvm \ --hvm }}}dove: * `name ubuntu-server-vm`: è il nome della macchina virtuale. * `memory 2048`: 2GB di RAM. * `vcpus 2`: 2 core virtuali per la CPU. * `disk ...`: configurazione del disco in cui: * `path`: percorso dell'immagine. * `bus=virtio`: per prestazioni ottimali. * `size`: dimensione (se non specificato prima). * `os-variant ubuntufocal`: aiuta '''libvirt''' a ottimizzare le impostazioni. Per '''Ubuntu 22.04''' si può utilizzare '''ubuntujammy''' o '''ubuntufocal'''. * `network bridge=br0,model=virtio`: connette la VM al bridge '''br0''' sull'host usando l'interfaccia di rete '''virtio''' para-virtualizzata. Se '''br0''' non esiste si può utilizzare network=default per la rete NAT. * `cdrom /path/to/ubuntu-22.04-live-server-amd64.iso`: percorso del file ISO per l'installazione. * `graphics vnc,listen=0.0.0.0`: abilita l'accesso VNC da qualsiasi indirizzo. Per maggiore sicurezza si può limitare `listen=127.0.0.1`. * `noautoconsole`: non connette automaticamente il terminale alla console della VM. * `virt-type kvm --hvm`: specifica l'uso di KVM per la virtualizzazione hardware completa. 0. Connettersi alla VM per l'installazione. Dopo aver avviato `virt-install`, la VM sarà in esecuzione. Per accedere alla console grafica (VNC):{{{ virt-viewer --connect qemu:///system ubuntu-server-vm }}}Si aprirà una finestra con la console della VM, dove è possibile procedere con l'installazione. |
| Linea 37: | Linea 90: |
| Oppure è possibile usare questo URL: | == Esempio installazione Windows == |
| Linea 39: | Linea 92: |
| * http://people.ubuntu.com/~kirkland/ubuntu-vm-builder.html | Per ottenere buone prestazioni l'installazione di Windows richiede l'utilizzo di driver '''Virtio'''. Questi driver non sono inclusi nella ISO di Windows e devono essere forniti separatamente. |
| Linea 41: | Linea 94: |
| 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 |
0. Scaricare l'immagine ISO `virtio-win.iso` (ad esempio dal sito Fedora Koji) e posizionarla in una directory accessibile all'host KVM (es. `/var/lib/libvirt/images/`). 0. Preparare il disco immagine digitando:{{{ qemu-img create -f qcow2 /var/lib/libvirt/images/windows10.qcow2 60G |
| Linea 46: | Linea 98: |
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 acpid \ --addpkg vim \ --addpkg openssh-server \ --addpkg avahi-daemon \ --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''.|| == Avvio dell'ospite creato nell'esempio complesso == Una volta che l'ospite è stato creato è possibile visualizzarlo con il comando: {{{ virsh 'list --all' }}} che restituirà un output simile a: {{{ Id Name State ---------------------------------- - Nome ospite shut off }}} Ora per avviare il server virtuale usare il comando: {{{ virsh start Nome ospite }}} === Accesso al nuovo server da remoto via tunnel SSH/VNC === Se il vostro server è remoto, potete usare i seguenti comandi dalla vostra macchina locale. Il primo ospite è accessibile, in via predefinita, su vnc:127.0.0.1:5900. se si sta accedendo al server da remoto è possibile impostare un tunnel ssh e vnc sul server virtuale. Dal terminale della macchina locale: {{{ ssh vostro utente@vostro server -L5900:127.0.0.1:5900 }}} Andare in Applicazioni, Internet, Visualizzatore di desktop remoti ed impostare: '''Protocol : VNC''' '''Host : 127.0.0.1''' Lasciare il resto invariato. === 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''. '''Avviso''': durante la gestione dell'ospite i comandi spegni/riavvia inviati da virsh sono eventi ACPI, è quindi necessario avere il supporto ACPI. Se il sitema ospite è Ubuntu allora eseguire nel terminale {{{ sudo apt-get install acpid }}} == 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'''. == Esempio di installazione di Windows == 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]]. 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. 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. Eseguire `virt-install` per Windows:{{{ sudo virt-install \ --name windows10-vm \ --memory 4096 \ --vcpus 4 \ --disk path=/var/lib/libvirt/images/windows10.qcow2,bus=virtio,size=60 \ --disk path=/var/lib/libvirt/images/virtio-win.iso,device=cdrom \ --os-variant win10 \ --network bridge=br0,model=virtio \ --cdrom /path/to/Win10_22H2_Italian_x64.iso \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --virt-type kvm \ --hvm }}} {{{#!wiki note Il primo `--disk` è per il disco di sistema (`bus=virtio`), mentre il secondo carica l'ISO dei driver '''Virtio''' come un CD-ROM virtuale. Durante l'installazione di Windows, quando viene richiesto '''Carica driver''', puntare a questo CD-ROM per installare i driver del disco e della rete. }}} 0. Connettersi alla VM e installare i driver. Usare `virt-viewer` per accedere alla VM e seguire la procedura di installazione di Windows. Quando richiesto per i driver, caricarli dall'ISO `virtio-win.iso` montata. |
| Linea 273: | Linea 120: |
| È 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 275: | Linea 122: |
| 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 }}}E attendere che lo stato diventi `shut off`. 0. Eseguire `virt-clone`:{{{ sudo virt-clone \ --original source-vm \ --name new-vm \ --file /var/lib/libvirt/images/new-vm.qcow2 }}}Descrizione: * `--original source-vm`: nome della VM da clonare. * `--name new-vm`: nome della nuova VM. * `--file /path/to/new-vm-disk.qcow2`: percorso e nome del file della nuova immagine disco per la VM clonata. Questo creerà una copia completa del disco. Dopo la clonazione la '''new-vm''' sarà disponibile e potrà essere avviata tramite `virt-manager` o `virsh start new-vm`. = Creazione MV da immagine preesistente - Overlay = L'utilizzo di '''qcow2''' con ''overlay'' (snapshot basati su copy-on-write) permette di creare VM leggere occupando meno spazio su disco rispetto alla clonazione completa. È ideale per sperimentare senza alterare un'immagine di base. 0. In base alle esigenze: * '''creare''' un'immagine `qcow2` di base. Ad esempio per un'installazione pulita di Ubuntu:{{{ qemu-img create -f qcow2 base_ubuntu.qcow2 20G }}} * '''convertire''' un'immagine `qcow2` esistente:{{{ qemu-img convert existing.raw -O qcow2 base_ubuntu.qcow2 }}} 0. Creare un'immagine '''overlay''' (snapshot differenziale). Questa immagine registrerà solo le modifiche rispetto all'immagine di base, conservando l'originale intatta:{{{ qemu-img create -f qcow2 -b /path/to/base_ubuntu.qcow2 /path/to/overlay_vm.qcow2 }}}`overlay_vm.qcow2` sarà il disco della nuova VM. 0. Creare una nuova macchina virtuale usando l'immagine '''overlay'''. Utilizzare '''virt-install''' o '''virt-manager''' per creare una nuova VM, puntando il disco virtuale al file `overlay_vm.qcow2` appena creato. Con '''virt-install''':{{{ sudo virt-install \ --name overlay-test-vm \ --memory 1024 \ --vcpus 1 \ --disk path=/path/to/overlay_vm.qcow2,bus=virtio \ --os-variant ubuntufocal \ --network network=default,model=virtio \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole \ --virt-type kvm \ --hvm |
| Linea 279: | Linea 166: |
| = 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 unoa nuova dalla base. |
| Linea 281: | Linea 168: |
| '''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 |
{{{#!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. |
| Linea 288: | Linea 171: |
| 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. |
|
| Linea 320: | Linea 174: |
| *[[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 sul wiki Ubuntu internazionale]] * [[https://qemu.org/|Sito ufficiale di QEMU]] * [[https://virt-manager.org/|Sito ufficiale di virt-manager]] |
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. La creazione di macchine virtuali può essere effettuata utilizzando principalmente:
virt-manager: un'interfaccia grafica (GUI) completa e intuitiva.
virt-install: uno strumento a riga di comando per la creazione automatizzata di VM.
virsh: l'interfaccia a riga di comando per libvirt, utilizzata per la gestione delle VM esistenti.
Creare VM da interfaccia grafica
virt-manager è lo strumento più semplice e raccomandato per la maggior parte degli utenti per creare e gestire le macchine virtuali KVM.
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 guida).
Creare una nuova macchina virtuale. Fare clic sull'icona Crea una nuova macchina virtuale (monitor con stella verde).
- Verranno visualizzati i seguenti metodi di installazione:
Local install media (ISO image or CDROM): installare un sistema operativo da un file ISO o da un CD/DVD fisico. (Metodo più comune).
Network Install (HTTP, FTP, NFS): installare un sistema operativo tramite un server di installazione di rete.
Import existing disk image: configurare una VM che utilizzi un disco virtuale preesistente.
Network Boot (PXE): avvio della VM tramite PXE da una rete.
Selezionare Local install media e fare clic su Avanti.
Specificare il percorso del media di installazione facendo clic su Sfoglia... per selezionare il file ISO del sistema operativo che si desidera installare.
Spuntare Automatically detect from the install media / source in modo che virt-manager tenti di rilevare il tipo di sistema operativo per ottimizzare le impostazioni.
- 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: è il metodo predefinito e raccomandato. Specificare la dimensione desiderata per il disco. virt-manager creerà un'immagine qcow2 nella directory predefinita di libvirt /var/lib/libvirt/images/.
Seleziona o crea un volume di archiviazione personalizzato: permette di utilizzare un'immagine disco esistente o di crearne una in un percorso specifico o su un dispositivo a blocchi.
- 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.
- Finalizzare la creazione:
- Assegnare un nome alla macchina virtuale.
Spuntare Personalizza la configurazione prima di installare per accedere a opzioni avanzate come aggiungere più CPU, modificare il tipo di scheda di rete in virtio, aggiungere dispositivi USB, ecc..
Fare clic su Fine. La VM si avvierà e sarà possibile procedere con l'installazione del sistema operativo come su un computer fisico.
Creare VM da terminale
virt-install è uno script Python che permette la creazione di macchine virtuali KVM in modo automatizzato da terminale.
Installare il pacchetto virtinst.
Esempio installazione Ubuntu Server
Questo esempio mostra come installare Ubuntu Server da un file ISO, utilizzando driver Virtio per disco e rete.
È buona pratica creare il file immagine del disco prima di avviare virt-install per avere un maggiore controllo. Preparare un'immagine qcow2 di 20GB:
qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-server.qcow2 20G
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 \ --hvmdove:name ubuntu-server-vm: è il nome della macchina virtuale.
memory 2048: 2GB di RAM.
vcpus 2: 2 core virtuali per la CPU.
disk ...: configurazione del disco in cui:
path: percorso dell'immagine.
bus=virtio: per prestazioni ottimali.
size: dimensione (se non specificato prima).
os-variant ubuntufocal: aiuta libvirt a ottimizzare le impostazioni. Per Ubuntu 22.04 si può utilizzare ubuntujammy o ubuntufocal.
network bridge=br0,model=virtio: connette la VM al bridge br0 sull'host usando l'interfaccia di rete virtio para-virtualizzata. Se br0 non esiste si può utilizzare network=default per la rete NAT.
cdrom /path/to/ubuntu-22.04-live-server-amd64.iso: percorso del file ISO per l'installazione.
graphics vnc,listen=0.0.0.0: abilita l'accesso VNC da qualsiasi indirizzo. Per maggiore sicurezza si può limitare listen=127.0.0.1.
noautoconsole: non connette automaticamente il terminale alla console della VM.
virt-type kvm --hvm: specifica l'uso di KVM per la virtualizzazione hardware completa.
Connettersi alla VM per l'installazione. Dopo aver avviato virt-install, la VM sarà in esecuzione. Per accedere alla console grafica (VNC):
virt-viewer --connect qemu:///system ubuntu-server-vm
Si aprirà una finestra con la console della VM, dove è possibile procedere con l'installazione.
Esempio installazione Windows
Per ottenere buone prestazioni l'installazione di Windows richiede l'utilizzo di driver Virtio. Questi driver non sono inclusi nella ISO di Windows e devono essere forniti separatamente.
Scaricare l'immagine ISO virtio-win.iso (ad esempio dal sito Fedora Koji) e posizionarla in una directory accessibile all'host KVM (es. /var/lib/libvirt/images/).
Preparare il disco immagine digitando:
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), mentre il secondo carica l'ISO dei driver Virtio come un CD-ROM virtuale. Durante l'installazione di Windows, quando viene richiesto Carica driver, puntare a questo CD-ROM per installare i driver del disco e della rete.
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
E 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.qcow2Descrizione:--original source-vm: nome della VM da clonare.
--name new-vm: nome della nuova VM.
--file /path/to/new-vm-disk.qcow2: percorso e nome del file della nuova immagine disco per la VM clonata. Questo creerà una copia completa del disco.
Dopo la clonazione la new-vm sarà disponibile e potrà essere avviata tramite virt-manager o virsh start new-vm.
Creazione MV da immagine preesistente - Overlay
L'utilizzo di qcow2 con overlay (snapshot basati su copy-on-write) permette di creare VM leggere occupando meno spazio su disco rispetto alla clonazione completa. È ideale per sperimentare senza alterare un'immagine di base.
- In base alle esigenze:
creare un'immagine qcow2 di base. Ad esempio per un'installazione pulita di Ubuntu:
qemu-img create -f qcow2 base_ubuntu.qcow2 20G
convertire un'immagine qcow2 esistente:
qemu-img convert existing.raw -O qcow2 base_ubuntu.qcow2
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 unoa nuova dalla base.
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.
