Xen (Русский)

From ArchWiki
Jump to: navigation, search

Tango-dialog-warning.pngИнформация в этой статье или разделе устарелаTango-dialog-warning.png

Причина: rc.d references. Needs update, see Systemd (Русский). (Обсудить)

Этот документ описывает установку Xen внутри Arch Linux.

Что такое Xen?

По утверждению команды разработки Xen: "Xen, мощный гипервизор промышленного стандарта с открытым кодом для виртуализации, предлагает мощный, эффективный и безопасный набор возможностей для виртуализации в архитектурах x86, x86_64, IA64, PowerPC, и других. Он поддерживает широкий диапазон гостевых операционных систем включая Windows®, Linux®, Solaris®, и различные версии BSD."

Гипервизор Xen - это тонкий уровень программного обеспечения, которое эмулирует компьютерную архитектуру. Он запускается загрузчиком и позволяет нескольким операционным системам работать одновременно поверх него. После загрузки гипервизор Xen запускает "dom0" (означает "домен 0"), или привилегированный домен, на котором в нашем случае запущено модифицированное ядро Linux (другие возможные операционные системы для dom0 NetBSD и OpenSolaris). Ядро dom0 в AUR в настоящее время базируется на ближайшей версии ядра Linux 2.6, а еще есть более нестабильная -dev версия; аппаратное обеспечение, конечно, должно поддерживаться этим ядром для того чтобы запускать Xen. После запуска dom0, один или больше "domU" (непривилегированный) доменов могут быть запущены и управляться из dom0.

Установка Xen

Установка необходимых пакетов

Перед компиляцией xen убедитесь, что у вас установлены gcc, make, patch, и python2.

pacman -S gcc make patch python2

Новый пакет xen содержит Xen 4 и разрешает практически все необходимые зависимости автоматически. Но вследствие изменений в официальной версии Python для Arch Linux, некоторые старые скрипты выдают ошибки при запуске. Для решения этого загрузите python2.5 из AUR.

И когда Вам будет предложено редактировать PKGBUILD (предпочтительнее nano), не следует забывать заменить вот это:

make PYTHON=python2 DESTDIR=$pkgdir  install-xen
make PYTHON=python2 DESTDIR=$pkgdir  install-tools
make PYTHON=python2 DESTDIR=$pkgdir  install-docs

на вот это:

make PYTHON=python2.5 DESTDIR=$pkgdir  install-xen
make PYTHON=python2.5 DESTDIR=$pkgdir  install-tools
make PYTHON=python2.5 DESTDIR=$pkgdir  install-docs

sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2.5|" \
-e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2.5|" \
$(find $pkgdir -name '*.py')

Xen-tools - это набор простых perl-скриптов, который позволяет легко создавать новые гостевые домены Xen. xen-toolsAUR[ссылка недействительна: сохранено в aur-mirror] также есть в AUR.

Следующий шаг - скомпилировать и установить ядро dom0. Для этого скомпилируйте пакет kernel26-xen-dom0 из AUR.


Обратите внимание: в настоящее время kernel26-xen-dom0 отмечен в AUR как устаревший и не обновляется до 2.6.36. Так что Вам следует пройтись по новым параметрам 2.6.36 и согласиться использовать значения по умолчанию (или что еще Вы захотите) - так что просто нажмимайте enter всякий раз когда Вас спросят.

Установка закончена. Теперь Вы можете настроить Grub и загрузиться в ядро, которое только что было построено.

Настройка GRUB

Grub должен быть настроен так, чтобы после загрузки гипервизора Xen загружалось ядро dom0. Добавьте следующие строки в /boot/grub/menu.lst:

title Xen with Arch Linux
root (hd0,X)
kernel /xen.gz dom0_mem=524288
module /vmlinuz26-xen-dom0 root=/dev/sdaY ro console=tty0
module /kernel26-xen-dom0.img

здесь X и Y - соответствующие номера для Вашего диска; а dom0_mem, console и vga - опциональные настраиваемые параметры. Одна примечательная деталь: Вы также можете использовать LVM. Так что вместо /dev/sdaY Вы также можете указать /dev/mapper/такойто_lvm.

