Миграция с помощью «Virt-V2V»

Описание

Данная статья описывает один из возможных способов миграции виртуальных машин пользователя в инфраструктуру проекта SIM-Cloud. В данном примере будет описан алгоритм действий для выполнения миграции виртуальных серверов с гипервизора ESXi (Version: 6.7.0 (Build 8169922)). Статья описывает имплементацию драйверов «virtio» в OS Windows с помощью специализированного программного обеспечения «virt-v2v», более детальней с данным приложением можно ознакомиться на сайте вендора - Red Hat V2V GUIDE

Для того чтоб самостоятельно выполнить миграцию гостевой машины пользователю доступно два варианта:

  1. Воспользоваться подготовленным образом системы, который находится в списке доступных образов SIM-Cloud.
  2. Установить свой экземпляр системы для конвертации и последующего импорта дисков в проект сервиса SIM-Cloud.

Использование данных материалов требует наличие навыков системного администрирования OS семейства Linux и Windows. Кроме того, материалы статьи рассчитаны на пользователей, которые владеют пониманием основных возможностей интерфейса управления сервиса SIM-Cloud - Dashboard, а также ознакомились с тематическими статьями:

Базовая информация

Миграция виртуального сервера в SIM-Cloud подразумевает необходимость копирования системного диска (на котором установлена операционная система - OS), а также дополнительных подключенных дисков к гостевой машине с имеющейся системы виртуализации в облачный проект клиента.

Обязательные условия для копирования дисков в Облако: - Удаление c гостевой системы приложение VMware Tools. - Смена формата образа диска на «raw». - Установка virtio драйверов для обеспечения возможности запуска инстанса на KVM.

NetKVM Virtio network driver
Viostor Virtio block driver
Vioscsi Virtio Small Computer System Interface (SCSI) driver
Vioser Virtio serial driver
Balloon Virtio memory balloon driver

Более детальней с используемыми драйверами Virtio можно ознакомиться на сайте разработчика.

После того как диски будут подготовлены, их необходимо скопировать в проект «SIM-Cloud». Для этой операции будет использоваться команды Linux OS: «dd» или «cat», в зависимости от задачи. При этом, данные подготовленного диска будут «побайтно» копироваться на дисковое устройство - том, который будет подключен к уже существующему инстансу в Облаке.

Миграция образа системного диска и образа диска с данными отличается.

Миграция системного диска

Для системного диска необходимо выполнить:

  • удаление VMware Tools;
  • убедиться в наличии свободного дискового пространства (для установки драйверов);
  • конвертацию диска в формат raw;
  • установку дополнительных драйверов virtio;
  • копирование готового образа в проект сервиса SIM-Cloud.

Миграция диска с данными

Для подготовки диска с данными необходимо выполнить:

  • конвертацию диска в формат «raw»;
  • копирование готового образа в проект сервиса SIM-Cloud.

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

Миграция с помощью предустановленного «SIM-V2V»-образа

Использование подготовленного образа

Рассмотрим вариант использования уже подготовленного образа.

Команда специалистов SIM-Cloud подготовила образ системы, который позволяет оперативно приступить к выполнению работ по миграции виртуального сервера в проект SIM-Cloud.

Образ системы «SIM-V2V» реализован на базе дистрибутива GNU Linux Centos 7.4 [EN], который также доступен в списке общедоступных Образов SIM-Cloud.

Параметры доступа к OS: User: root Password: sim-v2v

Примечание

В рамках организации безопасности, после выполнения первой успешной авторизации, система предложит выполнить обязательную замену пароля.

Запуск инстанса «SIM-V2V»

  1. Запуск инстанса на базе подготовленного образа «SIM-V2V».

Процесс создания инстанса описан в тематической статье Быстрый старт.

Примечание

Рекомендации: при создании инстанса, рекомендуем использовать тип инстанса, который по своим вычислительным характеристикам не меньше чем тип «SIM-A1» (2 vCPU / 4 GB RAM), при этом объем хранилища под системный диск - 10 GB (gs1).

Подключение дополнительного диска

  1. Подключение дополнительного диска к инстансу, который будет использоваться для хранения виртуальных дисков гостевых машин, а также уже сконвертированных, подготовленных дисков.

После разворачивания инстанса под управлением OS «CentOS Linux 7», к данной виртуальной машине необходимо подключить дополнительный диск на базе хранилища gs1.

