Gestione file immagine e monitor di QEMU

Gestione file immagine
Usando il comando:

$ qemu-img create -f [formato] /home/utente/imm.img 2000M

sarà creata un’immagine imm.img nella cartella utente di dimensioni massime 2000 MB.
Con il flag -f è possibile specificare il formato del file.
I formati disponibili sono: raw, qcow, qcow2, cow, cloop, vmdk.

  • raw: è il parametro di default, ovvero se non viene specificato -f al momento della creazione il file assumerà il formato raw. Ha il pregio della portabilità , può essere adoperato con più programmi di virtualizzazione. Usando raw viene creato un’immagine di dimensione effettive 2000 M (si può controllare con ls -l). Per sapere quanto spazio è usato dalla virtual machine basta adoperare il comando

$ qemu-img info /home/utente/imm.img

  • qcow: vecchio formato usato da QEMU per mantenere la compatibilità con versioni precedenti alla 0.9.0, supporta la compressione e la cifratura.
  • qcow2: miglior formato fra quelli in uso soprattutto se l’immagine creata servirà solo per QEMU (versione >= 0.9.0), lo spazio occupato sul disco rigido del sistema operativo ospitante avrà le dimensioni usate realmente dalla virtual machine. E’ l’unico a poter usare più VM snapshot (trattati in seguito). Supporta la compressione e la cifratura.
  • cow: vecchio formato usato da QEMU che tra l’altro non funziona su Windows.
  • cloop: è comodo per creare immagini di cd rom avviabili come knoppix o live disto.
  • vmdk: è il formato usato da Vmware 3 e 4.

Alcuni formati (qcow e qcow2) supportano la cifratura e la compressione del file immagine.

$ qemu-img create -e -f qcow /virtual/test1.img 2M

E’ stata creata un’immagine in formato qcow cifrata con l’algoritmo AES (128 Kb). Con il parametro -c si possono comprimere i settori del file immagine.

$ qemu-img create -c -f qcow2 /virtual/test1.img 2M

Saranno compressi i settori del file immagine dalla virtual machine, però se questi verranno modificati perderanno la compressione.

E’ possibile creare un disco delle differenze. Un disco delle differenze serve a mantenere un’immagine così come è, mentre le differenze dovute a cambiamenti vengono salvate in un’altro file.

$ qemu-img create -b /virtual/test1.img -f qcow /home/utente/im1.img 60M

L’immagine che non sarà cambiata è test1.img, detta immagine di base, invece im1.img sarà il disco delle differenze.

Con il comando commit è possibile trasferire le modifiche registrate in un dico delle differenze all’immagine di base. Si noti che non si specifica quale sia l’immagine di base.

$ qemu-img commit -f qcow /home/utente/im1.img 60M

Le immagini create possono essere convertite in un altro formato utilizzando il parametro convert.

$ qemu-img convert -f qcow /home/utente/im1.img -O qcow2 /home/utente/nuovaim.img

Il file im1.img con formato qcow, che è il disco delle differenze di test1.img, è convertito in un file di nome nuovaim.img di formato qcow2. Si può convertire l’immagine sovrascrivendola.

$ qemu-img convert -f qcow /home/utente/im1.img -O qcow2 /home/utente/im1.img

Per avere informazioni su un disco virtuale è possibile digitare:

$ qemu-img info /home/utente/test1.img

image: test1.img
file format: qcow2
virtual size: 2.0M (2097152 bytes)
disk size: 16K
cluster_size: 4096

L’immagine test1.img ha formato qcow2, può avere occupare al massima di 2 MB, lo spazio attualmente adoperato è di 16 KB e la dimensione dei cluster è di 4096 byte.

$ qemu-img info /virtual/simpmep.img

image: simpmep.img
file format: qcow2
virtual size: 2.9G (3145728000 bytes)
disk size: 2.6G
cluster_size: 4096
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 primoSS 58M 2007-05-12 11:29:47 00:04:55.180

L’immagine qui creata ha uno VM snapshot con TAG primoSS. E’ possibile ottenere informazioni sui VM snapshot salvati.

Il monitor di QEMU

Nel precedente articolo si è visto come si può usare una virtual machine senza effettuare modifiche che cambino l’hard disc virtuale aggiungendo il parametro -snapshot all’avvio di QEMU.

$ qemu -snapshot /home/user/imm.img

Se si ha bisogno di modificare l’immagine è possibile, attraverso il monitor, “forzare�? la scrittura sul file.

(qemu) commit all

Con questo comando vengono salvate tutte le modifiche fatte a tutti i device virtuali. Per salvare i cambiamenti di solo un device (per esempio il disco rigido):

(qemu) commit hda

Se si dovesse verificare un sovraccarico della CPU virtuale o mancanza temporanea di risorse è possibile fermare l’emulazione della virtual machine:

(qemu) stop

e poi riprendere l’esecuzione:

(qemu) cont

Il comando stop è utile quando si vuole accedere a parti della memoria riservati alla virtual machine (fare un dump della memoria fisica o virtuale…)

Gestione dei VM snapshot:

I VM snapshot servono per creare delle immagini della virtual machine che si possono ripristinare al momento del bisogno. Per creare uno snapshot basta accedere al monitor della macchina virtuale e digitare:

(qemu) savevm primoSS

Così è stato creato uno VM snapshot con tag primoSS. Con il prossimo comando si possono visualizzare informazioni su tutti gli snapshot presenti.

(qemu) info snapshot

ID TAG VM SIZE DATE VM CLOCK
1 primoSS 61M 2007-05-11 21:09 00:03:10.04

L’output generato dal comando indica che è presente un solo VM snapshot con ID 1 e con TAG primoSS. La dimensione dello snapshot è di 61 MB che sono contenuti nel file immagine in formato qcow2. Lo snapshot è stato fatto l’11 maggio 2007 alle 21 e 09. La virtual machine è avviata da tre minuti, dieci secondi e quattro centesimi.
Come si può notare lo snapshot è stato creato all’interno del file immagine dell’HD virtuale perciò bisogna far attenzione a non riempire tutto lo spazio disponibile che abbiamo allocato al momento della creazione dell’immagine del mini-disc.

Per rimuovere un VM snapshot, dove primoSS è il TAG di quello che si intende rimuovere:

(qemu) delvm primoSS

E’ possibile rimuovere un VM snapshot anche indicando l’ID, in questo caso sarà rimosso quello di numero 1:

(qemu) delvm 1

 

3 risposte

  1. max ha detto:

    vorrei iscrivermi al sito per risolvere problemi di virtuale

  2. Piergiulio ha detto:

    Ciao, ho creato un virtual PC IBM per MS-DOS che funziona benissimo. Ora però ho dei file che ho creato che vorrei esportare, non so come fare. Più precisamente uso Q per Macintosh e i file sono dei vecchi codici Quickbasic che vorrei esportare. E’ possibile in qualche modo? Grazie infinite, Piergiulio

  1. 21 Gennaio 2008

    […] (descrizione immagini da valent-blog.eu) […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *