[Из песочницы] Миграция виртуальных машин с Xen 3.2 на XenServer 6.2 в Hetzner

Немного предыстории 52a2417a32e50ff564fb95c819413bca.gif В 2010 году для частного проекта я завел себе небольшой выделенный сервер на hezner.de. Время шло, железо совершенствовалось, дистрибутивы Linux снимались с тех. поддержки, появлялись новые задачи и возможности, а ресурсов для полного апгрейда софта на сервере катастрофически не хватало.Так как старый сервер был виртуализован, появилась мысль взять новый сервер и смигрировать всё старое хозяйство на него, тем более, что у hetzner появился сервер EX40 по интересной цене. По сравнению со старым X3 стоимость аренды вырастала незначительно (около 8 евро, если платить без VAT), но в плане производительности это был огромный прорыв. Заняться миграцией мешало отсутствие большого кол-ва свободного времени и немного стоимость инсталляции (Setup fee) за сервер.

Пару недель назад я случайно обнаружил, что Hetzner в июле проводит акцию и отдает данные железки без Setup fee. Лень и жаба были побеждены, да и появилось немного свободного времени, чтобы осуществить сабжевый процесс.

Акция проводится только в июле, так что, кому нужно — налетай, не скупись, покупай живопись!

Установка XenServer Про установку и настройку XenServer написано много, поэтому данный момент можно опустить. Подробная инструкция по установке и настройке приведена также в Wiki у hetzner.Дистрибутив XenServer и файл ответов я разместил на старом сервере, со скоростью установки проблем не было.

Сразу после установки XenServer, я рекомендую добавить непривилегированного пользователя и закрыть доступ пользователю root к ssh, а также закрыть доступ к серверу для всех сетей кроме своих (если это, конечно, возможно). В дальнейшем можно на одну из виртуалок установить OpenVPN и использовать все преимущества управления через VPN. После настройки этих простейших механизмов защиты сервера можно спокойно приступать к препарации пациента.

Диски (кстати, мне достались новые) рекомендую объединить в RAID и разбить с таким учетом, чтобы оставалось ещё немного места для подключения к dom0 в качестве хранилища ISO образов, бэкапов, заливки обновлений ПО и тд.

За прошедший год, с момента релиза 6.2, вышло много обновлений, поэтому сразу после установки XenServer крайне рекомендуется обновить ПО и установить все патчи. Начинать лучше с SP1, после установки которого cписок патчей можно посмотреть через XenCenter и скачать с web по указанным ссылкам (меню Tools/Check for Updates).Автоматическое обновление, если Вы не купили ТП, через XenCenter невозможно. Необходимо использовать CLI.Для обновления ПО нужно скопировать все патчи в dom0, распаковать и последовательно для каждого патча выполнить следующие команды:

xe patch-upload file-name=/mnt/disk/ПАТЧ1.xsupdate xe patch-pool-apply uuid=UUID_вывод_предудущей_команды После установки обновлений требуется перезапустить сервисы командой: xe-toolstack-restart Список установленных патчей можно проверить командой: xe patch-list Версия XenServer 6.2 по умолчанию использует Open vSwitch, поэтому 99% статей и комментариев по настройке сетевого окружения не полностью подходят (часть про настройку сетевого интерфейса xebr0:1, хотя, наверное, можно жить с dummy интерфейсом). Обходится эта проблема достаточно просто: в XenCenter можно добавить дополнительные локальные сети и интерфейсы (необходимо выбрать сервер и открыть вкладку Networking).После настройки дополнительной сети не забудьте настроить iptables (Firewall и NAT) для общения с внешним миром (если используются приватные сети).Миграция виртуальных машин На момент появления идеи миграции виртуальных машин, мой склероз помнил, что я виртуализовал свои серверы с использованием LVM (почти угадал :). К счастью, зайдя на машину я обнаружил, что у меня установлен Xen 3.2 (использовалась паравиртуализация), и это значительно упрощало задачу.Для импорта виртуальных машин я воспользовался скриптом xva.py, который можно скачать тут.На сервере Xen 3.2 для каждой виртуальной машины, необходимо выполнить команду:

python xva.py -c /etc/xen/VM.cfg -n --sparse -s IP_XenServer --username=root --password=«Password» Виртуальная машина автоматически будет перенесена на новый сервер за несколько минут. Экспорт через файл происходил во много раз дольше (точно время не замерял, но VM с диском на 32Gb экспортировалась более часа).Если сразу после запуска скрипт вываливается с сообщением Unauthorised response from server. Exiting проверьте, не намудрили ли Вы с паролем. У меня была проблема с точкой (».»).Если после успешного завершения экспорта/импорта вы получили сообщение приведенное ниже, то нужно будет ещё кое-что подкрутить на dom0 и в виртуальной машине.

VM Successfully streamed With the options you supplied, you will need to SFTP/SCP the kernel/initrd to the server manually Create the /boot/guest/208f7a74–126e-11e4–8a8c-002185153241 directory Copy /boot/vmlinuz-2.6.26–2-xen-amd64 to /boot/guest/208f7a74–126e-11e4–8a8c-002185153241/vmlinuz and copy /boot/initrd.img-2.6.26–2-xen-amd64 to /boot/guest/208f7a74–126e-11e4–8a8c-002185153241/initrd Copy these to _all_ the nodes in the pool А именно, скопировать файлы vmlinuz-* и initrd-* из dom0 Xen 3.2 на dom0 XenServer.Так как мне нужно было перенести 3 виртуальных машины с одним ядром, то я не стал создавать для них отдельные каталоги (может быть и зря), а создал один каталог /boot/guest/lenny в который и поместил указанные файлы.Для того, чтобы данные виртуальные машины могли грузиться, необходимо правильно настроить параметры PV-kernel, PV-ramdisk. В моем случае пришлось ещё очистить параметр PV-bootloader, который мешал работе.Для настройки параметров виртуальных машин необходимо выполнить следующие команды:

xe vm-param-set uuid=UUID_VM PV-bootloader xe vm-param-set uuid=UUID_VM PV-kernel=»/boot/guest/lenny/vmlinuz» xe vm-param-set uuid=UUID_VM PV-ramdisk=»/boot/guest/lenny/initrd» UUID_VM — идентификатор виртуальной машины (можно посмотреть командой xe vm-list)Теперь можно пытаться загрузиться. В случае неудачи не выключайте виртуальную машину, а посмотрите путь к корневому устройству, под которыми видны диски/разделы в вашей виртуальной машине (в XenCenter вкладка Storage, параметр «Device Path»). Необходимо отредактировать параметр PV-args или через CLI или XenCenter. Я установил следующие параметры:

root=/dev/xvda ro clocksource=jiffies Пытаемся грузиться ещё раз.После успешной загрузки ОС не забудьте поправить файл /etc/fstab (указать правильное расположение swap), а также установить XenServer Tools. Для Debian Lenny подходит пакет xe-guest-utilities_6.2.0–1137_amd64.deb.Вроде бы всё. Осталось только до конца месяца забэкапить старый сервер и отдать обратно Hetzner.

© Habrahabr.ru