Статья описывает импорт виртуальных машин (ВМ) или образов ВМ, созданных с помощью ПО:

  • Hyper-V;
  • VirtualBox;
  • VMware;
  • Xen;
  • различных гипервизоров, использующих технологию QEMU-KVM.

Импорт состоит из следующих шагов:

  1. Подготовка исходной ВМ.
  2. Подготовка VMmanager.
  3. Перенос дисков ВМ.
  4. Запуск ВМ.

Импорт ВМ, созданных с помощью OVZ-виртуализации, описан в статье Перенос OVZ-контейнера в LXD-кластер

Ограничения


На импортированных ВМ не поддерживается:

  • изменение пароля средствами VMmanager;
  • автоматическое добавление и удаление IP-адресов;
  • автоматическое изменение разделов диска.

Из-за того, что разные гипервизоры могут использовать разные драйверы при работе с ОС WIndows, корректный импорт ВМ с ОС семейства Windows не гарантируется.

На ВМ с ОС Windows, импортированных из Hyper-V, увеличение ресурсов с опцией Добавлять ресурсы без перезагрузки VM может работать некорректно.

Подготовка исходной ВМ


На этом шаге файлы исходной ВМ нужно конвертировать в формат, поддерживаемый VMmanager, и перенести на узел кластера платформы. VMmanager поддерживает следующие форматы дисков ВМ:

  • RAW — для Ceph и LVM-хранилищ;
  • Qcow2 — для файлового хранилища.

Подробнее о форматах дисков ВМ см. в статье Типы хранилищ.

Так как файлы в формате RAW занимают большой объём, рекомендуем конвертировать их в формат Qcow2 перед переносом на узел кластера VMmanager.

Порядок подготовки

  1. Остановите исходную ВМ.
  2. Если файлы дисков ВМ:

    • находятся в хранилище Ceph:

      1. Подключитесь к серверу-монитору Ceph с исходной виртуальной машиной.

      2. Экспортируйте диски ВМ: 

        rbd export <pool_name>/<disk_name> <raw_file>
        CODE

        <pool_name> — имя пула Ceph

        <disk_name> — имя диска ВМ

        <raw_file> — выходной файл в формате RAW

      3. Конвертируйте файлы дисков в формат Qcow2: 

        qemu-img convert -f raw -O qcow2 <raw_file> <qcow_file>
        CODE

        <raw_file> — исходный файл в формате RAW

        <qcow_file> — выходной файл в формате Qcow2

    • находятся в LVM-хранилище:

      1. Экспортируйте их и сконвертируйте в формат Qcow2: 

        qemu-img convert -f raw -O qcow2 <path_to_vm/raw_file> <qcow_file>
        CODE

        <path_to_vm/raw_file> — путь и имя исходного файла диска ВМ в формате RAW

        <qcow_file> — выходной файл в формате Qcow2

  3. Если формат файлов ВМ отличается от Qcow2, выполните конвертацию:

    qemu-img convert -f <input_format> -O qcow2 <input_file> <qcow_file>
    CODE

    <input_format> — исходный формат (необязательный параметр):

    • vdi –- для гипервизора VirtualBox;
    • vmdk — для гипервизора VMware;
    • vpc — для гипервизора Hyper-V

    <input_file> — исходный файл

    <qcow_file> — выходной файл в формате Qcow2

  4. Перенесите файлы дисков ВМ на узел кластера VMmanager.

Подготовка VMmanager


  1. Если требуется, подготовьте и подключите к кластеру хранилище нужного типа. Подробнее:
  2. Создайте ВМ с необходимыми параметрами: Виртуальные машиныСоздать VM. При создании:
    1. Выберите операционную систему NoOS.
    2. Выберите или создайте конфигурацию с диском не менее, чем у исходной ВМ. Если у исходной ВМ больше одного диска, выберите или создайте конфигурацию с нужным количеством дисков.
    3. Выберите хранилище требуемого типа.
    4. Если нужно импортировать ВМ без изменения IP-адреса, выберите необходимый IP-адрес: ПулНазначить IP.
  3. Остановите созданную ВМ: Виртуальные машины → выберите ВМ → меню    Остановить.

Перенос дисков ВМ


При переносе потребуется заменить файлы дисков, созданные платформой, на файлы исходной ВМ. Имена файлов должны остаться прежними.

Если у ВМ один диск, имя файла имеет вид id_имя-ВМ. Например, 42_vmtest. Если у ВМ более одного диска, она хранится в нескольких файлах. Для первого диска имя файла имеет вид id_имя-ВМ, для остальных дисков — id_имя-ВМ_имя-диска. Например, ВМ с тремя дисками может храниться в файлах 42_vmtest, 42_vmtest_disc2, 42_vmtest_disc3.

Порядок переноса зависит от типа используемого хранилища.

Файловое хранилище

Скопируйте диски исходной ВМ в директорию хранения на узле кластера:

cp <qcow_file> <vm_dir>/<vm_file>
CODE

<qcow_file> — импортируемый файл в формате Qcow2

<vm_dir> — директория хранения ВМ. При создании хранилища с настройками по умолчанию — /vm.

<vm_file> — файл с диском ВМ

Локальное LVM-хранилище

Импортируйте диски исходной ВМ в LVM-хранилище:

qemu-img convert -f qcow2 -O raw <qcow_file> /dev/mapper/<vm_file>
CODE

<qcow_file> — импортируемый файл в формате Qcow2

/dev/mapper/ — путь к LVM-диску

<vm_file> — файл с диском ВМ

Сетевое LVM-хранилище

Импортируйте диски исходной ВМ в LVM-хранилище:

qemu-img convert -f qcow2 -O raw <qcow_file> /dev/Network_lvm_<dev_disk>/<id_name>
CODE

<qcow_file> — импортируемый файл в формате Qcow2

/dev/Network_lvm_<dev_disk>/<id_name> — путь к диску ВМ 

Чтобы получить путь к диску ВМ:

  1. Выполните команду virsh list и сохраните значение id для нужной ВМ.
  2. Выполните команду virsh domblklist <id_ВМ>. Вывод команды будет содержать путь к диску.

Значение <dev_disk> может отличаться в зависимости от типа подключения диска и настроек multipath.

Ceph

  1. Конвертируйте файлы дисков исходной ВМ в формат RAW: 

    qemu-img convert -f qcow2 -O raw <qcow_file> <raw_file>
    CODE

    <qcow_file> — исходный файл в формате Qcow2

    <raw_file> — выходной файл в формате RAW

  2. На сервере-мониторе Ceph:

    1. Удалите диски созданной ВМ: 

      rbd rm <pool_name>/<vm_file>
      CODE

      <pool_name> — имя пула Сeph

      <vm_file> — файл с диском ВМ

    2. Импортируйте диски исходной ВМ: 

      rbd import <raw_file> <pool_name>/<vm_file>
      CODE

      <raw_file> — импортируемый файл в формате RAW

      <pool_name> — имя пула Сeph

      <vm_file> — файл с диском ВМ

Запуск ВМ


  1. Запустите импортированную ВМ: Виртуальные машины → выберите ВМ → меню    Запустить.
  2. Если требуется, подключитесь к ВМ через VNC или SPICE и измените её сетевые настройки: Виртуальные машины → выберите ВМ → меню    VNC (SPICE). Подробнее о настройке сети см. в статье Назначение IP-адресов средствами ОС.