- Гипервизор - небольшое ядро, осуществляющее управление памятью и процессором,
- dom0 - система, находящаяся под управлением гипервизора, но определяющая политику распределения памяти и процессоров, которую и реализует гипервизор,
- domU - система, находящаяся под управлением гипервизора.
Сервисы Xen, работающие в dom0 и осуществляющие управление гипервизором, написаны на Python. Соответственно, файлы конфигурации являются фактически исходными текстами на языке Python.
Ниже собран мой небольшой опыт работы с этой системой виртуализации. Не описываются настройка репозиториев, настройка сети, фаерволла и другого базового ПО. Описано только то, что имеет непосредственное отношение к настройке виртуализации.
1. Настройка гипервизора
Устанавливаем пакет xen-linux-system:
# apt-get install xen-linux-systemВыставляем приоритет загрузки гипервизора Xen из GRUB:
# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xenДля отмены приоритета загрузки Xen из GRUB можно выполнить следующую команду:
# dpkg-divert --rename --remove /etc/grub.d/20_linux_xenЧтобы настройки GRUB вступили в силу, запустим обновление конфигурации GRUB:
# update-grub2. Настройка хост-системы
Образы гостевых систем будем размещать на логических томах LVM2, поэтому сначала установим утилиты для управления логическими томами:
# apt-get install lvm2Создадим новый физический том на специально выделенном для этого разделе:
# vgcreate vg0 /dev/sda3Установим инструменты для создания образов и управления гостевыми системами:
# apt-get install xen-toolsПропишем в файле /etc/xen-tools/xen-tools.cfg опции, задающие настройки создаваемой по умолчанию виртуальной машины:
# Использовать для образов гостевых систем физический том VG0 lvm = vg0 # Использовать debootstrap для установки системы на гостевой том install-method = debootstrap # Выделить для вновь создаваемой гостевой системы 10 гигабайт на логическом томе size = 10Gb # По умолчанию создавать гостевую систему, которой выделено 2 гигибайта оперативной памяти memory = 2Gb # По умолчанию создавать гостевую систему, которой выделен 1 гигабайт раздела подкачки #noswap = 0 swap = 1Gb # По умолчанию использовать файловую систему ext4 fs = ext4 # Настройки монтирования раздела ext4 ext4_options = noatime,nodiratime,errors=remount-ro # Настройки задают ветку дистрибутива, версию ядра и загрузочного образа dist = `xt-guess-suite-and-mirror --suite` image = sparse kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` pygrub = 1 mirror = `xt-guess-suite-and-mirror --mirror`Все гостевые системы будут подключаться к виртуальному сетевому мосту, соединённому с физической сетевой картой. На самом деле сетевой мост является по сути виртуальным коммутатором, поддерживающим протокол STP, но по сложившейся традиции называется сетевым мостом. Установим утилиты для управления сетевым мостом:
# apt-get install bridge-utilsНастроим интерфейс xenbr0, подсоединив его к физическому сетевому интерфейсу eth0. Для этого впишем в файл /etc/network/interfaces следующие настройки:
auto xenbr0 iface xenbr0 inet static address 10.0.0.1 netmask 255.255.255.0 bridge_ports eth0 bridge_maxwait 03. Создание образа гостевой системы
Для создания образа новой гостевой системы с именем ns, настройками по умолчанию, но с двумя выделенными системе ядрами процессора, введём на хост-системе следующую команду:
# xen-create-image --hostname ns --ip 10.0.0.2 --netmask 255.255.255.0 --gateway 10.0.0.1 --vcpus 2 --dist wheezyПосле создания образа будет выведен пароль пользователя root в только что созданной системе. Его необходимо запомнить или записать и поменять при первом запуске созданного образа.
Теперь можно отредактировать конфигурацию только что созданной гостевой машины /etc/xen/ns.cfg:
vif = [ 'script=vif-bridge, bridge=xenbr0' ]При запуске гостевой машины её первый интерфейс будет подключен к мосту хост-машины xenbr0. Если необходимо создать несколько сетевых интерфейсов, можно перечислить их внутри квадратных скобок через запятую.
4. Управление гостевыми системами
Запуск гостевой машины:
# xm create /etc/xen/ns.cfgПросмотр списка активных гостевых машин:
# xm listПросмотра потребления ресурсов внутри каждой гостевой машины:
# xm topОстановка гостевой машины:
# xm shutdown nsВход на консоль гостевой машины:
# xm console nsДля отключения от консоли можно нажать Ctrl и ] К сожалению, эта же комбинация клавиш используется в telnet, поэтому я предпочитаю сразу настроить сеть и SSH, а дальнейшую настройку гостевой системы осуществлять уже через SSH.
5. Донастройка гостевых систем
Файл конфигурации гостевой системы может выглядеть примерно следующим образом:
# Загрузчик pygrub позволяет передавать в ядро настройки, # подобно тому как это делается при использовании GRUB bootloader = '/usr/lib/xen-4.1/bin/pygrub' # Количество процессорных ядер и объём памяти, выделяемый гостевой системе vcpus = '2' memory = '2048' root = '/dev/xvda2 ro' disk = [ 'phy:/dev/vg0/ns-disk,xvda2,w', # Образ диска находится на томе LVM2 'phy:/dev/sda3,xvda3,w' ] # Том хост-системы монтируется внутри гостевой системы # Имя гостевой системы name = 'ns' # На гостевой системе будут созданы интерфейсы eth0 и eth1, подключенные # соответственно к сетевым мостам хост-системы xenbr0 и xenbr1 vif = [ 'script=vif-bridge, bridge=xenbr0', 'script=vif-bridge, bridge=xenbr1' ] # Что делать с гостевой системой, если она решила выключиться или перезагрузиться on_poweroff = 'destroy' on_reboot = 'restart' # Что делать с гостевой системой, если произошла ошибка на хост-системе on_crash = 'restart' # Отдельно задаём поведение гостевых систем при перезапуске сервиса управления on_xend_start = 'ignore' on_xend_stop = 'ignore'6. Что следует установить в гостевую систему?
Я для себя сформировал следующий контрольный список:
# apt-get install vim less apt-file resolvconf binutils screen rsync # apt-get install sysstat tcpdump file dnsutils telnet psmisc # apt-get install openntpd sudo postfix bsd-mailx logwatchНе всё из этого необходимо, поэтому вы можете оставить из этого списка то, что вам нужно и дополнить его пакетами по своему вкусу. При установке openntpd и postfix стоит подумать об их настройке.
Если вам когда-нибудь понадобится воспользоваться консолью гостевой системы, стоит установить пакеты, ответственные за консоль, клавиатуру и локаль:
# apt-get install console-setup keyboard-configurationСоответственно, можно задать их настройки при помощи следующих команд:
# dpkg-reconfigure console-setup # dpkg-reconfigure keyboard-configuration # dpkg-reconfigure localesНиже приведены пункты конфигурирования, отличающиеся от значений по умолчанию, которые я обычно выбираю для настройки этих пакетов:
Keyboard layout: Other Country of origin for the keyboard: Russian Keyboard layout: Russian Encoding to use on the console: UTF-8 Character set to support: Cyrillic - KOI8-R and KOI8-U Default locale for the systemm environment: ru_RU.UTF-87. Отключение сохранения-восстановления гостевых систем
При остановке демона xen, а также при выключении и перезагрузке системы, демон по умолчанию пытается сохранить состояние всех гостевых систем в каталог /var/lib/xend/storage, из-за чего может закончиться всё место на диске.
Изменить это поведение можно в файле /etc/default/xendomains настройкой значения XENDOMAINS_SAVE. Можно указать другой каталог, в котором есть достаточно места для сохранения образов оперативной памяти гостевых систем, а можно полностью отключить сохранение, указав пустое значение:
XENDOMAINS_SAVE=Чтобы удалить сохранённые образы памяти гостевых систем, можно воспользоваться следующими командами:
# cd /var/lib/xen # find . -type f -delete8. Автозапуск виртуальных машин
По умолчанию при перезагрузке хост-системы восстанавливается сохранённое состояние гостевых систем. Если мы отключили сохранение и восстановление гостевых систем, то гостевые системы запущены не будут. Чтобы гостевые системы автоматически загружались при загрузке хост-системы, нужно создать каталог автозапуска и поместить внутрь него символические ссылки на конфигурации необходимых гостевых систем:
# mkdir /etc/xen/auto # cd /etc/xen/auto # ln -s /etc/xen/ns.cfg .9. Решение проблем
9.1. Ошибка настройки сети
Гостевая система долго запускается, а затем выдаёт ошибку настройки сети:
"Error: Device 0 (vif) could not be connected. Could not find bridge, and none was specified".В этом случае нужно просто отключить скрипт настройки сети, который запускается для всех гостевых систем. Для этого нужно закомментировать строку в файле /etc/xen/xend-config.sxp на хост-системе:
#(vif-script vif-bridge)9.2. Ошибка запуска xen
Если команда xm list выдаёт ошибку:
Error: Unable to connect to xend: No such file or directory. Is xend running?При запуске демонов xen при помощи команды /etc/init.d/xen start выводится ошибка:
[FAIL] Starting Xen daemons: xenstored xenconsoled xend failed!И в журнале /var/log/xen/xend.log имеется запись вида:
[2013-12-06 09:21:27 4789] ERROR (SrvDaemon:349) Exception starting xend (unclosed token: line 1282, column 32)Значит повреждено содержимое хранилища xen в каталоге /var/lib/xend и для запуска демонов xen его необходимо очистить при помощи команд:
# cd /var/lib/xend # find . -type f -delete
2 комментария:
apt-get install xen-linux-system
не может найти пакет xen-linux-system или xen-linux-system-amd64
Заметка писалась относительно Debian Wheezy. Сейчас у меня под рукой Debian Stretch. Поищем, что нужно ставить в ней:
$ apt-cache search xen-linux
xen-linux-system-amd64 - Xen system with Linux for 64-bit PCs (dummy package)
$ apt-cache show xen-linux-system-amd64
Package: xen-linux-system-amd64
Source: linux-latest (80+deb9u7)
Version: 4.9+80+deb9u7
Installed-Size: 12
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Architecture: amd64
Depends: xen-system-amd64, linux-image-amd64
Description-en: Xen system with Linux for 64-bit PCs (dummy package)
This is a dummy transitional package. It can be safely removed.
Description-md5: 898420de469a9dd07cc668ebec0ad42d
Tag: role::shared-lib
Section: oldlibs
Priority: extra
Filename: pool/main/l/linux-latest/xen-linux-system-amd64_4.9+80+deb9u7_amd64.deb
Size: 6050
MD5sum: 2ab5a3d0b5a44a11bb247ea8f2b7873e
SHA256: d1f8f0f33bbd811ddda6543aceb103c78609eccd8a78c970bc7b3ea18de6ea51
Package: xen-linux-system-amd64
Source: linux-latest (80+deb9u6)
Version: 4.9+80+deb9u6
Installed-Size: 12
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Architecture: amd64
Depends: xen-system-amd64, linux-image-amd64
Description-en: Xen system with Linux for 64-bit PCs (dummy package)
This is a dummy transitional package. It can be safely removed.
Description-md5: 898420de469a9dd07cc668ebec0ad42d
Section: kernel
Priority: optional
Filename: pool/updates/main/l/linux-latest/xen-linux-system-amd64_4.9+80+deb9u6_amd64.deb
Size: 6036
MD5sum: edd7ff195077036eb437d524e0c6f4ac
SHA1: b80ff20703a4c59144dee022902900ca1edd00a1
SHA256: d01f5dba5d0270b87d8fc893ab4549b1734c91e1e265d91494b036e6a72f79b9
$ apt-cache search xen-system-amd64
xen-system-amd64 - Xen System on AMD64 (meta-package)
$ apt-cache show xen-system-amd64
Package: xen-system-amd64
Source: xen
Version: 4.8.5+shim4.10.2+xsa282-1+deb9u11
Installed-Size: 41
Maintainer: Debian Xen Team <pkg-xen-devel@lists.alioth.debian.org>
Architecture: amd64
Provides: xen-system
Depends: xen-hypervisor-4.8-amd64, xen-utils-4.8
Description-en: Xen System on AMD64 (meta-package)
This package depends on the latest Xen hypervisor for use on AMD64 and the
Xen utils.
Description-md5: f9a399da9b1f85d66b7c24b24d068efc
Section: kernel
Priority: optional
Filename: pool/main/x/xen/xen-system-amd64_4.8.5+shim4.10.2+xsa282-1+deb9u11_amd64.deb
Size: 24154
MD5sum: d19c046ec15eecb46ae9a0448fd88030
SHA256: 9e2cf01bcd6c371f725eb6bddf4a3b64376d445b8983baa71a0d73a77d204573
Таким несложным способом можно найти, какие пакеты нужно ставить в вашей системе. Как видно выше, ставить нужно пакеты xen-hypervisor-4.8-amd64 иxen-utils-4.8. В вашей системе это могут быть другие пакеты.
Отправить комментарий