Немного предыстории
В 2010 году для частного проекта я завел себе небольшой
Так как старый сервер был виртуализован, появилась мысль взять новый сервер и смигрировать всё старое хозяйство на него, тем более, что у 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.
Автор: Homas