Объем дополнительного диска следует выбрать из расчета фактического полного объема образа диска, который необходимо мигрировать плюс дополнительное дисковое пространство равное не менее чем 150% от объема образа. К примеру, если образ диска 200GB, то диск, который нужно подключить к инстансу должен быть примерно 500GB (200GB + 300GB). Дополнительное пространство необходимо для хранения подготовленного сконвертированного образа, который в дальнейшем будет передаваться на отдельное блочное устройство, с которого будет создаваться инстанс. Процесс подключение дополнительного диска к инстансу, описан в нашей тематической статье.

Подключение диска в OS инстанса

  1. Подключение нового дополнительного диска в OS инстанса.

Пример процесса подключения дополнительного диска в OS Linux описан в тематической статье.

Подключение к VMWare и копирование дисков гостевой машины

  1. Подключение инстанса к гипервизору VMWare, для копирования дисков гостевой машины.

На данном этапе выполняется подключение к серверу esxi, копирование дисков виртуальной машины и конвертация скопированных дисков в «raw» формат. По умолчанию сервис v2v копирует все подключенные к виртуальной машине диски. Предварительно необходимо перейти в директорию, в которую будут копироваться диски.

cd /data

Примечание

Перед началом копирования образа с ESXi необходимо:

  1. Удалить из ОС гостевой машины приложение VMware Tools. Если в вашей системе данный компонент отсутствует, просто пропустите этот шаг. Для удаления приложения перейдите по пути «Пуск» → «Панель управления» → «Программы и компоненты», выберите из списка VMware Tools и нажмите «Удалить».
  2. После того как утилита VMware Tools будет удалена, виртуальную машину (VM) необходимо выключить. Если VM предварительно не выключить, копирование образа диска не запустится.

Пример подключения к удаленному гипервизору ESXi:

Внимание

После запуска команды для копирования гостевой машины с сервера esxi, по запросу сервиса («Enter host password for user „user_esxi“:») необходимо несколько раз ввести пароль пользователя, под которым происходит соединение.

