Содержание

Xen

Установка Xen

Устанавливаем xen и обновляем grub:

sudo apt-get install -y xen-hypervisor-amd64
sudo mv /etc/grub.d/*_linux_xen /etc/grub.d/09_linux_xen
sudo update-grub

Выделение памяти

Выделение гипервизору

Чтобы выделить память для dom0 в размере 1024MB, в /etc/default/grub добавляем/редактируем:

GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M"

выполняем и перегружаемся:

sudo update-grub

Overselling

Настриваем toolstack, чтобы памяти хватало при запуске новых гостей, в /etc/xen/xl.conf включаем overselling (если физической памяти хватает, то не желательно это делать) добавляем/редактируем:

autoballoon=0

https://wiki.xen.org/wiki/Xen_Project_Best_Practices
http://www.remoteshaman.com/virtualization/xen/xen-memory-overcommit-and-overselling

Xen save

При перезагрузки сервера, Xen сохраняет состояние ВМ в директорию /var/lib/xen/save. Для корректной работы, диск на котором будет сохраняться состояние машин должен быть на 5-10 Гб больше, чем оперативной памяти на сервере. Также эти файлы необходимы для воостановления ВМ.

Для отключения сохранения состояния, /etc/default/xendomains в файле меняем строчки на:

#XENDOMAINS_SAVE=/var/lib/xen/save
XENDOMAINS_SAVE=

PV виртуализация

Скачиваем initrd.gz и vmlinuz образы:

RELEASE=xenial
sudo mkdir -p /etc/xen/boot/$RELEASE
sudo wget -P /etc/xen/boot/$RELEASE http://archive.ubuntu.com/ubuntu/dists/$RELEASE/main/installer-amd64/current/images/netboot/xen/initrd.gz
sudo wget -P /etc/xen/boot/$RELEASE http://archive.ubuntu.com/ubuntu/dists/$RELEASE/main/installer-amd64/current/images/netboot/xen/vmlinuz

Создаем конфигурационный файл /etc/xen/xenial.cfg, пример:

memory = 1024
name = "xenial"
vif=['mac=00:16:3e:00:00:01, bridge=xenbr0']
disk=['phy:/dev/SYS/xenial,hda,w']
vcpus = 2

#bootloader="/usr/lib/xen-4.6/bin/pygrub"
kernel = "/etc/xen/boot/xenial/vmlinuz"
ramdisk = "/etc/xen/boot/xenial/initrd.gz"

Разворачиваем систему:

sudo xl create /etc/xen/xenial -c

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

bootloader="/usr/lib/xen-4.6/bin/pygrub"
#kernel = "/etc/xen/boot/xenial/vmlinuz"
#ramdisk = "/etc/xen/boot/xenial/initrd.gz"

PV драйвера

https://www.xenproject.org/downloads/windows-pv-drivers.html

Старые версии драйверов http://www.ejbdigital.com.au/gplpv/

http://wiki.xen.org/wiki/Xen_Windows_GplPv

До установки в Windows определяется неизвестное устройство Device PCI\VEN_5853&DEV_0001

HVM виртуализация

Создаем конфигурационный файл /etc/xen/windows.cfg, пример:

builder = "hvm"
name = "windows"
memory = 1024
vcpus = 1
vif = ['bridge=br0']
disk=['phy:/dev/DATA/windows,hda,w'
    ,'file:/mnt/nfs/SW_DVD5_Win_Svr_Std_and_DataCtr_2012_64Bit_English_Core_MLF_X18-27588.ISO,hdc:cdrom,r']
boot = 'd'
viridian = 1
vnc = 1
vnclisten = "0.0.0.0"
usbdevice='tablet'

После установки выключаем машину и меняем:

boot = 'c'

Сеть

Open vSwitch

Добавляем в xl.conf:

vif.default.script="vif-openvswitch"
vif.default.bridge="xenbr0"

где xenbr0 имя нашего моста созданного с помощью ovs-vsctl, имя моста может быть любым.

http://wiki.xensource.com/wiki/Xen_Networking

Опции

http://support.qbpro.ru/index.php?title=Опции_доменов_Xen

Твики

Мышь

VNC захватывает мышь

Вернуть мышь можно с помощью left ctrl + left alt

Не правильно позиционируется курсор

В конфигурацонном файле виртуальной машины добавить:

usbdevice='tablet'

Время

Установка времени в localtime, по умолчанию в UTC (localtime = 0)
Добавляем в конф.файл виртуальной машины:

localtime = 1

xen console

Выйти из консоли: <CTRL> + ']' или <CTRL> + '5'

http://wiki.xensource.com/wiki/Xen_FAQ_Console

Проброс USB

Выбираем нужный usb порт:

lsusb
  Bus 003 Device 001: ID 0000:0000 
  Bus 004 Device 001: ID 0000:0000 
  Bus 005 Device 005: ID 4971:cb07 
  Bus 005 Device 001: ID 0000:0000 
  Bus 001 Device 006: ID 03f0:a004 Hewlett-Packard DeskJet 5850c

В конфигурации вм подключаем usb и пробрасываем нужное устройство:

usb=1
usbdevice=[ 'host:03f0:a004' ]

После перегружаем домен

http://oboguev.net/kernel-etc/Linux-Xen-setup.html

Ошибки

XEN RuntimeError: Unable to find partition containing kernel

Не грузится PV образ с собственного ядра с помощью pygrub. Необходимо для VM удалить загрузчик grub2 и установить на него место grub:

apt-get -y purge grub-pc
rm -rf /boot/grub/*
apt-get -y install grub
grub-set-default default
update-grub -y
apt-get autoremove --purge

http://discussions.citrix.com/topic/310400-unable-to-find-partition-containing-kernel/

Временно запустить до обновления grub можно закоментировав или удалив на виртуальной машине в /boot/grub/grub.cfg блок submenu :

submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-4762c8cb-e467-40e8-8ed5-2d5b5dae1b52' {
....
}

https://www.eukhost.com/forums/f45/xenserver-ubuntu-vm-fails-start-post-kernel-upgrade-19438/

xen_netfront: xennet: skb rides the rocket: 19 slots

Отключаем режим произвольной упаковки (scatter-gather):

sudo ethtool -K eth0 sg off

Проверить можно с помощью команды:

sudo ethtool -k eth0 | grep scatter-gather

Ссылки

https://wiki.alpinelinux.org/wiki/Xen_Dom0 - Установка AlpineLinux как Dom0
https://wiki.alpinelinux.org/wiki/Create_Alpine_Linux_PV_DomU - Установка AlpineLinux как DomU