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

от автора

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

ссылка на оригинал статьи http://habrahabr.ru/post/177679/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *