Возникла у нас следующая задача:
- Есть подготовленный и настроенный в 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
Вот собственно и все, можно стартовать виртуальную машину.
Источники:
- www.howtoforge.com/how-to-convert-a-xen-virtual-machine-to-vmware
- serverfault.com/questions/471958/how-to-migrate-from-xen-to-xcp
Автор: madixi