From vmdk to qcow and vdi

zeriEccoci al secondo post riguardante la conversione dei formati dei dischi virtuali utilizzati da alcuni dei virtualizzatori più utilizzati al momento, mi riferisco a VMware, VirtualBox e QEMU.

Questa volta tratteremo la conversione dal formato vmdk (utilizzato da VMware e supportato da QEMU e VirtualBox) al formato qcow (utilizzato principalmente da QEMU) e al formato vdi (utilizzato da VirtualBox).

Per i motivi già spiegati nel post “from-qcow-to-vmdk-and-vdi” anche questa volta negli esempi che seguiranno è stato utilizzato come sistema operativo linux sia dal guest che dall’host.

NOTA: se siete interessati alla conversione da vdi a qcow date un’occhiata a questo post del buon Noko.

Nei precedenti episodi…

Prima di iniziare un breve riassunto su quanto visto nel precedente post.

  • Ho mostrato come utilizzare qemu-img per poter visualizzare delle informazioni riguardanti il file immagine (parametro info) e come poter utilizzare tale comando col parametro convert per poter convertire alcuni formati direttamente dall’uno all’altro senza passaggi intermedi.
  • Ho parlato di come è possibile utilizzare il comando VBoxManage per poter mostrare delle informazioni riguardanti il file immagine (parametro showvdiinfo), come poter passare da una immagine in formato raw ad un’immagine in formato vdi (parametro convertdd) e successivamente compattare l’immagine per poter ottimizzare lo spazio occupato dal suddetto file (modifyvdi in abbinamento a compat).
  • Ho anche parlato del perché ho scelto di proporre esempi in cui linux è utilizzato sia dal guest che dall’host, a riguardo però mi sento di aggiungere che pur essendo infinitamente più facile migrare un guest linux da un formato all’altro ciò non è completamente esente da problemi in quanto, presentando diversi virtualizzatori differente hadware virtuale ai guest, ci sarà comunque qualche piccolo problemino riguardante principalmente la configurazione della scheda video e della rete, nulla che un utente linux mediamente skillato non possa risolvere in meno di 5 min (misura comunque pessimistica).

Se volete approfondire e/o rivedere le tematiche già affrontate vi rimando al post “from-qcow-to-vmdk-and-vdi“, vi ricordo che anche se in alcuni casi ho tagliato l’output del comando un esempio è sempre presente nel post citato precedentemente e che essendo operazioni su file tipicamente di grandi dimensioni sono operazioni lunghe.

From vmdk to qcow

Sostanzialmente la conversione dal formato vmdk al formato qcow è ottenibile utilizzando qemu-img col parametro convert, nulla di nuovo quindi rispetto a quanto già visto per l’esempio duale affrontato la settimana scorsa.

paolomargara@mrcrow:~$ qemu-img convert lennybox.vmdk -O qcow lennybox.qcow

(VMDK) image open: flags=0x2 filename=lennybox.vmdk

Questa volta però vorrei dire due parole riguardo la conversione di un’immagine vmdk “multipart”, col beneficio del dubbio perchè è un’operazione che non mi è mai capitato di dover effettuare. Eccone un esempio:

paolomargara@mrcrow:~$ qemu-img convert -f vmdk Debian-s001.vmdk Debian-s002.vmdk Debian-s003.vmdk Debian-s004.vmdk Debian-s005.vmdk -O qcow debian.qcow

From vmdk to vdi

Dal post gemello della settimana scorsa abbiamo visto che quando il formato target è vdi sostanzialmente l’operazione consta di:

  • Convertire l’immagine originale al formato raw
  • Convertire l’immagine raw (praticamente un dd) al formato vdi
  • Compattare il formato vdi

In più rispetto alla volta precedente mi sento di sottolineare che nell’operazione di conversione dal formato raw al formato vdi e nella successiva di “compattazione” il path è da specificare assoluto, inoltre se nell’operazione di “compattazione” successiva avete cura di registrare l’immagine prima di avviare l’operazione VirtualBox vi sarà riconoscente.

paolomargara@mrcrow:~$ qemu-img convert -f vmdk lennybox.vmdk -O raw lennybox.raw
paolomargara@mrcrow:~$ VBoxManage convertdd lennybox.raw lennybox.vdi
paolomargara@mrcrow:~$ VBoxManage registerimage disk ~/lennybox.vdi
paolomargara@mrcrow:~$ VBoxManage modifyvdi ~/lennybox.vdi compact

Conclusioni

In questo post ed in quello gemello abbiamo visto come è possibile migrare un’immagine virtuale dai formati vmdk e qcow ai formati qcow, vmdk e vdi.

Non ho volutamente affrontato ciò che accade una volta dopo aver avviato l’immagine post-conversione, vale a dire i problemi che si possono avere con hal, acpi e apic piuttosto con scheda video e scheda di rete. Questi problemi variano al variare del sistema operativo guest, al variare del virtualizzatore di partenza e del virtualizzatore target ed allo stesso modo variano le possibili soluzioni, sarebbe impossibile affrontarli in maniera esaustiva in un singolo post.

Se avete interesse a vedere un esempio con uno specifico sistema operativo oppure se avete dubbi, domande, consigli e/o insulti scrivete pure un commento! Chissà che possiate trovare la soluzione ai vostri problemi nei prossimi post…

Related post:

2 Comments

  1. Noko says:

    Io ho provato in passato a convertire dei .vmdk multipart in .qcow (su linux ppc funziona solo qemu, NdR) usando qemu-img ed ottenendo solo una sequela di errori di I/O.
    Questo significa che non ho avuto problemi di incompatibilità (era un’immagine Windows, quindi facile che ce ne fossero) perché non sono nemmeno arrivato a qel punto…

    Magari ci riprovo: il tempo passa e i bug crepano.

  2. MRG says:

    ??? ma quegli errori di I/O li hai avuti durante la conversione o avviando l’immagine convertita? Potresti essere un pò più descrittivo?