Продолжение статьи Руководство пользователя Xen v3.0 Часть 3
Дальнейшая поддержка
Если у вас есть вопросы, на которые нет ответов в этом руководстве, возможно, вам смогут помочь источники указанные ниже. Отчёты об ошибках, предложения и дополнения к программному обеспечению (а также документации) Xen нужно высылать в список разработчиков Xen (адрес ниже).
Другая документация
Разработчикам, интересующими портированием другим операционных систем на Xen, может оказаться полезным руководство Xen Interface Manual, находящееся в каталоге docs/ дистрибутива Xen.
Конфигурационный файл немодифицированных гостевых VMX систем
В инсталляции Xen есть пример конфигурационного файла, /etc/xen/xmexample.vmx. В нём есть комментарии, описывающие все опции. В дополнение к обычным опциям, подходящим для паравиртуализированных систем, есть несколько, предназначенных только для VMX.
kernel
Загрузчик VMX, /usr/lib/xen/boot/vmxloader
builder
build-функция домена. Домен VMX использует vmx builder.
acpi
Включить ACPI в гостевой системе VMX, по умолчанию =0 (выключено)
apic
Включить APIC в гостевой системе VMX, по умолчанию =0 (выключено)
pae
Включить PAE в гостевой системе VMX, по умолчанию =0 (выключено)
vif
Опционально указывает MAC-адрес и/или бридж для сетевого интерфейса. Если MAC-адрес не указан, он выбирается случайно. Если указать type=ioemu, для виртуализации сетевой карты машины используется эмулятор ioemu. Если тип не указан, используется виртуализация с помощью vbd, как и в паравиртуализированных гостевых системах.
disk
Определяет дисковые устройства, к которым домен будет иметь доступ, а также какой именно у него будет доступ. В том случае, если в качестве дисков VMX используются физические диски, запись для каждого диска будет иметь следующую форму:
phy:UNAME,ioemu:DEV,MODE ,
где UNAME — это имя устройства в домене 0; DEV — это имя устройства, которое будет видется в пользовательском домен; MODE — это r, обозначающий режим только-для-чтения, или w, обозначающий режим чтение-запись; ioemu означает, что для виртуализации VMX-дисков будет использоваться ioemu. Если не добавлять ioemu, используются vbd как в паравиртуализированных гостевых системах.
Если используется файл с образом диска, применяется такая форма:
file:FILEPATH,ioemu:DEV,MODE
Если используется больше чем один диск, записи, соотвествующие дискам, должны разделяться запятыми. Например:
disk = ['file:/var/wp-content/uploads/2025/05/image1.img,ioemu:hda,w', 'file:/var/wp-content/uploads/2025/05/image2.img,ioemu:hdb,w']
cdrom
Образ диска для CD-ROM’а. По умолчанию это /dev/cdrom в домене 0. Внутри домена VMX, CD-ROM будет виден как устройство /dev/hdc. Эта запись также может указывать на ISO-файл.boot Загружаться с флоппи-дисковода(a), жёсткого диска (c) или CD-ROM’а (d). Например, для того чтобы загружаться с CD-ROM’а, запись должна выглядеть так:
boot='d'
device_model Инструмент для эмуляции оборудования для гостевых систем. Этот параметр менять не нужно.
sdl
Включить библиотеку SDL для графики, по умолчанию = 0 (выключено)
vnc
Включить библиотеку VNC для графики, по умолчанию = 1 (включено)
vncviewer
Включить запуск vncviewer (допустимо только при vnc=1), по умолчанию = 1 (enabled)
Если vnc=1 и vncviewer=0, можно подключаться к экрану VMX домена с помощью удалённого vncviewer’а. Например:
$ vncviewer domain0_IP_address:VMX_domain_id
ne2000
Включить ne2000, по умолчанию = 0 (выключено; использовать pcnet)
serial
Включить перенаправление вывода на последовательный порт гостевой VMX-системой на pty-устройство
usb
Включить поддержку USB без включения какого-то конкретного USB-устройства. По умолчанию эта опция равна 0 (выключена), за исключением случая, когда включена опция
usbdevice — в этом случае опция равна 1 (включена).
usbdevice
Включить поддержку USB и включить поддержку заданного устройства. Устройства, которые можно здесь указывать это mouse (мышь PS/2), tablet (планшет — устройство
абсолютного позиционирования) и host:id1:id2 (физическое USB-устройство на хост-машине с идентификаторами id1 и id2). Преимущество планшета в том, что Windows автоматически его распознаёт и включает его поддержку, поэтому достаточно только указать строку
usbdevice='tablet'
и в виртуальной системе появится мышь, которая прозрачно работает под VNC. В Linux пока что отстуствует поддержка USB-планшета, поэтому в Linux нужно использовать эмуляцию Summagraphics.
localtime
Установить часы в локальное время (по умолчанию =0, что означает — установить в UTC).
enable-audio
Включить поддержку аудио. Находится в процессе разработки.
full-screen
Запускаться в полноэкранном режиме. Находится в процессе разработки.
nographic
Другой способ перенаправления последовательного вывода. Если включён, не будет работать ни ‘sdl’, ни ‘vnc’. Не рекомендуется.
Создание виртуальных дисков с нуля
На основе физических дисков
В том случае, если используется физический диск или дисковый раздел, сначала нужно установить ОС Linux. После этого нужно в правильное место установить загрузчик. Например, в /dev/sda в случае загрузки со всего диска, или в /dev/sda1 при загрузке с раздела 1.
На основе файлов-образов
Сначала нужно создать большой пустой файл-образ. После этого, нужно установить в него ОС Linux. Есть два метода сделать это:
Непосредственная инсталляция и виртуальной машины VMX. Выполняется загрузка и инсталляция с CD-ROM’а.Копирование в файл установленной операционной системы. Кроме этого придётся проинсталлировать загрузчик.Для создания файла-образа: Размер образа должен быть достаточно большим, для того чтобы в него влезла целая ОС. В данном примере предполагается, что размер образа — 1G (что, по-видимому, будет маловато для большинства современных ОС).
# dd if=/dev/zero of=hd.img bs=1M count=1 seek=1023
Для того чтобы непосредственно установить ОС Linux в файл-образ с помощью гостевой VMX-системы:
Установите Xen и создайте гостевую VMX-систему с файлом-образом и загрузкой с CD-ROM. Дальше всё будет как в обычной инсталляции Linux. В конфигурационном файле должны быть такие записи:
c
drom='/dev/cdrom'
boot='d'
Если с помощью этого метода успеха добиться не получится, можно воспользоваться другим — скопировать проинсталированную систему Linux в файл-образ.
Для того чтобы скопировать установленную ОС в файл-образ: Непосредственная инсталляция — простейший способ создания разделов и инсталляции ОС в файл-образ. Если вы хотите проинсталлировать какую-то особенную ОС в образ на жёстком диске, скорее всего вы будете использовать именно этот метод.
1. Установите обычную ОС Linux на хост-машину. Инсталляцию можно производить любым способом, например, с помощью yum (для Red Hat Linux) или YaST (для Novell SuSE Linux). В дальнейшем предполагается, что операционная система установлена в каталог /var/guestos/.
2. Создайте таблицу разделов. Образ в файле будет восприниматься как жёсткий диск, поэтому нужно сделать таблицу разделов в файле образа. Например:
# losetup /dev/loop0 hd.img# fdisk -b 512 -C 4096 -H 16 -S 32 /dev/loop0press 'n' to add new partitionpress 'p' to choose primary partitionpress '1' to set partition numberpress "Enter" keys to choose default value of "First Cylinder" parameter.press "Enter" keys to choose default value of "Last Cylinder" parameter.press 'w' to write partition table and exit# losetup -d /dev/loop03.
Создайте файловую систему и установите в неё загрузчик GRUB.
# ln -s /dev/loop0 /dev/loop# losetup /dev/loop0 hd.img# losetup -o 16384 /dev/loop1 hd.img# mkfs.ext3 /dev/loop1# mount /dev/loop1 /mnt# mkdir -p /mnt/boot/grub# cp /boot/grub/stage* /boot/grub/e2fs_stage1_5 /mnt/boot/grub# umount /mnt# grubgrub> device (hd0) /dev/loopgrub> root (hd0,0)grub> setup (hd0)grub> quit# rm /dev/loop# losetup -d /dev/loop0# losetup -d /dev/loop1
Опция -o 16384 программы losetup показывает, что нужно пропустить таблицу разделов в образе. Число равно количеству секторов для пропуска умноженное на 512. Пришлось создать файл /dev/loop, поскольку GRUB’у нужно именно имя диска, которое обозначает весь диск, а имя с номером обозначает раздел; имя1 — первый раздел.
4. Скопируйте файлы операционной системы на образ. Если Xen уже установлен, при копировании файлов на разделы можно использовать программу lomount вместо losetup и mount. Программе lomount просто нужна информация о разделах.
# lomount -t ext3 -diskimage hd.img -partition 1 /mnt/guest# cp -ax /var/guestos/{root,dev,var,etc,usr,bin,sbin,lib} /mnt/guest# mkdir /mnt/guest/{proc,sys,home,tmp}5. Отредактируйте
файл /etc/fstab в образе гостевой системы. Файл fstab должен выглядеть так:
# vim /mnt/guest/etc/fstab/dev/hda1 / ext3 defaults 1 1none /dev/pts devpts gid=5,mode=620 0 0none /dev/shm tmpfs defaults 0 0none /proc proc defaults 0 0none /sys sysfs efaults 0 06.
Размонтируйте файл-образ:
# umount /mnt/guestОбраз гостевой системы hd.img готов. При их использовании обязательно убедитесь в том, что в них установлен загрузчик.
Инсталляция Windows в файл образа в VMX
Для того чтобы установить Windows нужно указать в конфигурационном файле acpi=0.
Гостевые VMX-системы
Редактирование конфигурационного файла Xen VMX
Создайте копию примера конфигурационного файла VMX /etc/xen/xmexample.vmx и отредектируйте строку:
disk = [ 'file:/var/wp-content/uploads/2025/05/guest.img,ioemu:hda,w' ]в которой замените guest.img на имя файла с образом гостевой ОС, который вы создали.
Создание гостевых систем VMX
Используйте обычный метод для создания гостевых систем. С помощью ключа -f можно указать файл, содержащий конфигурацию виртуальной машины:
# xend start# xm create /etc/xen/vmxguest.vmxВ конфигурации по умолчанию, если VNC включён, SDL выключен. В этом случае для доступа к гостевой системе нужно создавать окна VNC. Если вы хотите использовать SDL, включите его в конфигурационном файле с помощью параметра sdl=1. В этом случае vnc можно выключить, установив параметр vnc=0.
Проблемы с мышью, особенно под VNC
при доступе к виртуальным машинам через VNC существует небольшая проблема с мышью. Проблема связана с тем, что VNC viewer предоставляет виртуальный указатель, для которого известны только его абсолютные координаты. VMX device model преобразует эти абсолютные координаты в приращения движения, которые гостевая система ждёт от драйвера мыши PS/2, работающего в гостевой системе. К сожалению, невозможно сделать так чтобы вычисленные приращения для гостевого курсора точно соответствовали движению указателя VNC. Это может привести к ситуации, когда курсор гостевой системы находится в центре экрана, а курсор VNC уже на краю, и нет возможности подвинуть гостевой курсор левее или правее (в зависимости от того, где находится VNC-курсор).
Для того чтобы побороть указанные проблемы, существуют различные выходы; в зависимости от того, какой вариант эмуляции мыши используется:
Мышь PS/2 подключённая через порт PS/2.
Эта модель мыши используется по умолчанию. Она прекрасно работает под SDL, однако при доступе через VNC указатель мыши в гостевой системе рассинхронизируется с указателем VNC. Когда это происходит, можно синхронизировать указатели одновременным нажатием левого Ctrl и левого Alt. Когда нажаты эти кнопки, движение указателя VNC не передаётся в гостевую систему, и можно переместить указатель к тому месту, где он совместится с курсором гостевой системы.
Мышь Summagraphics подключённая через последовательный порт.
В device model есть поддержка для планшета Summagraphics, устройства абсолютного позиционирования. Эмуляция выполнятся на втором последовательном порту, /dev/ttyS1 в Linux или COM2 в Windows. К сожалению, ни в Linux, ни в Windows по умолчанию нет поддержки планшета Summagraphics, поэтому гостевую систему вручную нужно сконфигурировать для поддержки этого устройства.
Конфигурация Linux.
Во-первых, настройте службу GPM на использование Summagraphics. В зависимости от дистрибутива, возможно, придётся делать другие действия, но обычно нужно отредактировать /etc/sysconfig/mouse, так чтобы в нём были строки:
MOUSETYPE=»summa»XMOUSETYPE=»SUMMA»DEVICE=/dev/ttyS1Затем нужно перезапустить демон GPM.
После этого нужно изменить конфигурационный файл /etc/X11/xorg.conf, так чтобы в X появилась поддержка Summagraphics. Нужно добавить строки:
Section «InputDevice» Identifier «Mouse0» Driver «summa» Option «Device» «/dev/ttyS1» Option «InputFashion» «Tablet» Option «Mode» «Absolute» Option «Name» «EasyPen» Option «Compatible» «True» Option «Protocol» «Auto» Option «SendCoreEvents» «on» Option «Vendor» «GENIUS»EndSectionПосле перезапуска X-системы, курсор X должен работать синхронно с указателем VNC.
Конфигурация Windows.
На вопросы нужно отвечать так:
Когда программа спросит model (модель), прокрутите ответы и выберите SummaSketch (MM Compatible).Когда программа спросит COM Port, укажите com2.Когда программа спросит Cursor Type (тип курсора), укажите 4 button cursor (4 кнопочный курсор).Затем гостевая система перезагрузится и, после того когда она снова загрузится, курсор в гостевой системе будет совпадаеть с указателем VNC.Мышь PS/2 подключённая через USB.
Это точно такая же эмуляция PS/2, за тем исключением, что она выполняется через порт USB.
Эмуляция включается конфигурационным флагом:
usbdevice='mouse'
Планшет USB подключённый через USB.
USB-планшет это устройство абсолютного позиционирования. Оно обладает тем преимуществом, что его поддерживают гостевые Windows-системы, правда, Linux-системы все ещё требуют ручной настройки.
Эмуляция включается конфигурационным флагом:
usbdevice='tablet'
Конфигурация Linux.
К сожалению, в настоящий момент поддержка USB-планшетов в GPM отсутствует. Если вы хотите использовать GPM под VNC, нужно настраивать эмуляцию Summagraphics в гостевой системе.
Как настроить поддержку в X11 описывается на странице http://stz-softwaretechnik.com/~ke/touchscreen/evtouch.html только с одним небольшим изменением. В файле xorg.conf на той странице указаны неправильные значения минимумов и максимумов X и Y. Лучше использовать данную секцию:
Section "InputDevice" Identifier "Tablet" Driver "evtouch" Option "Device" "/dev/input/event2" Option "DeviceName" "touchscreen" Option "MinX" "0" Option "MinY" "0" Option "MaxX" "32256" Option "MaxY" "32256" Option "ReportingMode" "Raw" Option "Emulate3Buttons" Option "Emulate3Timeout" "50" Option "SendCoreEvents" "On" EndSectionКонфигурация Windows.
Достаточно включить USB-планшет в гостевом конфигурационном файле. Windows автоматически распознает устройство и сконфигурирует драйверы для него.
Поддержка USB
Есть поддержка для эмулируемой USB-мыши, эмулируемого USB-планшета и физических низкоскоростных USB-устройств (поддержка высокоскоростных устройств USB 2.0 находится в процессе разработки).
Мышь USB PS/2
Для того чтобы включить поддержку мыши USB PS/2, нужно добавить строку в конфигурационный файл:
usbdevice='mouse'
Планшет USB
Для того чтобы включить поддержку USB-планшета, нужно добавить строку в конфигурационный файл:
usbdevice='tablet'
Физическое USB-устройство
Доступ к физическому (низкоскоростному) USB-устройству включается путём добавления строки
usbdevice='host:vid:pid'
в конфигурационный файл. Параметры vid и pid — это vendor id (идентификатор производителя) и product id (идентификатор устройства), уникальным
образом идентифицирующие устройство. Эти идентификаторы можно определить двумя способами:
(Существует альтернативный способ указать USB-устройство:
host:bus.addrПри таком способе возникает проблема, которая делает его бесполезным. Проблема заключается в том, что адрес меняется каждый раз, когда USB-устройство подключается к системе. В связи с этим, этот способ адресации не рекомендуется и в дальнейшем не описывается.)
1. С помощью управляющего окна. Как сказано ниже, перейти у правляющему окну можно с помощью комбинации клавиш Ctrl-Alt-2 в VGA-окне гостевой системы. Если в конфигурационном файле с помощью строки включена поддержка USB
usb=1тогда вызов команды
info usbhostв управляющей консоли покажет список всех USB-устройств и их идентификаторов. Например, этот вывод:
Device 1.3, speed 1.5 Mb/s Class 00: USB device 04b3:310b
соответствует USB-мыши с идентификатором производителя (vendor id) 04b3 и идентификатором устройства (product id) 310b. Это устройство можно сделать доступным гостевой VMX-системе, если включить в конфигурационный файл строку
usbdevice=’host:04be:310b’Также можно включить доступ к USB-устройству динамически, с помощью управляющего окна. Управляющая команда
usb_add host:vid:pidдаёт доступ к USB-устройству с идентификатором вендора (vendor id) = vid и идентификатором продукта (product id) = pid.
2. С помощью файловой системы /proc. При определении идентификаторов vendor id и product id можно воспользоваться содержимым псевдофайла /proc/bus/usb/devices. В этом файле в строке, начинающейся с P:, есть поля Vendor= и ProdID= — это vendor id и product ID соответственно. Например, для мыши файл будет выглядеть так:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=1.5 MxCh= 0D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1P: Vendor=04b3 ProdID=310b Rev= 1.60C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mAI: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=(none)E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=10msОбратите внимание, что строка P: идентифицирует vendor id и product id для мыши как 04b3:310b.
Существует ещё одна проблема, о которой нужно знать, при доступе к физическому USB-устройству из гостевой системы. Ядро домена Dom0 не должно загружать драйвер для устройств с которыми будет работать гостевой домен. Это означает, что драйвер не должен быть вкомпилирован в ядро, а в том случае, если используются модули ядра, модуль драйвера не должен загружаться. Речь идёт только о драйверах устройств. Драйверы контроллеров UHCI и OHCI должны загружаться.
Возвращаясь к примеру c USB-мышью, в том случае, если lsmod выводит текст:
Module Size Used byusbmouse 4128 0 usbhid 28996 0uhci_hcd 35409 0
USB мышь используется ядром домена 0, и не доступна гостевым системам. Удалить драйвер мыши из ядра домена 0 и сделать мышь доступной гостевым доменам можно командой
rmmod usbhid. которая удалит драйвер мыши из домена 0 — мышь станет доступной в гостевом домене.
Имейте в виду, что система hotplug в Linux перезагружает драйверы, если USB-устройство удаляется, а затем возвращается в систему. Таким образом, простое удаление модуля драйвера будет не эффективно в этом случае. Более надёжный способ: удалить драйвер с помощью команды rmmod и затем переименовать его в /lib/modules, дабы быть уверенным, что он не будет загружаться.
Завершение гостевых VMX-систем
Гостевые системы VMX выключаются точно также как и паравиртуализированные гостевые системы. Чтобы избежать потерь данных, рекомендуется это делать с помощью команды:
poweroffв консоли гостевой системы. После этого нужно выполнить команду:
xm destroy vmx_guest_idв консоли домена 0.
Горячие клавиши окна VMX (X или VNC)
Если вы в момент запуска виртуальной машины работаете в среде X, создаётся окно. В этом окне доступно несколько горячих клавиш.
Ctrl+Alt+2 переключает из экрана гостевой системы в управляющее окно. По команде help можно посмотреть справочную информацию о командах доступных в консоли. Например, команда q прекращает работу гостевой системы. Ctrl+Alt+1 переключает обратно на экран гостевой системы. Ctrl+Alt+3 переключает на окно вывода на последовательный порт. В этом окне показаны перехваченные данные, которые гостевая система выводит на последовательный порт. Работает только в том случае, если гостевая VMX-система настроена на использование последовательного порта.
Сохранение/восстановление и миграция
Гостевые системы VMX в настоящий момент нельзя сохранять, восстанавливать и переносить. Эти возможности сейчас находятся в состоянии активного развития.
Vnets — виртуальные сети доменов
Xen опционально предоставляет поддержку сетей для доменов с помощью vnets. Они эмулируют частные сети доменов. Домены, находящиеся в одном vnet’е, могут размещаться на одной машине или на отдельных машинах, и vnet’ы остаются подсоединёнными во время миграции доменов. Ethernet-трафик внутри vnet’а туннелируется внутрь IP-пакетов передающихся по физической сети. Vnet — это виртуальная сеть и адресация внутри этой сети не имеет никакого отношения к адресации в физической сети. Отдельные vnet’ы или vnet’ы и физическую сеть можно соединить с помощью доменов с более чем одним сетевым интерфейсом и включённой поддержкой forwarding’а или bridging’а.
Поддержка vnet включена в xm и в xend. Команда
# xm vnet-create <config>создаёт vnet на основе конфигурационного файла <config>. После того как vnet создан, его конфигурация сохраняется xend, vnet становится постоянным, и он
будет существовать до тех пор пока он не будет удалён с помощью команды:
# xm vnet-delete Список vnets, о которых знает xend, можно получить командой:
# xm vnet-listДругие команды по управлению vnet’ами доступны через программу vn, входящую в дистрибутив vnet.
Формат конфигурационного файла vnet такой:
(vnet (id ) (bridge ) (vnetif ) (security ))Пробелы не имеют существенного значения.
Параметры:
<vnetid>: vnet id, 128-битный идентификатор vnet. Он может быть задан как 8 4х-разрядных шестнадцатеричных числа, разделенных двоеточиями или, в сокращённой форме, как одно 4х-разрядное число. В последнем случае 7 первых полей заполняется нулями. Идентификаторы vnet id должны быть ненулевыми и идентификатор 1 зарезервирован.<bridge>: имя моста для vnet’а. Домены подсоединяются к vnet’у путём подсоединения виртуального интерфейса к этому мосту. Длина имени моста ограничивается ядром до 14 символов.<vnetif>: имя виртуального интерфейса vnet (опционально). Интерфейс инкапсулирует и декапсулирует трафик vnet в сеть. Он подсоединён к мосту vnet. Длина имени интерфейса ограничивается ядром до 14 символов.<level>: уровень безопасности для vnet (опционально). Уровень может принимать одно из следующих значений* none: нет безопасности (по умолчанию). Трафик vnet передаётся в открытом виде.* auth: аутентификация. Трафик vnet аутентифицируется с помощью IPSEC ESP hmac96.* conf: конфиденциальность. Трафик vnet аутентифицируется и шифруется IPSEC ESP hmac96 и AES-128.Аутентификация и конфиденциальность поддерживаются в экспериментальном режиме; сейчас в них используются hard-wired ключи.
Когда vnet создаётся, его конфигурация сохраняется xend — vnet существует до тех пор, пока его не удалят командой:
# xm vnet-delete <vnetid>Интерфейсы и мосты, которые использует vnet, видны по командам ifconfig и brctl show.
Пример
Предположим, содержимое файла vnet97.sxp выглядит так:
(vnet (id 97) (bridge vnet97) (vnetif vnif97) (security none))После этого команда xm vnet-create vnet97.sxp определяет vnet с идентификатором 97 и без обеспечения безопасности. Мост для vnet’а называется vnet97, а виртуальный интерфейс — vnif97. Для того чтобы добавить интерфейс домена в этот vnet, нужно установить в конфигурационном файле мост соответствующего интерфейса равным vnet97.
В python’е:
vif="bridge=vnet97"В sxp:
(dev (vif (mac aa:00:00:01:02:03) (bridge vnet97)))Как только домен стартанул, его интерфейс должен быть виден в выводе команды brctl show в портах vnet97.
Для получения наивысшей производительности стоит уменьшить MTU доменных интерфейсов, смотрящих в vnet, до 1400. Это можно сделать, например, с помощью команды ifconfig eth0 mtu 1400 или установив строку MTU=1400 в файле ifcfg-eth0. После этого может понадобиться удалить кэшированные файлы для интерфейса eth0 в каталоге /etc/sysconfig/networking. Vnet’ы будут работать в любом случае, но производительность может пострадать от IP-фрагментации, вызванной инкапсуляцией vnet’ов и выходом за пределы аппаратного MTU.
Инсталляция поддержки vnet
Vnet реализуется модулем ядра, и модуль должен быть загружен до того как буду использоваться vnet’ы. Это можно сделать до старта xend вручную с помощью команды vn insmod или же настроить xend вызывать скрипт network-vnet, указав в конфигурационном файле /etc/xend/xend-config.sxp строку:
(network-script network-vnet)Этот скрипт загружает модуль ядра с помощью insmod, а затем вызывает скрипт network-bridge.
Код vnet по умолчанию не компилируется и не устанавливается. Для того чтобы откомпилировать код и установить его на текущей системе, нужно вызвать make install в корне дерева исходников vnet, tools/vnet/. Также можно установить vnet в инсталляционный каталог с помощью make dist. Подробности об этом можно найти в Makefile в каталоге исходных текстов.
По умолчанию модуль vnet создаёт интерфейсы vnif0002, vnif0003 и vnif0004. Проверить работают vnet’ы или нет можно так: настроить на них IP-адреса и попробовать их с помощью ping. Например, для машин hostA и hostB:
hostA# ifconfig vnif0004 10.0.0.100 uphostB# ifconfig vnif0004 10.0.0.101 uphostB# ping 10.0.0.100Реализация vnet использует IP-multicast для обнаружения интерфейсов vnet, поэтому все машины, на которых есть vnet’ы, должны быть доступны по multicast’у. Сетевые коммутаторы часто сконфигурированы так, что бы не ретранслировать multicast пакеты, это означает что все машины, использующие vnet, должны быть в том же сегменте сети на канальном уровне, за исключением случая, когда сконфигурирован vnet forwarding.
Проверить покрытие multicast можно пропинговав multicast-адрес vnet:
# ping -b 224.10.0.1
Должны прийти ответы от всех машин, на которых работает модуль vnet. Посмотреть передаются ли и принимаются ли пакеты vnet можно просматривая трафик
UDP на порту vnet:
# tcpdump udp port 1798
Если многоадресные (multicast) пакеты не передаются между хостами, multicast forwarding можно настроить с помощью vn. Предположим, есть хост hostA с
адресом 10.10.0.100 и hostB с адресом 10.11.0.100, и multicast forwarding между ними не выполняется. Настройка передачи между хостами выполняется с помощью vn:
hostA# vn peer-add hostBhostB# vn peer-add hostAMulticast forwarding нужно использовать очень осторожно — нужно избегать петель. Как правило, только одну машину в сети нужно настраивать на передачу (forward), x она будет передавать многоадресные пакеты, полученные от других машин в сети.
Глоссарий
Домен это контекст исполнения, содержащий работающую виртуальную машину. Отношение между доменом и виртуальной машиной в Xen приблизительно такое же как между процессом и программой в операционной системе: виртуальная машина это постоянная сущность, находящаяся на диске (как программа). Когда она запущена на исполнение, она работает в домене. У каждого домена есть идентификатор домена.
Домен 0
Первый домен, который запускается на Xen-системе. Домен 0 отвечает за управление системой.
Идентификатор домена (Domain ID)Уникальный идентификатор домена, аналогичный идентификатору процесса (PID) в операционной системе.
Полная виртуализация
Способ виртуализации, который не требует модификации гостевой операционной системы; гостевая ОС находится в иллюзии полноценной машины с реальными устройствами.
Гипервизор
Альтернативное название для монитора виртуальных машин, означающее «над супервизором». Термин подчеркивает что монитор виртуальных машин управляет множеством ядер системы, супервизоров.
Живая миграция (Live Migration)
Техника, позволяющая переносить работающую виртуальную машину с одного хоста на другой без её остановки.
Паравиртуализация
Способ виртуализации, требующий модификации гостевой операционной системы. Xen использует паравиртуализацию, но сохраняет бинарную совместимость для пользовательских (user space) приложений.
Теневая таблица страниц (Shadow pagetables)
Техника, с помощью которой расположение страниц в оперативной памяти скрывается от гостевой системы. Используется некоторыми мониторами для создания иллюзии непрерывной физической памяти. В Xen использутся при выполнении живой миграции.
Виртуальное блочное устройство (Virtual Block Device, VBD)
Постоянное хранилище информации, доступное виртуальной машине, представляющее абстракцию блочного устройства хранения. Виртуальным блочным устройством может быть настоящее блочное устройство, образ файловой системы в файле или удалённое/сетевое хранилище.
Виртуальная машина (Virtual Machine, VM)
Среда, в которой выполняется гостевая операционная система, предполагающая что выполняется на выделенной машине. Виртуальная машина может быть идентична нижележащей аппаратной машине (полная виртуализация), а может отличаться (паравиртуализация).
Монитор виртуальных машин (Virtual Machine Monitor, VMM)
Программное обеспечение, позволяющее множеству виртуальных машин одновременно выполняться на одной физической машине.
Xen
Монитор виртуальных машин, использующий паравиртуализацию, разработанный преимущественно исследовательской группой System Research Group Компьютерной лаборатории Кембриджского Университета.
Xen Linux
Название порта ядра Linux, работающего под Xen
Взято тут