Стандартное ядро arch можно использовать для загрузки доменов domU. Для того чтобы это сделать следует добавить 'xen-blkfront' в раздел модулей в /etc/mkinitcpio.conf:

MODULES="... xen-blkfront ..."

Теперь, следующий шаг - загрузка в ядро xen.

Следующий шаг: запуск xend:

# /etc/rc.d/xend start

При использовании xen рекомендуется назначать фиксированный объем памяти. Также, если гостевые системы активно используют ввод-вывод, может быть полезным выделить (зафиксировать) один из процессорос только для dom0. Пожалуйста посмотрите другую XenCommonProblems секцию вики страницы "Как выделить одно ядро процессора (или ядра)только для dom0?" для дополнительной информации.

Настройка GRUB2

Работает точно так же как с Grub, но здесь Вам нужно использовать команду 'multiboot' вместо использования 'kernel'. Так что это будет:

# (2) Arch Linux(XEN)
menuentry "Arch Linux(XEN)" {
    set root=(hd0,X)
    multiboot /boot/xen.gz dom0_mem=2048M
    module /boot/vmlinuz26-xen-dom0 root=/dev/sdaY ro
    module /boot/kernel26-xen-dom0.gz
}

Если у Вас получилось загрузиться в ядро dom0, тогда можно продолжать.

Примеры добавления domU

Основная идея добавления domU такова. Мы должны получить ядра domU, выделить пространство для виртуального жесткого диска, создать файл конфигурации для domU, и затем запустить domU с помощью xm.

$ mkfs.ext4 /dev/sdb1    ## форматировать раздел
$ mkdir /tmp/install
$ mount /dev/sdb1 /tmp/install
$ mkdir -p /tmp/install/{dev,proc,sys} /tmp/install/var/lib/pacman /tmp/install/var/cache/pacman/pkg
$ mount -o bind /dev /tmp/install/dev
$ mount -t proc none /tmp/install/proc
$ mount -o bind /sys /tmp/install/sys
$ pacman -Sy -r /tmp/install --cachedir /tmp/install/var/cache/pacman/pkg -b /tmp/install/var/lib/pacman base
$ cp -r /etc/pacman* /tmp/install/etc
$ chroot /tmp/install /bin/bash
$ vi /etc/resolv.conf
$ vi /etc/fstab
    /dev/xvda               /           ext4    defaults                0       1

$ vi /etc/inittab
    c1:2345:respawn:/sbin/agetty -8 38400 hvc0 linux
    #c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux
    #c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux
    #c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux
    #c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux
    #c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux
    #c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux


$ exit  ## exit chroot
$ umount /tmp/install/dev
$ umount /tmp/install/proc
$ umount /tmp/install/sys
$ umount /tmp/install

If not starting from a fresh install and one wants to rsync from an existing system:

$ mkfs.ext4 /dev/sdb1    ## форматировать раздел lv
$ mkdir /tmp/install
$ mount /dev/sdb1 /tmp/install
$ mkdir /tmp/install/{proc,sys}
$ chmod 555 /tmp/install/proc
$ rsync -avzH --delete --exclude=proc/ --exclude=sys/ old_ooga:/ /tmp/install/

$ vi /etc/xen/dom01     ## создаем конфиг-файл
    #  -*- mode: python; -*-
    kernel = "/boot/vmlinuz26"
    ramdisk = "/boot/kernel26.img"
    memory = 1024
    name = "dom01"
    vif = [ 'mac=00:16:3e:00:01:01' ]
    disk = [ 'phy:/dev/sdb1,xvda,w' ]
    dhcp="dhcp"
    hostname = "ooga"
    root = "/dev/xvda ro"

$ xm create -c dom01

Аппаратная Виртуализация

Если мы хотим для наших domUs аппаратную виртуализацию, хост-машина должна поддерживать виртуализацию либо Intel-VT либо AMD-V. Для того чтобы проверить это, запустите следующие команды на хост-машине:

