Xen: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
[[Категория:Admin]]
[[Категория:Admin]]
=== Введение ===
=== Введение ===
Xen является систему паравиртуализации. Тоесть системой позволяюзий запускать несколько ядер операционных систем специального вида на одной реальной машине.
Xen является систему паравиртуализации. Тоесть системой позволяюзий запускать несколько ядер операционных систем специального вида на одной реальной машине. Xen сотоит из 3х частей:
==== Hypervisor ==
Это собтвенно xen. Это маленкое ядро(в разы меньше чем ядро опероационной системы) загружаемое первым и управляющиее работой виртуальных машин. Гипервизор исполняется в круге 0. Он умеет упралять только памятью, процессором  и частично ACPI. Также гипервизор предоставлят API гипервызовов(hepercall) с помощью которых ядра операционных систем в виртуальных машинах могут с ним общаться. Загрузившись гипервизор загружает ядро dom0.
==== Слова ====
==== Слова ====
Простая задача: x86_64 система на базе altlinux server 4.0, хотелось бы завести под нее xen-ядро. Благодаря Михаилу Якушину большинство работ уже сделано, осталось решить вопрос загрузки. Проблема в том что для x86_64 загрузчик grub не собирается. А на текущий момент именно grub-единственно легкий способ загрузки xen-ядер.
Простая задача: x86_64 система на базе altlinux server 4.0, хотелось бы завести под нее xen-ядро. Благодаря Михаилу Якушину большинство работ уже сделано, осталось решить вопрос загрузки. Проблема в том что для x86_64 загрузчик grub не собирается. А на текущий момент именно grub-единственно легкий способ загрузки xen-ядер.

Версия от 13:27, 18 августа 2008

Введение

Xen является систему паравиртуализации. Тоесть системой позволяюзий запускать несколько ядер операционных систем специального вида на одной реальной машине. Xen сотоит из 3х частей:

== Hypervisor

Это собтвенно xen. Это маленкое ядро(в разы меньше чем ядро опероационной системы) загружаемое первым и управляющиее работой виртуальных машин. Гипервизор исполняется в круге 0. Он умеет упралять только памятью, процессором и частично ACPI. Также гипервизор предоставлят API гипервызовов(hepercall) с помощью которых ядра операционных систем в виртуальных машинах могут с ним общаться. Загрузившись гипервизор загружает ядро dom0.

Слова

Простая задача: x86_64 система на базе altlinux server 4.0, хотелось бы завести под нее xen-ядро. Благодаря Михаилу Якушину большинство работ уже сделано, осталось решить вопрос загрузки. Проблема в том что для x86_64 загрузчик grub не собирается. А на текущий момент именно grub-единственно легкий способ загрузки xen-ядер.

Решение

По хорошему, необходимо собрать grub для 32битной систему, использовать его для создания некого загрузочного cd-диска. Положить на него stage1 stage2. Ставить систему с любым ядром и lilo. Загружаться в эту систему, копировать сd-rom’а /boot/grub на диск, создавать /boot/grub/device.map и /boot/grub/menu.lst, перезагружаться и с помощью волшебного cd-диска устанавливать grub как основной загрузчик системы. типа

root(hd0,1)
setup(hd0)
reboot

http://wpkg.org/Running_Xen_with_LILO http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo http://www.tjd.phlegethon.org/software/#mbootpack

Альтернативное решение

В качестве альтернативного решения можно использовать загрузчик extlinux из пакета syslinux.


Установка Xen в ALT Linux

Пример на основе branch 4.0.

Моя конфигурация такова:

/dev/sda1 — root — 63G /dev/sda2 — swap — 4G

Ставим grub и устанавливаем его:

# apt-get install grub # grub-install /dev/sda

Примерный /boot/grub/menu.lst:

timeout 5
color black/cyan yellow/cyan
default 0

title default
kernel /boot/vmlinuz root=/dev/sda1 vga=normal
initrd /boot/initrd.img

Проверим, что grub грузит текущее ядро:

# reboot

После успешной загрузки ставим ядро и необходимые для работы железа модули:

# apt-get install kernel-image-xen-dom0 kernel-modules-необходимые-xen-dom0 xen-hypervisor xen

Редактируем /boot/grub/menu.lst примерно до такого:

timeout 5
color black/cyan yellow/cyan
default 0

title default
kernel /boot/vmlinuz root=/dev/sda1 vga=normal
initrd /boot/initrd.img

title XEN
kernel /boot/xen.gz dom0_mem=512M
module /boot/vmlinuz-2.6.18-xen-dom0-alt6.M40.1 root=/dev/sda1
module /boot/initrd-2.6.18-xen-dom0-alt6.M40.1.img

Обратите внимание на двойную module — это обязательно.

Перезагружаемся в XEN-ядро, далее:

# service xend start

Проверим, что все в порядке:

[root@wintermute ~]# xm info
host                   : wintermute.tld
release                : 2.6.18-xen-dom0-alt6.M40.1
version                : #1 SMP Tue Mar 4 22:42:44 MSK 2008
machine                : i686
nr_cpus                : 4
nr_nodes               : 1
sockets_per_node       : 2
cores_per_socket       : 1
threads_per_core       : 2
cpu_mhz                : 2392
hw_caps                : bfebfbff:00000000:00000000:00000080:00004400
total_memory           : 4095
free_memory            : 3540
xen_major              : 3
xen_minor              : 1
xen_extra              : .2
xen_caps               : xen-3.0-x86_32p
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xf5800000
xen_changeset          : unavailable
cc_compiler            : gcc version 4.1.1 20070105 (ALT Linux, build 4.1.1-alt11)
cc_compile_by          : builder
cc_compile_domain      : rio.altlinux.org
cc_compile_date        : Tue Mar  4 23:38:33 MSK 2008
xend_config_format     : 4
[root@wintermute ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.feffffffffff       no              vif0.0
                                                        peth0

Поставим xend в автозапуск:

# chkconfig --level 345 xend on

Ставим kernel-image-xen-domU:

# apt-get install kernel-image-xen-domU

Делаем образ машины. Я использовал один из собственноручно приготовленных openvz-темплейтов.

# mkdir -p /xen/alt # dd if=/dev/zero of=/xen/alt.img bs=1M seek=10240 count=0  — создаем 10 ГБ «раздел» для машины # mkfs.ext3 /xen/alt.img # mount -o loop /xen/alt.img /xen/alt/ # cd /xen/alt && tar xf /altlinux-4.0.tar.gz

Поставим внутрь будущей виртуальной машины domU-ядро:

# chroot /xen/alt/ /bin/bash # vim /etc/resolv.conf  — установим нужный nameserver # vim /etc/apt/sources.list  — установим правильный репозиторий (можно пропустить, если устраивает тот, что преднастроен внутри контейнера) # apt-get update && apt-get install kernel-image-xen-domu

Поправим /etc/fstab в чруте, чтобы выглядело примерно так:

/dev/hda1       /               ext3    defaults    0       1

Выходим из чрута:

# exit

Отмонтируем чрут: # umount /xen/alt

Ставим kernel-image-xen-domU в dom0-систему:

# apt-get install kernel-image-xen-domU

Пишем конфигурационный файл /etc/xen/alt:

kernel = "/boot/vmlinuz-2.6.18-xen-domU-alt6"
memory = 256
name = "alt"
root = "/dev/hda1 ro"
extra = "xencons=tty"
disk = [ 'file:/xen/alt.img,hda1,w' ]

Пробуем запустить: # xm create -c alt

В конце концов должен выдать приглашение на логин, куда собственно и нужно логиниться.

Для выхода из консоли нажать Ctrl-].

См. также