Конвертация VM из Xen в Proxmox

Конвертация VM из Xen в Proxmox

Что нам понадобиться для конвертации:

  1. Компьютер под управлением ОС Windows XP или выше.
  2. Машина с уже установленным Proxmox
  3. Программы на машине с ОС Windows для управления Proxmox — putty (ssh подключение), WinSCP (для графического копирования, не обязательно), XenCenter для создания образа WM.

 

Сначала сделаем образ VM из Xen.

Устанавливаем программу XenCenter. после установки вводим IP нашего сервера, подключаемся и выключаем виртуальную машину, которую будем конвертировать. Нажимаем правой кнопкой мыши по выключенной машине и нажимаем Export. Появляется окно, приведенное ниже. Введем имя (Name) нашего будущего образа, место хранения файла (Location), и ОБЯЗАТЕЛЬНО формат файла (Format) — XVA File (*.xva).

Нажимаем далее.

xen1[1]
Окно экспорта Xen
В следующем окне можно сделать экспорт нескольких VM, однако тип файлов .XVA не поддерживает данную функцию, пропускаем клавишей Next, затем жмем Finish и ждем завершения копирования.

Теперь рассмотрим несколько способов переноса VM на Proxmox.

Способ первый, QEMU.

Самый простой способ миграции

Для начала скопируем получившийся образ VM на Proxmox. Тут есть несколько способов.

Копируем через WinSCP

WinSCP очень простая графическая программа под ОС Windows. Скачать можно с официального сайта или с этого сайта. При запуске выйдет окно авторизации, введем ip сервера proxmox и логин\пароль.

xen2[1]
Окно авторизации WinSCP
После авторизации у вас выйдет окно, которое не должно вызвать трудностей у людей знакомых с mc или total comander. Просто перетаскиваем файл образа из левого поля в правое и ждем.

xen3[1]
Основное окно WinSCP

Копируем средствами linux.

Если у вас нет машины с Windows — копируем средствами Linux, ни чего трудного в этом нет.
На машине, которая принемает файл пишем команду
nc -l -p 3333 > exemple.raw
На машине, которая будет передавать файл пишем команду
cat exemple.raw | nc-q 0 IPADRESS_HERE 3333
3333 — номер свободного порта.
Осталось подождать.

Начнем конвертацию.

Начнем конвертацию на машине с Proxmox. Для это перейдем в папку, в которую вы сохранили образ.Например:
cd /home/img
Затем начнем конвертацию.
qemu-img convert -O raw input_file.xva output.raw
Ждем завершения.
Теперь создадим новую виртуальную машину в Proxmox, указываем тип ОС как у нашей WM. Формат диска указываем как .raw .
После создания WM заменим образ, выполним команду.
cp output.raw /var/lib/vz/<НОМЕР ВАШЕЙ VM в PROXMOX>/ ПОСМОТРИ ПРАВИЛЬНЫЙ ПУТЬ

Теперь запускаем нашу VM на Proxmox. Готово. Если запуск не удался — читайте дальше, рассмотрим самые распространенные проблемы.

Способ второй, xva-img-master.

На сервере proxmox установим xva-img-master командой:
wget https://github.com/eriklax/xva-img/archive/master.zip
unzip master.zip
cd xva-img-master
cmake .
sudo make install

Если при компиляции выведутся ошибки библиотек С++, выполните
apt-get install build-essential libssl-dev
Теперь распакуем .xva файл.
mkdir my-virtual-machine
tar -xf -C my-virtual-machine
chmod -R 755 my-virtual-machine

Chmod -R — команда раздачи прав. 755 означает, что все могут читать и выполнять файлы. 777 — все могут сохранять и редактировать.

Wget — команда скачивания файла с определенного URL. Удобна для скачивания исходников каких-либо программ.

Перейдем в папку после окончания распаковки.
cd /my-virtual-machine
Видим папку с названием Ref:<цифры> . Данные цифры уникальны для каждой машины.
Теперь выполним конвертацию.
xva-img -p disk-export my-virtual-machine/Ref\:<ваша цифра>/ disk.raw
Осталось заменить данным диском файл существующей виртуалки.

Частые проблемы при конвертации.

Не грузится GRUB после переноса WM.

Если вы переносили linux систему, загрузчик которой является GRUB — он зависнет на сообщении Welcome to GRUB! Давайте исправим это!

У рабочей виртуалки (желательно максимально похожие версии ОС) второй диск. И физически (не через интерфейс proxmox) удаляем его. За место него создадим симлинк на наш не рабочий диск.

Симлинк (символьная ссылка) — специальный файл в файловой системе, для которого не формируются никакие данные, кроме одной текстовой строки с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу).

Целью ссылки может быть любой объект: например, другая ссылка, файл, каталог или даже несуществующий файл (в последнем случае при попытке открыть его должно выдаваться сообщение об отсутствии файла). Ссылка, указывающая на несуществующий файл, называется висячей или битой.

rm /mnt/nfs/images/200/vm-200-disk-2.raw
ln -s /mnt/nfs/images/143/vm-143-disk-1.raw /mnt/nfs/images/200/vm-200-disk-2.raw

Теперь монтируем диск с системой и копируем туда ядро, драйвера, загрузчик. Данный набор исключит любые дальнейшие проблемы с загрузкой. Примерно так, папки меняются у вас в зависимости от версии ядра.
mkdir /mnt/vdb1
mount /dev/vdb1 /mnt/vdb1
cp /boot/vmlinuz-3.2.0-4-amd64 /mnt/vdb1/boot/vmlinuz-3.2.0-4-amd64
cp /boot/initrd.img-3.2.0-4-amd64 /mnt/vdb1/boot/initrd.img-3.2.0-4-amd64
cp /boot/System.map-3.2.0-4-amd64 /mnt/vdb1/boot/System.map-3.2.0-4-amd64
cp -r /lib/modules/3.2.0-4-amd64 /mnt/vdb1/lib/modules

Теперь отключаем виртуалку со симлинком (можно удалить симлинк) и загружаем GRUB в режиме восстановления (зависит от вашего дистрибутива, проверьте в гугле). Пишем команды.
root (hd0,msdos1)
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/vda1
initrd /boot/initrd.img-3.2.0-4-amd64
boot

Это ручной запуск GRUB. После вводы данных команд ОС загрузится.Осталось только сохранить результат.
grub-install /dev/vda
apt-get update
apt-get install linux-image-2.6.32-5-486
reboot

4 Replies to “Конвертация VM из Xen в Proxmox”

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

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