Содержание
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, имя моста может быть любым.
Опции
- vcpus - сколько виртуальных процессорных ядер должно быть доступно из виртуальной машины
- cpus - какие именно физические процессорные ядра использовать для виртуальной машины. Ядра нумеруются от ноля, если процессоры поддерживают HyperThreating - то сначала идут реальные ядра, а потом - HT. Пример для HT-процессора:
Physical HyperThreating ------------------------------------ CPU 1 2 3 4 1 2 3 4 cpus= 0 1 2 3 4 5 6 7
- cpu_weight - «вес» виртуальной машины. Т.е. сколько процессорного времени ей выделять по сравнению с другими машинами. По-умолчанию вес любой машины равен 512, поэтому, например, указание числа 256 будет говорить Xen, что данному гостю выделять надо в 2 раза меньше времени процессора, чем остальным.
Максимальное значение веса = 65535, минимальное = 1 - cpu_cap - лимит процессорного времени для данного домена (в %). Т.е. максимальную величину процессорного времени, которую может получить домен, даже в случае, если хост-система простаивает.
Величина лимита указывается в % от одного виртуального ядра, причем она не может быть больше, чем VCPU*100.
Таким образом, если у Вас для виртуальной машины выделено только 1 ядро (vcpus=1), то значение cpu_cap=50 будет значить, что домен получит максимум только 50% процессорного времени. А если у Вас выделено 2 ядра (vcpus=2), то значение cpu_cap=150 будет значить, что будет выделено не больше, чем 100% одного ядра и 50% другого… или по 75% от обоих ядер.
Значение «0» говорит, что ограничивать не надо.
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'
Проброс 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' ]
После перегружаем домен
Ошибки
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
