Xen Cloud Platform: Как поселить чужую VM в новый дом

в 10:37, , рубрики: VMware, xen, xen cloud platform, виртуализация, Облачные вычисления, системное администрирование, метки: , ,

XCP

Возникла у нас следующая задача:

  • Есть подготовленный и настроенный в VMware образ виртуальной машины, в нашем конкретном случае FreeBSD 8.1
  • Есть виртуальная платформа XCP 1.6 в которой уже крутятся наши виртуальные машинки

Необходимо поселить новую VM на наш сервер, при этом с минимальным количеством телодвижений. Статья представляет собой собранною воедино информацию из нескольких источников. Кроме того я постарался причесать команды, чтобы вам, да и мне самому, просто применять их копи-пастом в будущем.

Первое, что нам нужно сделать, это получить сырой образ виртуальной машины

Мы получили из внешнего источника системные требования PIII 1000Mhz, 512RAM, 20Gb IDE и следующие файлы:

FreeBSD.nvram	8684
FreeBSD.vmdk	7131758592
FreeBSD.vmsd	0
FreeBSD.vmx	2234
FreeBSD.vmxf	262

Нужный нам файл — это образ диска FreeBSD.vmdk, который необходимо конвертировать в «сырой» формат. Для этого мы используем утилиту qemu-img из пакета app-emulation/qemu. Естественно устанавливать его на сервер нет необходимости, образ можно конвертировать на любой linux-машине. Предварительно убеждаемся, что формат образа vmdk. Если формат raw, то конвертировать ничего не нужно и просто переходим к следующему шагу.

$ qemu-img info FreeBSD.vmdk
image: FreeBSD.vmdk
file format: vmdk
virtual size: 20G (21474836480 bytes)
disk size: 6.6G

Далее собственно конвертация, после которой получаем бинарный образ жесткого диска размером 20 гигабайт:

$ qemu-img convert FreeBSD.vmdk -O raw FreeBSD.raw
FreeBSD.raw   21474836480

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

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

Восстановление диска виртуальной машины из бинарного образа

Заходим в шел сервера визуализации и находим UUID витальной машины:

$ xe vm-list
...
uuid ( RO)           : c681c725-xxxx-xxxx-xxxx-5d7cd920bdbf
    name-label ( RW): FreeBSD
    power-state ( RO): halted
...
$ export VMUUID=c681c725-xxxx-xxxx-xxxx-5d7cd920bdbf

устанавливаем загрузчик:

$ xe vm-param-set uuid=$VMUUID PV-bootloader=pygrub

жесткий диск делаем загрузочным, а виртуальный CD-привод не загрузочным:

$ xe vbd-param-set uuid=$(xe vbd-list vm-uuid=$VMUUID userdevice=0 --minimal) bootable=true
$ xe vbd-param-set uuid=$(xe vbd-list vm-uuid=$VMUUID type=CD --minimal) bootable=false

находим идентификатор VDI-диска свежесозданной виртуальной машины:

$ xe vm-disk-list uuid=$VMUUID
Disk 0 VBD:
uuid ( RO)             : 50adb0d9-xxxx-xxxx-xxxx-f8f64e5c4f19
    vm-name-label ( RO): FreeBSD
       userdevice ( RW): 0

Disk 0 VDI:
uuid ( RO)             : af85b950-xxxx-xxxx-xxxx-b5203ba45aae
       name-label ( RW): FreeBSD
    sr-name-label ( RO): Local storage
     virtual-size ( RO): 21474836480
$ export VDIID=af85b950-xxxx-xxxx-xxxx-b5203ba45aae

переходим в окружение, в котором доступен жесткий диск виртуальной машины:

$ /opt/xensource/debug/with-vdi $VDIID /bin/bash

теперь устройство /dev/$DEVICE — это жесткий диск виртуальной машины. Осталось накатить на него образ, который мы получили в самом начале:

$ /opt/xensource/libexec/sparse_dd -src /var/run/sr-mount/.../FreeBSD.raw -dest /dev/$DEVICE 
   -size 21474836480 -prezeroed
$ exit

Вот собственно и все, можно стартовать виртуальную машину.

Источники:

  1. www.howtoforge.com/how-to-convert-a-xen-virtual-machine-to-vmware
  2. serverfault.com/questions/471958/how-to-migrate-from-xen-to-xcp

Автор: madixi

Источник

Поделиться

* - обязательные к заполнению поля