Содержание
XEN — это монитор виртуальных машин или гипервизор с поддержкой паравиртуализации (para-virtualization) для процессоров x86 архитектуры, распространяющийся с открытым исходным кодом. Xen может организовать совместное безопасное исполнение нескольких виртуальных машин на одной физической системе с производительностью близкой к непосредственной (native).
Ubuntu ориентирована на использование KVM вместо Xen. KVM считается более перспективным, но ещё немного сырым продуктом. Его активно развивает Red Hat, которая тоже перешла на него с Xen в RHEL6. Единственное преимущество Xen над KVM состоит в поддержке паравиртуализации (т. е. виртуализации с внесением изменений в гостевую систему). Стоит заметить, что преимущество это довольно весомое, и часто позволяет получить производительность намного большую, чем полная (аппаратная) виртуализация. Кроме того, паравиртуализация возможна на любом процессоре. А это значит, что возможно создать полноценный и довольно производительный сервер виртуализации, даже на устаревшем оборудовании.
Режим паравиртуализации экономит ресурсы системы в разы по сравнению с полной виртуализацией (KVM).
Стоит отдельно отметить возможность быстрого и легкого «проброса» любых устройств в виртуальную машину. Так например, возможен проброс всяческих usb-принтеров и hasp-токенов. Возможен проброс видео-карт и остального оборудования. такой проброс позволит полноценно играть в windows игры на гостевой windows системе (не забывайте, что на нее тоже требуется лицензия), не перезагружая компьютер.
Предвзятое отношение со стороны Canonical к технологиям виртуализации отличным от KVM совершенно непонятно. Потому как некоторые задачи совершенно не требуют таких расходов на ресурсы, какие требуются для KVM. Полноценное использование XEN из коробки доступно только с версии 11.10 в связи с тем, что XEN включен в чистое ядро linux.
Ссылки
Xen на Ubuntu (11.10) шаг за шагом
Первоначальная установка
- Проще настройку производить в режиме администратора
sudo -i
- Сразу стоит настроить сеть
nano /etc/network/interfaces /etc/init.d/networking restart
- И удалить Network Manager (иначе он помешает корректной работе сети) ( да ну )
apt-get purge network-manager
- Ставим пакеты
apt-get install \ xen-hypervisor-4.1-amd64 \ xen-hypervisor-4.1-i386 \ xen-utils-4.1 \ xenwatch \ xen-tools \ xen-utils-common \ xenstore-utils
- Правим конфиг
nano /etc/xen/xend-config.sxp
- раскомментим
#(network-script network-bridge)
- Так-же необходимо внести изменения в Grub
nano /etc/default/grub
- Увеличиваем кол-во loop
GRUB_CMDLINE_LINUX="max_loop=64"
- Переименовываем 10_linix_xen в 09_linix_xen
mv /etc/grub.d/10_linix_xen /etc/grub.d/09_linix_xen
- И обновляем
grub update-grub
- Перезагружаем систему
reboot
- Проверяем
sudo xm info
Должна выдать информацию о нашем xen
- Проверяем наши бриджи
sudo brctl show
Настройка xen-tools
Создаем Image-Based Virtual Machines
Правим /etc/xen-tools/xen-tools.conf
# Все параметры могут быть изменены флагами командной строки # Расположение файлов xen dir = /mnt/xen # Метод установки install-method = debootstrap # Размер диска по умолчанию size = 2Gb # Размер памяти по умолчанию memory = 256Mb # Размер Swap swap = 256Mb # Тип файловой системы fs = ext3 # Дистрибутив по умолчанию dist = lenny # dist = `xt-guess-suite-and-mirror --suite` # Тип образа (может быть и full с файловой таблицей) image = sparse # Настройки сети gateway = 192.168.1.1 netmask = 255.255.255.0 broadcast = 192.168.1.255 # Ядро kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` # Адрес репозитория mirror = http://mirror.yandex.ru/ubuntu/ # Параметры к дисковым системам ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiserfs_options = defaults btrfs_options = defaults serial_device = hvc0 #default # Наименование диска disk_device = xvda # Генерировать случайный пароль root или нет genpass=0
Правим /usr/bin/xen-create-image
В процедуре exportEnvironment закомментируем строчку:
# $CONFIG{ 'mirror' } = $CONFIG{ $distMirror };
Это делается для того, чтоб bootstrap не игнорировал –mirror. Иначе он начинает пробовать ставить из репозитория, из которых ставился dom0.
Скрипты инициализации для xen-tools
Хранятся в /usr/lib/xen-tools. Особенно интересным будет /usr/lib/xen-tools/lenny.d/20-setup-apt.
В /usr/lib/xen-tools/lenny.d/20-setup-apt можно добавить что-то типа:
deb ${mirror} ${dist}-backports main multiverse restricted universe deb ${mirror} ${dist}-proposed main multiverse restricted universe deb ${mirror} ${dist}-security main multiverse restricted universe deb ${mirror} ${dist}-updates main multiverse restricted universe deb ${mirror} ${dist} main multiverse restricted universe
В /usr/lib/xen-tools/squeeze.d/20-setup-apt можно добавить что-то типа:
deb ${mirror} ${dist}-proposed-updates contrib main non-free deb ${mirror} ${dist}-updates contrib main non-free deb ${mirror} ${dist} contrib main non-free
Создаем структуру каталогов
mkdir -p /mnt/xen/cfg /mnt/xen/domains /mnt/xen/skel
Создаем нашу первую виртуальную машину
xen-create-image --pygrub \ --password="123456" \ --hostname=testServer \ --size=4G \ --swap=256Mb \ --ip=192.168.1.155 \ --memory=512Mb \ --arch=amd64 \ --role=udev \ --dist=lenny \ --mirror="http://mirror.yandex.ru/ubuntu" mv /etc/xen/testServer.cfg /mnt/xen/cfg/ xm create /mnt/xen/cfg/testServer.cfg xm console testServer
Как мы видим: в командной строке копируются параметры из /etc/xen-tools/xen-tools.conf. Сделала это специально, чтоб указать что задавать оные можно и там и здесь. Приоритет имеют параметры из строки.
Управление
Управление виртуальными машинами осуществляем через xm.
# Например xm list xm destroy vitDom11 xm create /mnt/xen/cfg/virtDom111.cfg xm console virtDom111