Назад | Перейти на главную страницу

Ошибка создания образа Linux или виртуальной машины для загрузки в Azure из-за неправильного размера.

Я видел похожую ветку по этому поводу, но выполнение точных шагов в этой ветке у меня не работает. Я хочу загрузить образ Linux (это qcow2) после преобразования в образ VHD в Azure.

Я преобразовал qcow2 изображение в необработанное:

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

Затем мое необработанное изображение является точным кратным 1M, поэтому мне не нужно изменять его размер.

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

<2313158656 является точным кратным 1M>

Затем я преобразовал необработанный файл в VHD на виртуальной машине Ubuntu с установленным qemu 2.6.1, используя опцию force:

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

Сейчас qemu-img кажется, что к изображению добавлено 512 байт, поэтому я все еще не могу загрузить его в Azure.

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

При загрузке этой виртуальной машины в Azure возникает такая ошибка:

VHD для диска clid01b1a17d9ec0eb1-os-1488675181694 с blob https://vmxstorage.blob.core.windows.net/vhddisks/vFPC-20170216.vhd имеет неподдерживаемый виртуальный размер 2206,4765625 МБ. Размер должен быть целым числом в (МБ).

Как создать виртуальную машину с правильным размером, кратным МБ?

Спасибо Анджали

Вместо этого попробуйте округлить:

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"

Изменить размер до $ rounded_size

qemu-img resize MyLinuxVM.raw $rounded_size

И наконец преобразовать

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

Ссылка:

Информация о не одобренных дистрибутивах