Ошибка при создании образа Linux / VM для загрузки в 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 [1195242pported] имеет виртуальный размер 2206,4765625 МБ. Размер должен быть целым числом в (МБ). Анджали

1
задан 5 March 2017 в 14:53
1 ответ

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

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

Справка:

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

0
ответ дан 4 December 2019 в 05:07

Теги

Похожие вопросы