Xen: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 24: | Строка 24: | ||
==== Установка GRUB ==== | ==== Установка GRUB ==== | ||
GRUB достаточно плохо ставиться из линукса, поэтому лучше его поставить из него самого. | GRUB достаточно плохо ставиться из линукса, поэтому лучше его поставить из него самого. | ||
Для этого берём от [ftp://ftp.altlinux.ru/pub/people/silicium/grub.iso.bz2 сюда] | |||
==== Слова ==== | ==== Слова ==== | ||
Простая задача: x86_64 система на базе altlinux server 4.0, хотелось бы завести под нее xen-ядро. Благодаря Михаилу Якушину большинство работ уже сделано, осталось решить вопрос загрузки. Проблема в том что для x86_64 загрузчик grub не собирается. А на текущий момент именно grub-единственно легкий способ загрузки xen-ядер. | Простая задача: x86_64 система на базе altlinux server 4.0, хотелось бы завести под нее xen-ядро. Благодаря Михаилу Якушину большинство работ уже сделано, осталось решить вопрос загрузки. Проблема в том что для x86_64 загрузчик grub не собирается. А на текущий момент именно grub-единственно легкий способ загрузки xen-ядер. |
Версия от 14:10, 18 августа 2008
Введение
Xen является систему паравиртуализации. Тоесть системой позволяюзий запускать несколько ядер операционных систем специального вида на одной реальной машине. Xen сотоит из 3х частей:
Hypervisor
Это собтвенно xen. Это маленкое ядро(в разы меньше чем ядро опероационной системы) загружаемое первым и управляющиее работой виртуальных машин. Обычно находиться в /boot/xen.gz. Гипервизор исполняется в круге 0. Он умеет упралять только памятью, процессором и частично ACPI. Также гипервизор предоставлят API гипервызовов(hypercall) с помощью которых ядра операционных систем в виртуальных машинах могут с ним общаться. Загрузившись гипервизор загружает ядро dom0.
Domain 0
Он же dom0 - перевлигерованная виртуальная машина, имющая доступ к практически всему железу и имеющая права давать команду гипервизуроу запустить новые виртуальные машины. На практитке это обычная Linux система, единственное чем она ограничена это объёмом памяти. Обычно в такой системе установлен минимальный набор программ, демон управления xen, утилиты для упраления xen, утилиты для создания виртуальных машин, и программный сетевой мост (bridge) который позволяет другим виртуальным машинам поподать в сеть. Поскольку xen пердоставляет машинам виртуальные жесткие диски, эти диски экспортируются из dom0, обычно это либо файлы подключеные через loopback/blktap или LVM тома.
Domain U
domU - это собственно виртуальная машина запускаемая dom0. Получает свой участок памяти, жёсткие диски и сетевой интерфейс. Может быть запущена, остановлена, преостановлена, перезагруженна, задамплена на диск, перемещена в том чесле без остановки на другую машину(live migration).
В чём отличеие в ALT Linux ядер dom0 от domU
Ядро dom0 может работать как в dom0 так и в domU собрана со всеми стандартными опциями наших ядер. DomU ядра могут работать только в domU поддеживают только PCI устройства (так как их можно прокинуть в domU) и имеет вкомпелённую поддержку ext3 и жестких дисков. Сделано это для того, чтобы в большенстве случаев domU ядра могли работать без initrd.
Установка
Установка загрузчика
Ещё немного теории
Проблема в том что xen имеет загрузочный формат multiboot. Это формат позволяет загружать ядро, и пакеты с модулями прямо в загрузчике. Роль ядра у нас выполняет гипервизор, роль модулей ядро линукса, initrd и возможно файл с политиками. Зачем это? Гипервизор не умеет работать с жесткими дисками поэтому загручик должен загрузить ядро dom0 и его initrd в память, и делает он это обычно до запуска гипервизора. Гипервизор загрузившись находит и запускет ядро dom0, а оно уже вытягивет initrd как обычное ядро линукса.
Проблема в том что вопервых на практике единственным нормальным загручиком работющим с multiboot явлется grub. Хотя для сетевой загрузки можно использовать pxelinux, его аналог extlinux при локальной загрузке крайне неудобен.
Дефалтным загручиком в ALT Linux является lilo, grub существует но плохо поддеживается и в данный момент поддеживается только под i586. Поэтому для начала нам надо установить GRUB.
Установка GRUB
GRUB достаточно плохо ставиться из линукса, поэтому лучше его поставить из него самого. Для этого берём от сюда
Слова
Простая задача: 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-].