virt-v2v-copy-to-local -ic esx://user_esxi@esxi_n.sim-networks.net 2012_v2v
[   0,0] Fetching the remote libvirt XML metadata ...
2019-02-12 10:31:24.317+0000: 19144: info : libvirt version: 4.5.0, package: 10.el7_6.4 (CentOS BuildSystem <http://bugs.centos.org>, 2019-01-29-17:31:22, x86-01.bsys.centos.org)
2019-02-12 10:31:24.317+0000: 19144: info : hostname: v2v-prod
2019-02-12 10:31:24.317+0000: 19144: warning : esxConnectOpen:857 : Ignoring unexpected path '' for non-vpx scheme 'esx'
Enter user_esxi's password for esxi_n.sim-networks.net:
[   6,9] Parsing the remote libvirt XML metadata ...
Enter host password for user 'user_esxi':
Enter host password for user 'user_esxi':
Enter host password for user 'user_esxi':
Enter host password for user 'user_esxi':
[  29,6] Copying remote disk 1/2 to 2012_v2v-disk1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 40.0G  100 40.0G    0     0  86.9M      0  0:07:50  0:07:50 --:--:-- 87.8M
[ 500,5] Copying remote disk 2/2 to 2012_v2v-disk2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10.0G  100 10.0G    0     0  86.0M      0  0:01:59  0:01:59 --:--:-- 88.8M
[ 619,6] Writing libvirt XML metadata to 2012_v2v.xml ...
[ 619,6] Finishing off


"user_esxi" - наименование пользователя, который имеет возможность удаленного
              подключения к esxi серверу по ssh.

"esxi_n.sim-networks.net" - FQDN удаленного сервера esxi, к которому выполняется
                            подключение.

"2012_v2v" - наименование гостевой машины (VM).

"-v -x" - дополнительные опциональные ключи для вывода отладочной информации

Если при запуске команды необходимо вывести дополнительную отладочную
информацию, то команду можно запускать с ключами "-v -x".

Пример: virt-v2v-copy-to-local -ic esx://user_esxi@esxi_n.sim-networks.net 2012_v2v  -v -x

Примечание

Если сервер ESXi, к которому будет выполняться подключение, использует «самоподписной» сертификат, то соединение c ним не происходит. При попытке подключения пользователю выдает ошибку: «libvirt: ESX Driver error : internal error: curl_easy_perform() returned an error: Peer certificate cannot be authenticated with given CA certificates (60) : Peer’s certificate issuer has been marked as not trusted by the user».

Для устранения данной ошибки нужно использовать формат команды: «esx://example-esx.com/?no_verify=1».

Пример: “virt-v2v-copy-to-local -ic esx://user_esxi@esxi_n.sim-networks.net/?no_verify=1 2012_v2v -v -x”

Примечание

Время копирования образа диска будет занимать некоторое время и будет зависеть от объема диска, который копируется и скорости соединения с сервером esxi. Во время копирования, сервис v2v, будет отображать текущее состояние процесса копирования, а также количество удаленных дисков для копирования.

Выполняем проверку скопированных образов дисков.

С помощью команды «ls -lh» проверяем наличие и объем файлов:

ls -lh /data
total 51G
-rw-r--r--. 1 root root  40G Feb 12 11:39 2012_v2v-disk1
-rw-r--r--. 1 root root  10G Feb 12 11:41 2012_v2v-disk2
-rw-r--r--. 1 root root 1,4K Feb 12 11:41 2012_v2v.xml
drwx------. 2 root root  16K Feb 12 10:56 lost+found

"2012_v2v-disk1" - Системный диск, объем 40G.
"2012_v2v-disk2" - Диск с данными, объем 10G.

С помощью команды «qemu-img info» проверяем формат файлов:

qemu-img info 2012_v2v-disk1
image: 2012_v2v-disk1
file format: raw
virtual size: 40G (42949672960 bytes)
disk size: 40G

qemu-img info 2012_v2v-disk2
image: 2012_v2v-disk2
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 10G

Как видно с результата вывода, файлы имеет корректный формат «raw» и объем.

Установка драйверов для системного диска

  1. Конвертация и установка драйверов для системного диска.

На данном этапе, необходимо выполнить установку драйверов «virtio» для системных дисков под управлением OS Windows. При этом системные диски под управлением OS Linux не нуждаются в дополнительной установке драйверов «virtio».

Программное обеспечение «virt-v2v» позволяет автоматически имплементировать драйвера «virtio» с учетом версии OS Windows. Важной особенностью и как следствие преимуществом данного решения является то, что сервис «virt-v2v» самостоятельно определяет версию и тип OS MS Windows, после чего выполняется установка необходимых драйверов.

Пример конвертации системного диска под управлением OS Windows Server 2012 Standard:

virt-v2v  -i disk /data/2012_v2v-disk1 -o local -os /data
[   0,0] Opening the source -i disk /data/2012_v2v-disk1
[   0,0] Creating an overlay to protect the source from being modified
[   0,1] Initializing the target -o local -os /data
[   0,1] Opening the overlay
[  45,5] Inspecting the overlay
[  49,1] Checking for sufficient free disk space in the guest
[  49,1] Estimating space required on target for each disk
[  49,1] Converting Windows Server 2012 Standard Evaluation to run on KVM
virt-v2v: warning: /usr/share/virt-tools/pnp_wait.exe is missing.
Firstboot scripts may conflict with PnP.
virt-v2v: warning: there is no QXL driver for this version of Windows (6.2
x86_64).  virt-v2v looks for this driver in
/usr/share/virtio-win/virtio-win.iso

The guest will be configured to use a basic VGA display driver.
virt-v2v: This guest has virtio drivers installed.
[  66,4] Mapping filesystem data to avoid copying unused and blank areas
[  67,2] Closing the overlay
[  67,5] Checking if the guest needs BIOS or UEFI to boot
[  67,5] Assigning disks to buses
[  67,5] Copying disk 1/1 to /data/2012_v2v-disk1-sda (raw)
    (100.00/100%)
[ 383,7] Creating output metadata
[ 383,7] Finishing off

Примечание

Обратите внимание, что в ходе установки драйверов, сервис «v2v» не обнаружил видеодрайверов и как следствие будет использоваться стандартный VGA-драйвер. Видеодрайвера были удалены намерено так как их установка вела к некорректной обработке графического интерфейса гостевой машины (изображение отображалось в перевернутом зеркальном виде). По этой причине мы настоятельно не рекомендуем устанавливать видеодрайвера!

После завершения установки драйверов и завершения конвертации диска выполняем проверку наличия нужного файла:

ls -lh /data
total 59G
-rw-r--r--. 1 qemu qemu  40G Feb 12 11:39 2012_v2v-disk1
-rw-r--r--. 1 root root  40G Feb 12 12:41 2012_v2v-disk1-sda
-rw-r--r--. 1 root root 1,3K Feb 12 12:41 2012_v2v-disk1.xml
-rw-r--r--. 1 root root  10G Feb 12 11:41 2012_v2v-disk2
-rw-r--r--. 1 root root 1,4K Feb 12 11:41 2012_v2v.xml
drwx------. 2 root root  16K Feb 12 10:56 lost+found

"2012_v2v-disk1-sda" - подготовленный диск с установленными драйверами.

Проверяем формат файла:

qemu-img info 2012_v2v-disk1-sda
image: 2012_v2v-disk1-sda
file format: raw
virtual size: 40G (42949672960 bytes)
disk size: 8.1G

Конвертация дополнительных дисков

  1. Конвертация дополнительных дисков с данными.

Дополнительные диски, которые были скопированы во время подключения к гипервизору, не нуждаются в дополнительной обработке или конвертации. Сразу же после копирования дополнительные (не системные) диски уже находятся в необходимом формате - «raw».

Создание и подключение загрузочного системного диска

  1. Подключение дополнительного диска для создания загрузочного системного диска.

Для создания нового диска, с которого будет запускаться инстанс или который будет использоваться как дополнительный, необходимо предварительно определить его объем. Если объем диска указать меньше чем номинальный объем диска для импорта, то следующий этап по копированию закончится с ошибкой, если же диск будет слишком большой, то его использование будет не рациональным.

Для определения нужного объема, необходимо вычислить объем уже подготовленного к миграции диска с использованием команды «ls -lh <filename>»

ls -lh 2012_v2v-disk1-sda
-rw-r--r--. 1 root root 40G Feb 12 12:41 2012_v2v-disk1-sda

В данном случае размер файла «2012_v2v-disk1-sda» (подготовленного к миграции системного диска) составляет 40G. Следовательно, новый диск нужно создать с размером 40G.

Процесс создания диска описан в статье При этом необходимо создавать чистый диск. Созданный диск нужно подключить к v2v инстансу (аналогично процессу описанному раннее).

После добавления нового диска объемом 40G, проверяем доступность диска в OS:

fdisk -l
Disk /dev/vdc: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Диск «/dev/vdc» доступен, диск можно использовать.

Копирование образа системного диска на новый диск

  1. Копирование подготовленного образа системного диска на новый дополнительный диск.

Так как все диски подключены к одному инстансу под управлением OS Linux, копирование образа диска будет выполняться локально с помощью утилиты «dd».

Пример копирования образа диска на отдельное устройство «/dev/vdc»:

dd if=/data/2012_v2v-disk1-sda of=/dev/vdc bs=32M
1280+0 records in
1280+0 records out
42949672960 bytes (43 GB) copied, 172,71 s, 249 MB/s

Образ диска успешно скопировался на блочное устройство «/dev/vdc».

Отключение диска на который был скопирован системный диск

  1. Отключение дополнительного диска на который был скопирован системный диск.

После успешного копирования образа диска, блочное устройство на которое проводилось копирование нужно отключить, так как в дальнейшем с этого тома будет запускаться новый инстанс. В качестве примера (в нашем случае) выполняем отключение устройства «/dev/vdc».

Процесс отключения диска от инстанса описан в нашей документации «Отключение диска»

Установка опции - «Загрузочный» для системного диска

  1. Изменение настроек системного диска - установка опции - «Загрузочный».
  • Выполняем редактирование диска*

Для этого необходимо: - Перейти в меню «Диски», далее необходимо выбрать пункт «Диски». - В столбце «Действия» из выпадающего списка нужно выбрать пункт «Редактировать диск». - В открывшемся диалоговом окне нужно установить флаг «Загрузочный».

Подключение дополнительных диска для создания дисков с данными

  1. Подключение к инстансу дополнительных дисков для создания дисков с данными.

Данный пункт актуален в случае наличия дополнительных дисков и необходимости в миграции дополнительных дисков. Если потребность в копировании дополнительного диска есть, необходимо руководствоваться рекомендациями из пункта №7.

Копирование подготовленных образов дисков с данными

  1. Копирование подготовленных образов дисков с данными на новые дополнительные диски.

Технически, процесс копирования образа дополнительного диска с данными не отличается от копирования системного диска.

В нашем примере мы выполним копирование дополнительно диска «2012_v2v-disk2», который был скопирован на этапе подключения к гипервизору (пункт меню №4):

dd if=/data/2012_v2v-disk2 of=/dev/vdc bs=32M

320+0 records in
320+0 records out
10737418240 bytes (11 GB) copied, 79,7397 s, 135 MB/s

Диск с данными успешно скопирован.

Отключение дополнительных дисков

  1. Отключение дополнительных дисков на которые были скопированы диски с данными.

Процесс отключения диска от инстанса описан в нашей документации «Отключение диска» В качестве примера (в нашем случае) выполняем отключение устройства «/dev/vdc».

Запуск инстанса

  1. Запуск инстанса на основе подготовленного загрузочного диска.

Пошагово выполняя вышеописанные пункты, мы выполнили копирование дисков гостевой машины «2012_v2v», которая хостится на сервере «esxi_n.sim-networks.net».

Теперь, когда в проекте Облака существуют аналоги дисков сервера «2012_v2v», мы можем приступить к запуску копии («клона») данного сервера, для этого необходимо на основе скопированного системного диска запустить новый инстанс, а после его успешного запуска выполнить подключение дополнительных дисков.

Установка необходимых virtio-драйверов и гостевого агента

  1. Завершение установки необходимых virtio-драйверов и гостевого агента - «qemu-ga-x64 в OS Windows.

Установка virtio драйверов и qemu-agent

После успешной загрузки инстанса, необходимо обязательно установить дополнительное программное обеспечение, которое обеспечит стабильную работу виртуальной машины и её дальнейшее управление с помощью сервисов платформы Openstack:

  • Balloon
  • NetKVM
  • guest-agent.

Установка дополнительных драйверов выполняется по мере необходимости.

Для установки драйверов нужно вызвать диспетчер устройств OS Windows и, кликнув правой кнопкой мыши по устройству (для которого необходимо установить драйвер), выбираем пункт «Обновить драйверы…». Выбираем устройство «Ethernet-контроллер»:

../../_images/virtio_driver_1.png

В открывшемся окне «Обновление драйверов - Ethernet-контроллер» выбираем пункт «Выполнить поиск драйверов на этом компьютере».

../../_images/virtio_driver_2.png

В следующем окне «Поиск драйверов на этом компьютере» выбираем нижний пункт - «Выбрать драйвер из списка уже установленных драйверов», нажимаем кнопку «Далее».

../../_images/virtio_driver_3.png

В окне «Выберите тип устройства из списка» оставляем умолчательный пункт «Показать все устройства», нажимаем кнопку «Далее».

../../_images/virtio_driver_4.png

В новом окне «Выберите драйвер для этого устройства» система отобразит доступный драйвер «Red Hat VirtIO Ethernet Adapter», нажимаем кнопку «Далее».

../../_images/virtio_driver_5.png

В окне подтверждения «Безопасность Windows», необходимо установить check box возле опции «Всегда доверять программному обеспечению «Red Hat, Inc».», нажимаем кнопку «Далее».

../../_images/virtio_driver_6.png

Из следующего окна «Обновление программного обеспечения для данного устройства завершено успешно» видим, что драйвер на сетевое оборудование успешно установлен.

../../_images/virtio_driver_7.png

Аналогичные действия необходимо выполлнить для PCI-устройства. В данном случае будет выполняться установка драйвера «VirtIO Balloon Driver».

../../_images/virtio_driver_8.png

Драйвер PCI-устройства «VirtIO Balloon Driver» успешно установлен.

../../_images/virtio_driver_9.png

Все драйвера успешно установлены, в разделе «Другие устройства» больше нет устройств без драйверов.

../../_images/virtio_driver_10.png

После того как все необходимые драйвера будут установлены, необходимо выполнить установку qemu-guest-agent. Для установки агента нужно скачать стабильный iso-образ «Stable virtio-win iso», который доступен по ссылке После того как образ будет скачан, необходимо выполнить установку агента «qemu-ga-x64.msi», файл установки находится в директории «guest-agent». Процесс установки выполняется по умолчанию, без необходимости указания дополнительных параметров.

Подключение дополнительных дисков с данными к инстансу

  1. Подключение дополнительных дисков с данными к новому инстансу.

Подключение дополнительных дисков выполняется согласно статьи из нашей документации - Подключение дополнительного диска к инстансу.

Проверка результатов миграции виртуальной машины

  1. Проверка функционирования всех служб и сервисов, лицензий на смигрированном сервере - инстансе. На данном этапе, администратору, который выполнял миграцию виртуального сервера в проект Облака, необходимо выполнить полную проверку работоспособности сервера, доступности ресурсов, внести изменения, связанные с изменением IP-адресации и т.д. Эта проверка необходима для того, чтоб убедиться в том, что после выполненных работ всё работает корректно.

Как подготовить свой сервер для миграции

Разворачивание системы

Пример разворачивания сервиса для самостоятельной миграции дисков в SIM-Cloud будет продемонстрировано на базе OS «CentOS Linux 7». Предполагается, что необходимое программное обеспечение будет устанавливаться на «чистую» только-что развернутую OS.

Фактически, для разворачивания сервиса необходимо выполнить установку нескольких пакетов ПО и выполнить изменения в iso-образе с драйверами. В ходе демонстрации примера, будет выполняться удаление видеодрайверов, после чего будет собран новый iso-образ но уже без директорий «qxl» и «qxldod» (как было сказано ранее, использование данных драйверов приводило к некорректной работе виртуального устройства.)

Проверка доступных обновлений для OS:

yum check-update

Установка доступных обновлений для OS:

yum update -y

Установка программного обеспечения

Установка пакета «virt-v2v» выполняется под пользователем «root»:

yum install virt-v2v -y

Добавление нового репозитория virtio-win.repo:

wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
yum install virtio-win -y

Установка пакета «xorriso» для создания iso-образов:

yum install xorriso -y

Монтируем iso-образ «virtio-win-0.1.141.is» к точке монтирования «/mnt»:

mount -o loop /usr/share/virtio-win/virtio-win-0.1.141.iso /mnt

Выполняем проверку доступности данных из ранее примонтированного образа:

ls -lh /mnt/
total 5,7M
dr-xr-xr-x. 13 root root 2,0K Aug  4  2017 Balloon
dr-xr-xr-x.  2 root root 2,0K Aug  4  2017 guest-agent
dr-xr-xr-x. 13 root root 2,0K Aug  4  2017 NetKVM
dr-xr-xr-x. 11 root root 2,0K Aug  4  2017 pvpanic
dr-xr-xr-x.  4 root root 2,0K Aug  4  2017 qemufwcfg
dr-xr-xr-x. 11 root root 2,0K Aug  4  2017 qemupciserial
dr-xr-xr-x.  5 root root 2,0K Aug  4  2017 qxl
dr-xr-xr-x.  8 root root 2,0K Aug  4  2017 qxldod
dr-xr-xr-x.  3 root root 2,0K Aug  4  2017 smbus
dr-xr-xr-x. 10 root root 2,0K Aug  4  2017 vioinput
dr-xr-xr-x. 11 root root 2,0K Aug  4  2017 viorng
dr-xr-xr-x. 11 root root 2,0K Aug  4  2017 vioscsi
dr-xr-xr-x. 13 root root 2,0K Aug  4  2017 vioserial
dr-xr-xr-x. 13 root root 2,0K Aug  4  2017 viostor
-r--r--r--.  1 root root 2,9M Aug  4  2017 virtio-win-0.1.141_amd64.vfd
-r--r--r--.  1 root root 2,9M Aug  4  2017 virtio-win-0.1.141_x86.vfd
-r--r--r--.  1 root root  20K Aug  4  2017 virtio-win_license.txt

Создаем новую директорию «iso» для дальнейшего копирования в нее содержимого iso-образа «virtio-win-0.1.141.iso».

mkdir /data/iso

Выполняем переход в директорию «/mnt»:

cd /mnt

Копируем все данные с образа «virtio-win-0.1.141.iso» в директорию «/data/iso/»

cp -r /mnt/. /data/iso/

Проверяем, что все данные корректно скопировались.

ls -lh /data/iso/
total 5,7M
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 Balloon
dr-xr-xr-x.  2 root root 4,0K Feb  8 10:45 guest-agent
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 NetKVM
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 pvpanic
dr-xr-xr-x.  4 root root 4,0K Feb  8 10:45 qemufwcfg
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 qemupciserial
dr-xr-xr-x.  5 root root 4,0K Feb  8 10:45 qxl
dr-xr-xr-x.  8 root root 4,0K Feb  8 10:45 qxldod
dr-xr-xr-x.  3 root root 4,0K Feb  8 10:45 smbus
dr-xr-xr-x. 10 root root 4,0K Feb  8 10:45 vioinput
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 viorng
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 vioscsi
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 vioserial
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 viostor
-r--r--r--.  1 root root 2,9M Feb  8 10:45 virtio-win-0.1.141_amd64.vfd
-r--r--r--.  1 root root 2,9M Feb  8 10:45 virtio-win-0.1.141_x86.vfd
-r--r--r--.  1 root root  20K Feb  8 10:45 virtio-win_license.txt

Удаляем директории с видеодрайверами («qxl» и «qxldod») из директории «/data/iso/»:

rm -rf /data/iso/qxl
rm -rf /data/iso/qxldod

Проверяем, что нужные директории удалились:

ls -lh /data/iso/
total 5,7M
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 Balloon
dr-xr-xr-x.  2 root root 4,0K Feb  8 10:45 guest-agent
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 NetKVM
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 pvpanic
dr-xr-xr-x.  4 root root 4,0K Feb  8 10:45 qemufwcfg
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 qemupciserial
dr-xr-xr-x.  3 root root 4,0K Feb  8 10:45 smbus
dr-xr-xr-x. 10 root root 4,0K Feb  8 10:45 vioinput
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 viorng
dr-xr-xr-x. 11 root root 4,0K Feb  8 10:45 vioscsi
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 vioserial
dr-xr-xr-x. 13 root root 4,0K Feb  8 10:45 viostor
-r--r--r--.  1 root root 2,9M Feb  8 10:45 virtio-win-0.1.141_amd64.vfd
-r--r--r--.  1 root root 2,9M Feb  8 10:45 virtio-win-0.1.141_x86.vfd
-r--r--r--.  1 root root  20K Feb  8 10:45 virtio-win_license.txt

Создаем ISO-образ из файлов, которые находятся в директории «/data/iso/», при этом iso-файл должен называться «virtio-win-0.1.141.iso»:

xorrisofs -r -J -o /data/virtio-win-0.1.141.iso /data/iso/

xorriso 1.5.0 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:/data/virtio-win-0.1.141.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data,  186g free
Added to ISO image: directory '/'='/data/iso'
xorriso : UPDATE :     990 files added in 1 seconds
xorriso : UPDATE :     990 files added in 1 seconds
xorriso : UPDATE :  8.61% done
ISO image produced: 278601 sectors
Written to medium : 278601 sectors at LBA 0
Writing to 'stdio:/data/virtio-win-0.1.141.iso' completed successfully.

Проверяем создался ли нужный ISO-образ в директории «/data» :

ls -lh /data
total 545M
drwxr-xr-x. 14 root root 4,0K Feb  8 10:54 iso
drwx------.  2 root root  16K Feb  8 10:37 lost+found
-rw-r--r--.  1 root root 545M Feb  8 10:58 virtio-win-0.1.141.iso

Необходимый образ успешно создался.

Выполняем замену оригинального iso-образа, который находился в директории «/usr/share/virtio-win/» на образ, который мы создали уже без видеодрайверов. Для этого необходимо:

  • Отмонтировать образ:
umount /mnt
  • Переходим в директорию «/usr/share/virtio-win/» и удаляем iso-образ «virtio-win-0.1.141.iso»
cd /usr/share/virtio-win/
rm -f virtio-win-0.1.141.iso
  • Копируем подготовленный нами iso-образ:
cp /data/virtio-win-0.1.141.iso .
  • Удаляем iso-файл с директории /data/
rm -f /data/virtio-win-0.1.141.iso
  • Удаляем файлы, с которых создавался iso-образ:
rm -rf /data/iso/

Конвертация диска в ручном режиме

Установленное программное обеспечение образа «SIM-V2V» позволяет выполнить конвертацию виртуальных дисков формата «.vmdk» в формат «raw» в ручном режиме из локальной директории инстанса.

Данный способ применим в следующих случаях:

  • отсутствует возможность подключения к серверу ESXi;
  • необходимо выполнить единичную конвертацию диска с данными или системного диска;
  • у пользователя есть в наличии только определенный перечень виртуальных дисков, которые нужно смигрировать в Облако.

Копируем данные виртуального сервера

Пример удаленного подключения к серверу ESXi, рекурсивное копирование директории с файлами виртуальной машины:

scp -r esxi_user@esxi_n.sim-networks.net:/vmfs/volumes/55343e73-583f862a-f32d-0cc47a13cce8/2012_v2v /data/
Password:
2012_v2v.vmx                    100% 3513     2.0MB/s   00:00
2012_v2v-flat.vmdk              100%   40GB  92.1MB/s   07:24
2012_v2v.vmdk                   100%  448   127.2KB/s   00:00
2012_v2v.vmsd                   100%    0     0.0KB/s   00:00
2012_v2v.nvram                  100% 8684     6.1MB/s   00:00
vmware-1.log                    100%  593KB  70.8MB/s   00:00
2012_v2v_1-flat.vmdk            100%   10GB  90.6MB/s   01:53
vmware-2.log                    100%  308KB  55.6MB/s   00:00
2012_v2v_1.vmdk                 100%  450   431.0KB/s   00:00
vmware.log                      100%  288KB  55.7MB/s   00:00

Таким образом были скопированы все файлы виртуальной машины «2012_v2v».

Выполняем проверку скопированных файлов:

ls -lh /data/2012_v2v
total 51G
-rw-------. 1 root root  10G Feb 12 18:01 2012_v2v_1-flat.vmdk
-rw-------. 1 root root  450 Feb 12 18:01 2012_v2v_1.vmdk
-rw-------. 1 root root  40G Feb 12 17:59 2012_v2v-flat.vmdk
-rw-------. 1 root root 8,5K Feb 12 17:59 2012_v2v.nvram
-rw-------. 1 root root  448 Feb 12 17:59 2012_v2v.vmdk
-rw-r--r--. 1 root root    0 Feb 12 17:59 2012_v2v.vmsd
-rwxr-xr-x. 1 root root 3,5K Feb 12 17:52 2012_v2v.vmx
-rw-r--r--. 1 root root 593K Feb 12 17:59 vmware-1.log
-rw-r--r--. 1 root root 309K Feb 12 18:01 vmware-2.log
-rw-r--r--. 1 root root 289K Feb 12 18:01 vmware.log

Данные скопированы в полном объеме.

Конвертация системного диска

virt-v2v  -i disk  2012_v2v-flat.vmdk -o local -of raw -os  /data/2012_v2v/ -v -x
[   0,0] Opening the source -i disk 2012_v2v-flat.vmdk
[   0,0] Creating an overlay to protect the source from being modified
[   0,1] Initializing the target -o local -os /data/2012_v2v/
[   0,1] Opening the overlay
[   7,9] Inspecting the overlay
[  11,7] Checking for sufficient free disk space in the guest
[  11,7] Estimating space required on target for each disk
[  11,7] Converting Windows Server 2012 Standard Evaluation to run on KVM
virt-v2v: warning: /usr/share/virt-tools/pnp_wait.exe is missing.
Firstboot scripts may conflict with PnP.
virt-v2v: warning: there is no QXL driver for this version of Windows (6.2
x86_64).  virt-v2v looks for this driver in
/usr/share/virtio-win/virtio-win.iso

The guest will be configured to use a basic VGA display driver.
virt-v2v: This guest has virtio drivers installed.
[  29,3] Mapping filesystem data to avoid copying unused and blank areas
[  30,1] Closing the overlay
[  30,4] Checking if the guest needs BIOS or UEFI to boot
[  30,4] Assigning disks to buses
[  30,4] Copying disk 1/1 to /data/2012_v2v/2012_v2v-flat-sda (raw)
    (100.00/100%)
[ 343,4] Creating output metadata
[ 343,4] Finishing off

Выполняем проверку сконвертированного файла виртуального диска:

qemu-img info 2012_v2v-flat-sda
image: 2012_v2v-flat-sda
file format: raw
virtual size: 40G (42949672960 bytes)
disk size: 8.1G

Файл успешно сконвертировался в нужный формат.

** Конвертация диска с данными**

qemu-img convert -p -f vmdk -O raw 2012_v2v_1.vmdk disk.raw
(100.00/100%)

Проверка данных

qemu-img info disk.raw
image: disk.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 54M

Файл успешно сконвертировался в нужный формат.

Утилита «qemu-img convert» поддерживает следующие форматы для конвертирования: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug

Больше информации об утилите QEMU можно с помощью команды: «qemu-img –help».

После того как диски будут подготовлены (сконвертированы в нужный формат и установлены необходимые virtio-драйвера), их нужно скопировать на отдельные диски, и создать с них инстанс. В созданном инстансе необходимо завершить установку драйверов virtio и qemu-agent. Все описанные действия были описаны в предыдущих пунктах данной инструкции.