Тупиковый путь конвертации vma в VDI

Тут я описал для истории тупиковый путь конвертации vma в VDI. Рабочий вариант - скачать образы разделов и пересоздать диск.

Итак, тут описан путь, которым я пошел после уменьшения размера файловой системы, в процессе конвертации виртуальной машины из Proxmox в VDI. Не решенная проблема - наличие утилиты vma, которая позволит переконвертировать данные виртуальной машины из одного формата в другой.

Уменьшение размера диска

Теперь нужно шринкать диск. Машинка должна быть выключена, команды ниже - в консоли Proxmox:

lvdisplay | grep 146 -A20
...
LV Status              NOT available
...

NOT available - поэтому: lvchange -ay /dev/vmdata/vm-146-disk-0 и смотрим информацию: qemu-img info /dev/vmdata/vm-146-disk-0

Затем шринкаем на минус 200 GiB.

Внимание! Смотрим таблицу разделов, так как обрезание происходит с конца, и важно не отрезать лишнее, а также есть разница в Гигабайта и Гигибайтах.
lvresize -L-200G /dev/vmdata/vm-146-disk-0

Эта операция проходит очень быстро. Получился диск 67G.

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

В Proxmox диск по-прежнему 267 Гб, наверное это закешировалось:

Также машинка перестала выключаться из проксмокса по непонятным мне причинам, может быть удалил лишнее при чистке. Помогает sudo shutdown -h 0 на самой машинке.

Осталось еще 24 Гб в хвосте (хотя по логике, 239 - 200 = 39 <= вот они, Гигибайты).

Поэтому я еще раз шринканул на 20 GiB. Вообще, разбитие диска неудачное, раздел 17 Гб (раньше там был своп) не дает освободить еще 17 Гб дополнительно, ну ладно, это можно поправить потом. Вот что получилось:

А бекап всей машинки весит 139 GiB => 19 GiB

Почувствуйте разницу.

lzo => vma => vdi

Итак, на Proxmox кончилось место, поэтому этой командой воспользоваться было нельзя:

qemu-img convert -O vdi /dev/vmdata/vm-146-disk-0 vm-146.vdi

А на подрубленой ftp-шаре бекапа эта команда не будет работать.

Тогда я скачал lzo-образ из бекапа на свою машинку (20 Гб), который распаковал в 45 Гб образ (потому что там своп, от которого я не избавился), получился файл в формате vma, это - формат проксмокса. Виртуалбокс его не понимает.

VBoxManage конвертировать из vma не умеет.

Умеет проксмокская утилита vma, но ее просто взять и поставить нельзя - я ее нигде не нашел в дистрах Debian (есть идея достать из ISO образа deb-пакеты и поставить их на свою систему и не ставить для этого Proxmox).

Поэтому я начал ставить в виртуалбокс проксмокс, чтобы внутри него уже воспользоваться этой утилитой. Но у меня не получилось:

Чек-лист:

  • включить VT-x/AMD-v сначала в BIOS, потом в настройках VBox на вкладке Ускорение
  • поставить ограничение памяти - не более 3 Гб, 1 CPU (пишут в интернетах)

Но все равно, поставить не удалось.

Вот примерный план действий, который должен быть дальше (но я до него не дошел)

  1. скачать lzo образ 20 Гб
  2. распаковать образ, я использовал встроенный в Ubuntu менеджер архивов, получится 48 Гб, lzo файл можно удалить
  3. скачать образ проксмокса http://download.proxmox.com/iso/proxmox-ve_6.2-1.iso
  4. создать виртуалку, указав VT-x/AMD-V, операционная система - Debian x64 (настройка такая, а не ОС)
  5. установить проксмокс, это в принципе возможно https://pve.proxmox.com/wiki/Proxmox_VE_inside_VirtualBox
  6. подрубить как-то диск с файлом образа
  7. выполнить команду vma vzdump-qemu-146-2020_05_15-17_44_06.vma -v img-files, это создаст каталог img-files и распакует туда конфиг и raw-файл
  8. теперь vma файл можно также удалить
  9. выполнить конвертацию raw-файла в vdi формат: qemu-img convert -f raw -O vdi полученный-raw-файл vm-146.vdi
  10. проверить полученный vdi файл, qemu-img может долго работать а на выходе получиться фигня, и об этом он не скажет
  11. как проверить - нужно подмонтировать vdi файл к любой виртуальной машинке и посмотреть, например через gparted
Печать/экспорт