Для процессоров Intel:

grep vmx /proc/cpuinfo

Для процессоров AMD:

grep svm /proc/cpuinfo

Если ни одна из вышеуказанных команд не дает вывода, тогда скорее всего эти возможности не поддерживаются и Ваше оборудование неспособно запускать гостевые ОС с аппаратной виртуализацией (HVM). Также может быть что процессор на хост-машине поддерживает одну из этих возможностей, но функциональность запрещена по умолчанию в системном БИОСе. Чтобы проверитьь это, откройте меню БИОС во время загрузки и поищите опции связанные с поддержкой виртуализации. Если такая опция есть и запрещена, то разрешите ее, загрузите систему и повторите предыдущие команды.

Arch как гостевая система (режим паравиртуализации)

Чтобы использовать паравиртуализацию нужно установить:

Измените режим на PV с помощью команд: (в dom0):

 xe vm-param-set uuid=<vm uuid> HVM-boot-policy=""
 xe vm-param-set uuid=<vm uuid> PV-bootloader=pygrub

Отредактируйте /boot/grub/menu.lst и добавьте kernel26-xen:

 # (1) Arch Linux (domU)
 title  Arch Linux (domU)
 root   (hd0,0)
 kernel /boot/vmlinuz26-xen root=/dev/xvda1 ro console=hvc0
 initrd /boot/kernel26-xen.img

Добавьте следующие модули xen в Ваш initcpio, добавив в MODULES в /etc/mkinitcpio.conf: "xen-blkfront xen-fbfront xenfs xen-netfront xen-kbdfront" и перекомпилируйте Ваш initcpio:

 mkinitcpio -p kernel26-xen

Раскомментируйте следующую строку в файле /etc/inittab для того чтобы разрешить консольный вход:

 h0:2345:respawn:/sbin/agetty -8 38400 hvc0 linux

xe-guest-utilities

ЧТобы использовать xe-guest-utilities, добавьте точку монтирования xenfs в /etc/fstab:

 xenfs                  /proc/xen     xenfs     defaults            0      0

и добавьте xe-linux-distribution в раздел DAEMONS файла /etc/rc.conf.

Примечания

  • pygrub не показывает меню загрузки. И некоторые версии pygrub не поддерживают сжатые lzma обычные ядра. Смотрите https://bbs.archlinux.org/viewtopic.php?id=118525
  • обычное ядро i686 не поддерживает xen вследствие highmem, но ядро x86_64 поддерживает. Смотрите https://bugs.archlinux.org/task/24207?project=1. Но все же Вы можете использовать i686/x86_64 kernel26-xen как показано выше, если о но сжато gzip, а не lzma или xz
  • Чтобы избежать ошибок связанных с hwclock, установите HARDWARECLOCK="xen" в /etc/rc.conf (вообще Вы можете использовать здесь любое значение кроме "UTC" and "localtime")
  • Если Вы хотите вернуться к аппаратной виртуальной машине, установите HVM-boot-policy="BIOS order"
  • Если при загрузке Xen ядро вылетает в panic, и предлагает 'use apic="debug" and send an error report', попробуйте установить noapic в строке kernel в menu.lst

Инструменты Управления Xen

The "Virtual Machine Manager" application is a desktop user interface for managing virtual machines. It presents a summary view of running domains, their live performance & resource utilization statistics. The detailed view graphs performance & utilization over time. Wizards enable the creation of new domains, and configuration & adjustment of a domain's resource allocation & virtual hardware. An embedded VNC client viewer presents a full graphical console to the guest domain.

virt-manager-lightAUR[ссылка недействительна: сохранено в aur-mirror]

Полезные Пакеты

Поскольку в AUR много разных пакетов, и Вы можете потратить много времени, понимая, какие из них нужны, вот маленький набор самых (интересных) пакетов xen:

Ресурсы

  • Домашняя страница Xen: [1]
  • Xen Вики: [2]
  • Патчи ядра Xen: [3]
  • Руководство Виртуатопии как заставить Windows Server 2008 работать с Xen: [4]