Hai deciso di passare da Oracle VirtualBox a una macchina virtuale basata su kernel? Grande! Questa guida passo passo spiega come migrare le VM Virtualbox in VM KVM in Linux.
Potresti aver eseguito alcune importanti macchine guest su VirtualBox. Invece di creare nuovi guest KVM con la stessa configurazione, puoi facilmente convertire le macchine Virtualbox esistenti in KVM come descritto qui.
Migrazione di VM Virtualbox in VM KVM in Linux
Innanzitutto, spegni tutte le macchine virtuali in esecuzione in VirtualBox.
Ai fini di questa guida, utilizzerò CentOS e FreeBSD macchine virtuali ospitate in VirtualBox.
Come forse già saprai, il formato dell'immagine disco predefinito di una macchina virtuale KVM è .qcow2
e Virtualbox VM è .vdi
.
Possiamo convertire un file immagine disco vdi in qcow2 in due modi. Possiamo convertire direttamente il vdi
immagine a qcow2
formato.
Se non funziona per qualsiasi motivo, possiamo prima convertire il vdi
format in raw format e poi converti il raw format in qcow2
.
1. Converti il formato immagine vdi nel formato immagine qcow2
Lascia che ti mostri il tipo di immagine del disco della mia VM CentOS creata utilizzando VirtualBox.
$ ls CentOS\ 8\ Server/
Risultato di esempio:
CentOS 8 Server.vbox CentOS 8 Server.vbox-prev CentOS 8 Server.vdi Logs
Come avrai notato, il tipo di file dell'immagine disco di CentOS VM è .vdi . Per chi se lo chiede, VDI è il formato nativo di VirtualBox. VirtualBox utilizza questo formato per impostazione predefinita quando creiamo una nuova macchina virtuale.
Ed ecco il tipo di file dell'immagine del disco di FreeBSD:
$ ls FreeBSD\ 12/ FreeBSD-12.0-RELEASE-amd64.vhd freebsd12.qcow2 FreeBSD 12.vbox FreeBSD 12.vbox-prev Logs
Qui, il tipo di file immagine del disco freebsd è .vhd . VHD è il formato nativo di Microsoft Virtual PC.
Ho creato entrambe le macchine virtuali in VirtualBox. Ma Virtualbox usava .vdi
formato per CentOS e .vhd
formato per FreeBSD.
Entrambi i formati VDI e VHD sono supportati molto bene da VirtualBox. Ed entrambi i tipi di immagine possono essere facilmente convertiti in formato qcow2.
Ora torniamo all'argomento:come convertire le immagini del disco della macchina Virtualbox nel tipo di immagine del disco supportato da KVM usando "qemu-img"
comando?
Bene, è facile! Il qemu-img
Il comando viene utilizzato per convertire le immagini del disco della macchina virtuale in vari formati diversi, incluso qcow2
, raw
, vdi
, vhd
e vmdk
.
Per convertire un vdi
immagine a qcow2
immagine usando qemu-img
comando, esegui:
$ qemu-img convert CentOS\ 8\ Server/CentOS\ 8\ Server.vdi -O qcow2 centos8.qcow2
Il comando precedente convertirà il dato vdi
file in qcow2
formato.
Qui abbiamo usato -O qcow2
per specificare in modo esplicito il formato di output. Naturalmente, non è necessario specificare esplicitamente il formato di output e specificare semplicemente il formato di input e output come di seguito:
$ qemu-img convert CentOS\ 8\ Server/CentOS\ 8\ Server.vdi centos8.qcow2
Ma creerà un'immagine di dimensioni maggiori.
Allo stesso modo, puoi convertire il vhd
file immagine in qcow2
immagine utilizzando il seguente comando:
$ qemu-img convert FreeBSD\ 12/FreeBSD-12.0-RELEASE-amd64.vhd -O qcow2 freebsd12.qcow2
Questo è il modo in cui migriamo le macchine virtuali Virtualbox alle macchine virtuali KVM.
Ora vai a "Crea una macchina virtuale KVM dall'immagine Qcow2 " sezione riportata di seguito per sapere come creare una nuova macchina virtuale KVM utilizzando le immagini Qcow2.
Nel caso in cui il metodo sopra non funzioni (cosa molto improbabile), puoi usare il seguente metodo per convertire vdi
immagini su qcow2
immagini.
2. Converti vdi in formato immagine raw e quindi in formato immagine qcow2
Innanzitutto, trova l'elenco delle immagini del disco virtualbox disponibili e la loro posizione utilizzando il comando:
$ vboxmanage list hdds
Oppure,
$ VBoxManage list hdds
Risultato di esempio:
UUID: ecfb6d5c-aa10-4ffc-b40c-b871f0404da8 Parent UUID: base State: created Type: normal (base) Location: /home/sk/VirtualBox VMs/CentOS 8 Server/CentOS 8 Server.vdi Storage format: VDI Capacity: 20480 MBytes Encryption: disabled UUID: 34a5709f-188c-4040-98f9-6093628c3d88 Parent UUID: base State: created Type: normal (base) Location: /home/sk/VirtualBox VMs/Ubuntu 20.04 Server/Ubuntu 20.04 Server.vdi Storage format: VDI Capacity: 20480 MBytes Encryption: disabled
Come puoi vedere, ho due macchine virtuali virtualbox.
Ora convertirò l'immagine del disco delle macchine CentOS 8 in un formato disco non elaborato usando vboxmanage
comando:
$ vboxmanage clonehd --format RAW /home/sk/VirtualBox\ VMs/CentOS\ 8\ Server/CentOS\ 8\ Server.vdi CentOS_8_Server.img
Oppure,
$ VBoxManage clonehd --format RAW /home/sk/VirtualBox\ VMs/CentOS\ 8\ Server/CentOS\ 8\ Server.vdi CentOS_8_Server.img
Risultato di esempio:
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'RAW'. UUID: afff3db8-b460-4f68-9c02-0f5d0d766c8e
L'immagine RAW è troppo grande usare. Nel mio caso, l'immagine RAW è dieci volte più grande dell'immagine Qcow2.
$ du -h CentOS_8_Server.img 21G CentOS_8_Server.img
Quindi convertiamo il formato dell'immagine RAW nel formato del disco KVM, ad esempio qcow2 compresso usando il comando qemu-img:
$ qemu-img convert -f raw CentOS_8_Server.img -O qcow2 CentOS_8_Server.qcow2
Fatto! Abbiamo convertito il formato immagine disco Virtualbox VDI nel formato immagine KVM qcow2.
Controlla le dimensioni dell'immagine Qcow2:
$ du -h CentOS_8_Server.qcow2 2.1G CentOS_8_Server.qcow2
Vedere? Qcow2 è molto più piccolo dell'immagine RAW.
3. Crea una macchina virtuale KVM dall'immagine Qcow2
Ora puoi creare una nuova istanza KVM importando il file immagine del disco virtuale dalla riga di comando o utilizzando qualsiasi applicazione grafica di gestione KVM come Virt-manager o Pozzetto console web.
Fare riferimento alla seguente guida per maggiori dettagli:
- Come creare una macchina virtuale KVM utilizzando l'immagine Qcow2
Risoluzione dei problemi
A volte potresti aver eliminato il disco virtuale senza rilasciarlo correttamente da Virtualbox media manager.
Quando provi a creare una nuova immagine RAM dallo stesso file VDI, visualizzerai un errore simile a - "hard disk with UUID already exists"
.
Per risolvere questo problema, devi rilasciare il disco virtuale da Virtualbox e riprovare a convertire l'immagine. Fare riferimento alla seguente guida per sapere come farlo:
- Risolto il problema "disco rigido con UUID già esistente" in VirtualBox
Conclusione
In questa guida, abbiamo visto come migrare le VM Virtualbox in VM KVM in Linux. Abbiamo anche esaminato come creare una nuova istanza KVM importando il file immagine Qcow2.