Home > Linux, Server, Ubuntu, Virtualizzazione > Convertire .xva Xenserver Virtual Machine in una VM xen .img e avviare in KVM

Convertire .xva Xenserver Virtual Machine in una VM xen .img e avviare in KVM

kvmObiettivo. Convertire macchine  virtuali Windows XP e Windows 7 formato proprietario .xva,  Xenserver Citrix, in Virtual Machine xen .img ( plain xen ) e avviare la VM in KVM oppure in QEMU.  La conversione del formato .xva  in .img sarà realizzata in modo manuale è si basa su uno script di Carsten in Convert Citrix XenServer images to plain Xen – Tutorials / Howtos – Sysconfig’s Wiki. La procedura è stata usata su .xva generate da xenserver 5.6 e 6.0 con .xva anche da 120 GB e con 5 dischi.

Il formato .xva usato da XenServer è un po’ particolare per non dire stravagante. Per ottenere il formato nativo di xen è necessario decomprimere con tar i files .xva che sono archivi compressi.  La decompressione genera una directory Ref:x che conterrà blocchi da 1 MB.  I blocchi dovranno essere concatenati e gli spazi riempiti.

Decomprimere la VM .xva

Nella fase di decompressione verrà creata un dir del tipo Ref:x

tar xf VM-nome.xva   ## es. tar xf WindowsXP.xva 
...
tar: Ref:18/00008193: implausibly old time stamp 1970-01-01 01:00:00
tar: Ref:18/00008193.checksum: implausibly old time stamp 1970-01-01 01:00:00
... 

Prima di entrare nel directory generata e unire i blocchi. Creare lo script VMConvert.sh utilizzando il codice
di seguito

script VMConvert.sh

#!/bin/bash

dd if=/dev/zero of=blank bs=1024 count=1k
test -f $1.img && rm -f $1.img
touch $1.img

max=`ls ???????? | sort | tail -n1`

for i in `seq 0 $max`; do
        fn=`printf "%08d" $i`
        echo -n "$fn of $max"
        if [ -f "$fn" ]; then
                echo " - appending chunk"
                cat $fn >> $1.img
        else
                echo " - filling blank"
                cat blank >> $1.img
        fi
done

rm -f blank

echo "Done."

Rendiamo eseguibile lo script e passiamo nella dir Ref:x

chmod a+x VMConvert.sh 
cd Ref:x             ## es. cd Ref:18

Creare la VM xen standard

avviare l’operazione di concatenazione che genererà il file .img e la VM xen plain

sudo /percorso/VMconvert.sh  WindowsXP

L’operazione richiederà del tempo alla fine avremo l’immagine WindowsXP.img

Controllo dell’immagine xen .img

Il file .img potrà essere controllato effettuando il mount dell’immagine stessa. Per effettuare il mount è necessario determinare prima l’offset utilizzando  fdisk o parted. Con fdisk

/media/VM/QEMU/libvirt/images$ fdisk -l WindowsXP.img 

Disk WindowsXP.img: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc4a4c4a4

        Device Boot      Start         End      Blocks   Id  System
WindowsXP.img1   *          63    50315579    25157758+   7  HPFS/NTFS/exFAT

Start a 63 -> Sector size 512 -> offset= 63*512=32256B

Determinato l’offset (32256) possiamo montare l’immagine con:

sudo mkdir /mnt/source
mount -o loop,offset=32256B WindowsXP.img /mnt/source

Avviare la VM Windows in KVM

Per avviare la VM WindowsXp che abbiamo convertito da .xva a .img  nell’infrastruttura di virtualizzazione, propria del kernel Linux, KVM spostiamo l’immagine nella dir con le nostre macchine virtuali per kvm.
Quindi Aprire virt-manager e utilizzare l’opzione import existing disk image.

virt -manager KVM import disk

virt -manager KVM import disk

Quindi [Forward]. Selezionare le desiderate e opportune opzioni e in poco tempo avremo la macchina Virutal Running anche in KVM.

virt-manager-WindowXP

Per un rapido test la macchina virtuale poteva essere avviata anche con

kvm -m 1024 -boot d WindowsXP.img

Risorse:

Advertisements
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: