5.2 Конвертация образов

Возможность импорта виртуальных машин на платформу «TIONIX» реализована поддержкой образов, загружаемых в различных форматах:

  • AKI - образ Amazon Kernel;
  • AMI - образ Amazon Machine;
  • ARI - образ Amazon Ramdisk;
  • Docker - образ контейнера Docker;
  • ISO - образ оптического диска;
  • OVA - Open Virtual Appliance;
  • QCOW2- образ QEMU;
  • RAW - диск неструктурируемого формата RAW;
  • VDI - образ виртуального диска;
  • VHD - виртуальный жесткий диск;
  • VMDK - диск виртуальной машины;
  • PLOOP - петлевой диск.

При необходимости использования определенного формата (например, RAW для некоторых бэкендов) можно воспользоваться конвертацией образа. Конвертация может быть выполнена с помощью командной строки, например – в управляющем узле (платформы OpenStack).

Параметры конвертации образов диска виртуальной машины приведены в таблице (Таблица 5.1).

Таблица 5.1 Конвертация образов
Формат образа Аргумент для qemu-img
QCOW2 (KVM, Xen) qcow2
QED (KVM) qed
RAW raw
VDI (VirtualBox) vdi
VHD (Hyper-V) vpc
VMDK (VMware) vmdk

Команда qemu-img convert может выполнять преобразование между несколькими форматами, включая qcow2, qed, raw, vdi, vhd, и vmdk.

Примеры

  1. Преобразование файла необработанного изображения с именем image.img в файл формата QCOW2:

    qemu-img convert -f raw -O qcow2 image.img image.qcow2
    
  2. Преобразование файла образа vmdk в необработанный файл образа:

    qemu-img convert -f vmdk -O raw image.vmdk image.img
    
  3. Преобразование файла образа vmdk в файл образа формата QCOW2:

    $ qemu-img convert -f vmdk -O qcow2 image.vmdk image.qcow2
    

Примечание.

При преобразовании файла образа, содержащего гостевую ОС Windows, следует убедиться, что в ней установлен драйвер VirtIO. В противном случае, будет выведен при запуске образа «синий экран».

Другой вариант — назначить свойство образа, указывающее на использование устаревшей шины обмена (IDE), но это значительно снизит производительность виртуальной машины:

openstack image set --property hw_disk_bus='ide' image_name_or_id

Необходимо убедиться, что гостевые дополнения исходной инфраструктуры среды виртуализации VMware или Hyper-V удалены, прежде чем будет выполнен окончательный перенос на платформу TIONIX (cм. Приложения).

5.2.1 Использование VBoxManage

Если образ VDI машины был создан с помощью VirtualBox, то его преобразование в необработанный формат (RAW) возможно с помощью командной строки – инструмента VBoxManage, поставляемого в составе ПО VirtualBox.

Пример создания необработанного образа в текущем каталоге из образа VirtualBox VDI.~/VirtualBox VMs/:

VBoxManage clonehd ~/VirtualBox\ VMs/image.vdi image.img --format raw

5.2.2 Конвертация образа диска для форматов VMDK и VHDX

По завершении подготовительного этапа на выбранном (USB-) носителе имеются выгруженные из среды виртуализации (VMware) файлы, хранящие образ(ы) ВМ, предназначенной для миграции. Файл сохранен в формате VMDK.

Перенос осуществляется в среду виртуализации libvirt/KVM (ОП TIONIX).

Примечание.

В случае, если миграция осуществляется из Hyper-V (виртуализация под управлением Windows Server), вместо формата VMDK будет подразумеваться формат VHDX.

Исходный образ может быть сконвертирован из формата VMDK/VHDX в формат raw или qcow2. Данные форматы распознаются гипервизором KVM, используемым в основе подсистемы виртуализации ОП TIONIX.

При конвертации используется утилита qemu-img, запускаемая с указанием команды convert. Данная утилита доступна только, если в ОС хоста виртуализации установлен менеджер виртуальных машин (virt-manager).

Если для конвертации использована промежуточная среда – ОС с локальным гипервизором (АРМ администратора), то может потребоваться установка ПО виртуализации. Например, в ОС Ubuntu (16.04 или выше) для установки потребуется выполнить команду:

sudo apt install libvirt0 libvirt-bin qemu-kvm virt-manager

Полученный целевой образ, оптимизированный (qcow2-) или неоптимизированный (raw-), подлежит импорту в среду виртуализации (libvirt). Для импорта может использоваться непосредственно virt-manager, функционирующий в АРМ администратора и подключенный к действующему гипервизору (KVM), локальному либо удаленному.

5.2.2.1 Конвертация исходного образа в целевой

В командной строке консоли АРМ администратора выполнить команду по конвертации образа из исходного формата в целевой образ (RAW-формата):

# qemu-img convert -f <исходный_формат> -O raw <имя_исходного_образа>-flat.vmdk <имя_целевого_образа>_raw.img

где:

формат_образа – VMDK (VMware) или VHDX (Hyper-V).

В результате в рабочей директории должен появиться файл образа диска с расширением .img.

5.2.2.2 Оптимизация целевого образа

Оптимизация – уменьшение размера хранимого файла образа – должна выполняться до того, как в среде (целевой) виртуализации будет создана ВМ и импортирован образ:

# qemu-img convert <исходный_образ>_raw.img -O qcow2 -c  <целевой_образ>_qcow2.img

Уточнить информацию о целевых образах:

$ qemu-img info <целевой_образ>_raw.img
$ qemu-img info <целевой_образ>_qcow2.img

5.2.2.3 Импорт целевого образа в среду виртуализации

После настройки подключения к гипервизору потребуется выполнить операцию создания виртуальной машины (см. описание ниже – Создание ВМ). В качестве расширения файла (целевого) образа может использоваться как суффикс .img, так и .qcow2.

При интеграции в облачную инфраструктуру, не находящуюся в экcплуатации, может быть использована непосредственно среда функционирования контроллера (серверный узел должен быть доступен через SSH-порт). Также может быть использована консоль администратора (TIONIX Dashboard).

Внимание.

Выполнение миграции ОС Windows имеет свои особенности в зависимости от используемой версии (гостевой ОС) .

ВАЖНО!

Если сетевой интерфейс не отключен, то после первого входа в Рабочий стол ОС Windows может начать автоматически загружать и устанавливать обновления, что нежелательно для процесса установки драйверов поддержки VirtIO.

5.2.3 Регенерация initramfs в RHEL-подобных ОС после конвертации образа

Часто, в результате конвертации VMDK и VDI образов RHEL-подобных операционных систем в QCOW2 или RAW форматы, образ операционной системы перестает загружаться на этапе инициализации системы после загрузки ядра и initramfs. Это связано с тем, что после конвертации у разделов диска меняются параметры UUID и initramfs не может выполнить загрузку системы.

Решить эту проблему можно с помощью набора инструментов для работы с образами ВМ – libguestfs (после установки соответствующего пакета).

Примечание.

Initramfs (Initial ram file system) – образ файловой системы, загружаемый в оперативную память вместе с ядром. Основные задачи этого образа: монтирование реального корня файловой системы и запуск процесса init лежащего на нем.

5.2.3.1 Установка libguestfs-tools

Для установки набора инструментов управления образом гостевой ОС [1] необходимо выполнить следующую команду:

#Для Fedora/RHEL/CentOS
yum install libguestfs-tools

#Для Debian/Ubuntu
apt install libguestfs-tools

Основная утилита управления – guestfish – интерактивная оболочка, подключенной к файловой системе образа (виртуальной машины). Для проверки свободного места в файловой системе образа следует использовать утилиту virt-df.

5.2.3.2 Обновление initramfs

Для корректной генерации initramfs прежде всего необходимо определить версию ядра, которая используется в образе (Linux). Определить версию ядра можно с помощью утилиты virt-ls [2].

Выполните команду:

virt-ls -l -a CentOS-7.5-converted.qcow2 /boot/

Данная команда выведет список файлов, в том числе, файлы ядра, которые находятся в каталоге /boot/.

Пример вывода:

total 145800
dr-xr-xr-x. 5 root root 4096 May 31 21:02 .
dr-xr-xr-x. 25 root root 4096 May 31 21:02 ..
-rwxr-xr-x. 1 root root 6734016 Dec 6 2019 vmlinuz-3.10.0-1062.9.1.el7.x86_64
-rwxr-xr-x. 1 root root 5877760 Aug 22 2017 vmlinuz-3.10.0-693.el7.x86_64

Для дальнейшей работы необходимо обратить внимание на файлы vmlinuz-*, содержащие образ ядра Linux. Определите наиболее свежую версию ядра системы. В приведенном выше примере система работает на ядре версии

3.10.0-1062.9.1.el7.x86_64.

Далее, с помощью утилиты virt-customize, появляется возможность выполнения команд внутри образа, без процедуры загрузки с Rescue-образа и выполнения chroot, как это традиционно практикуется на ПК.

Выполните команду:

virt-customize -a disk.qcow2 \\
--run-command 'dracut -f /boot/initramfs-3.10.0-1062.9.1.el7.x86_64.img 3.10.0-1062.9.1.el7.x86_64'

В качестве значения аргумента –run-command передается команда в формате

dracut -f /boot/initramfs-<ВЕРСИЯ_ЯДРА>.img <ВЕРСИЯ_ЯДРА>

Дождитесь завершения выполнения команды – это может занять некоторое время; по окончании процесса можно проверять корректность выполнения проделанных операций и работоспособность гостевой ОС (образа ВМ).

5.2.4 Пример конвертации исходного образа (OVA)

Ниже показан пример конверации образа (жёсткого диска) виртуальной машины из формата OVA [3] в формат QCOW2 и запуска ВМ с оптимизированного образа, поддерживаемого ОП TIONIX.

Убедитесь, что свободного места на локальном носителе достаточно для загрузки архива исходного образа (OVA). Выполните скачивание архивного образа, с помощью команды:

wget http://<доменное_имя_или_IP>/<путь_к_ресурсу>/<название_исходного_образа>.ova

Для просмотра листинга содержимого архивного файла используйте утилиту tar:

tar -tf название_исходного_образа.ova

---.ovf
---.vmdk

Для распаковки OVA-файла выполните команду:

tar -xvf название_исходного_образа.ova

file название_исходного_образа*

---.vmdk: VMware4 disk image
---.ovf: XML document text

Чтобы оптимизировать полученный формат (VMDK), используйте сторонние программные средства. Например, инструмент дискового менеджера VMware [4]:

./vmware-vdiskmanager -r ---.vmdk -t 0 ---new.vmdk

Используя формат VMDK, сконвертируйте образ в формат qcow2 с помощью утилиты qemu-img:

qemu-img convert ---new.vmdk -O qcow2 new.qcow2

Примечание.

Для просмотра всех поддерживаемых форматов выполните команду: qemu-img -h

Сноски

[1]https://russianblogs.com/article/97521372033/
[2]https://libguestfs.org/virt-ls.1.html
[3]https://filext.com/file-extension/OVA, https://virtualboxpc.ru/kak-rabotat-s-virtualbox-ova/
[4]https://www.vmgu.ru/articles/vmware-disk-tools