
У меня установлена proxmox. Я хочу импортировать vmdk в lvm, и процедура следующая:
$ qemu-img convert -p -f vmdk "IE11 - Win7-disk1.vmdk" -O raw "IE11 - Win7-disk1.raw"
а потом:
$ dd if="IE11 - Win7-disk1.raw" bs=1M|pv| dd of=/dev/mapper/pve-vm--103--disk--1
И это прекрасно работает.
Но на виртуальном диске объемом 127 ГБ находится 8,8 ГБ данных:
$ qemu-img info "IE11 - Win7-disk1.raw"
image: IE11 - Win7-disk1.raw
file format: raw
virtual size: 127G (136365211648 bytes)
disk size: 8.8G
А когда я «dd» копирую необработанный диск, я вижу скопированные 127 ГБ, хотя из них важны только 8,8 ГБ. И это невероятно медленно.
Есть ли способ лучше?
решение1
Более быстрый способ — не использоватьdd
pv < "IE11 - Win7-disk1.raw" > /dev/mapper/pve-vm--103--disk--1
Самый быстрый способ — использовать cat
напрямую
cat "IE11 - Win7-disk1.raw" > /dev/mapper/pve-vm--103--disk--1
Ваш вызов dd
использовал блоки по 512 байт, что привело бы к двум системным вызовам чтения на КБ или ~2000 на МБ. С cat
вы, вероятно, уйдете с одним на МБ.
решение2
Я переходил с XenServer на Proxmox и нашел это решение.
Сначала получите файл qcow2, если у вас его еще нет (вам может потребоваться использовать другую команду, если ваш исходный файл не является образом необработанного диска; важно получить файл qcow2 в качестве результата)
qemu-img convert rawimage.img -O qcow2 thinimage.qcow2
Конвертировать образ qcow2 в rawразреженный файл:
qemu-img convert -p -f qcow2 -O raw -t none -T none thinimage.qcow2 rawsparce.raw
Запишите разреженный файл на тонкий логический раздел виртуальной машины:
dd if=rawsparce.raw of=/dev/mapper/pve-vm--100--disk--1 bs=8M conv=sparse status=progress
решение3
Формат RAW поддерживает только предварительное распределение, поэтому при конвертации в qemu-img
.
Попробуйте преобразовать vmdk
файл изображения в qcow2
формат, который может работать без предварительного выделения памяти.