Erro ao criar uma imagem / VM do Linux para carregar no Azure devido ao tamanho correto incorreto

1

Eu vi um tópico semelhante sobre isso, mas fazer as etapas exatas nesse segmento não funciona para mim. Quero fazer upload de uma imagem do Linux (que é qcow2 ) após a conversão para a imagem de VHD, para o Azure.

Eu converti a imagem qcow2 para raw:

qemu-img convert -f qcow2 -O raw myimage.qcow2 myimage.img

Em seguida, minha imagem não processada é um múltiplo exato de 1M, então não preciso redimensioná-la.

ls -l myimage.img
-rw-r--r-- 1 user1 user11 2313158656 Mar  5 00:18 myimage.img

< 2313158656 é múltiplo exato de 1M >

Então eu converti o raw para VHD em uma VM Ubuntu que tem o qemu 2.6.1 instalado, usando a opção force:

qemu-img convert -f raw -o subformat=fixed,force_size -O vpc myimage.img myimage.vhd

Agora, o qemu-img parece ter adicionado 512 bytes à imagem, portanto, ainda não consigo fazer upload no Azure.

ls -l myimage.vhd
-rw-r--r-- 1 user1 user1 2313159168 Mar  5 00:39 myimage.vhd

O upload dessa VM para azure fornece este erro:

The VHD for disk 'clid01b1a17d9ec0eb1-os-1488675181694' with blob https://vmxstorage.blob.core.windows.net/vhddisks/vFPC-20170216.vhd has an unsupported virtual size of 2206.4765625 MB. The size must be a whole number in (MBs).

Como faço para criar uma VM com o tamanho correto de vários de um MB?

Obrigado Anjali

    
por Anjali 05.03.2017 / 02:10

1 resposta

0

Tente arredondar:

rawdisk="MyLinuxVM.raw"
vhddisk="MyLinuxVM.vhd"

MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$rawdisk" | \
       gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')

rounded_size=$((($size/$MB + 1)*$MB))
echo "Rounded Size = $rounded_size"

Redimensione para $ rounded_size

qemu-img resize MyLinuxVM.raw $rounded_size

E finalmente converter

qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd

Referência:

Informações para Distribuições Não Endossadas

    
por 05.03.2017 / 18:28

Tags