Использование VT-d в Xen
Материал из Xgu.ru
- Автор: Игорь Чубин
- Короткий URL: xen/vtd
VT-d — технология виртуализации ввода/вывода, предложенная Intel.
Эта технология позволяет обеспечить монопольное выделение устройства HVM-домену, в то время как без её помощи (или аналогичной технологии IOMMU от AMD)
это возможно только для паравиртуальных доменов.
На этой странице подробнее рассматриваются вопросы применения технологии VT-d в Xen, какие преимущества она даёт, а также как правильно её использовать.
Содержание |
[править] Организация ввода/вывода в домене Xen
Существует три основных способа обеспечения ввода/вывода (и, фактически, доступа к оборудованию) для гостевой операционной системы, работающей внутри домена Xen:
- Эмуляция устройств со стороны домена 0 и использование традиционных драйверов в гостевой системе;
- Монопольное выделение устройств гостевой системе;
- Использование паравиртуальных драйверов.
В настоящий момент наиболее распространённым является первый способ, т.е. эмуляция устройств. Xen использует для эмуляции, так называемый QEMU Device Model (qemu-dm). Это специальный процесс, работающий в пространстве пользователя (userlevel) в домене 0 и предоставляющий виртуальные устройства гостевому домену.
Полной противоположностью этому подходу является второй подход — монопольное выделение устройства гостевой системе. В этом случае никаких затрат на эмуляцию не требуется. Гостевой домен работает с устройством напрямую, без всякого посредничества домена 0. Он видит устройство "как есть", и использует стандартные драйверы от этого устройства. Работа с устройством осуществляется на полной скорости.
В третьем способе используются особые драйверы, которые выполняет ввод/вывод не через эмулируемые устройства, а при помощи специального паравиртуального интерфейса, предоставляемого системой виртуализации и хост-системой.
Далее будет подробнее рассмотрен второй способ, то есть монопольное выделение устройств гостевым доменам.
[править] Монопольное выделение устройств гостевому домену
В настоящий момент такой способ работает с паравиртуальными доменами — им можно выделять устройства в монопольное использование без всяких проблем. Что касается HVM-доменов (доменов, использующих аппаратную виртуализацию), это:
- Требует аппаратной поддержки;
- Реализовано в Xen, начиная с версии 3.2.0, вышедшей в начале 2008 года.
Что касается аппаратной поддержки, она есть, но пока что достаточно редка.
Сейчас есть как минимум две платы производства Intel (DQ35MP и DQ35JO), которые поддерживают собственную реализацию аппаратной виртуализации ввода/вывода известную как Intel VT-d (не путать с Intel VT-x и Intel VT-i, которые занимаются виртуализацией процессора!).
В AMD тоже ведётся работа над собственной реализацией аппаратной виртуализацией ввода/вывода, IOMMU.
При использовании VT-d можно организовать живую миграцию доменов, которым монопольно выделены устройства ([1], стр. 261-268).
[править] Как включить поддержку VT-d в Xen
- cd xen-unstable.hg
- make install
- make linux-2.6-xen-config CONFIGMODE=menuconfig
- изменить XEN->"PCI-device backend driver" с "M" на "*".
- make linux-2.6-xen-build
- make linux-2.6-xen-install
- depmod 2.6.18.8-xen
- mkinitrd -v -f --with=ahci --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18-xen.img 2.6.18.8-xen
- cp initrd-2.6.18-xen.img /boot
- lspci - выбрать идентификаторы устройств, которые вы хотите назначить гостевым системам
- скрыть PCI-устройства от домена 0 (dom0) с помощью такой записи в GRUB:
title Xen-Fedora Core (2.6.18-xen) root (hd0,0) kernel /boot/xen.gz com1=115200,8n1 console=com1 vtd=1 module /boot/vmlinuz-2.6.18.8-xen root=LABEL=/ ro console=tty0 console=ttyS0,115200,8n1 pciback.hide=(01:00.0)(03:00.0) pciback.verbose_request=1 apic=debug module /boot/initrd-2.6.18-xen.img
- перезагрузить операционную систему
- добавить строку "pci" в файл /etc/xen/hvm.conf
pci = [ '01:00.0', '03:00.0' ]
- запустить гостевой HVM-домен и с помощью команды lspci посмотреть, пробрасывается ли устройство. Если это сетевое устройство, попробовать поработать с ним, например, с помощью ifconfig
Если вы хотите чтобы проброс PCI-устройств внутрь PV-доменов также выполнялся с помощью VT-d, то нужно указать параметр
iommu=pv
в числе аргументов командной строки Xen при его загрузке.
Другие возможные значения параметра iommu (из файла xen/drivers/passthrough/iommu.c):
/* * The 'iommu' parameter enables the IOMMU. Optional comma separated * value may contain: * * off|no|false|disable Disable IOMMU (default) * pv Enable IOMMU for PV domains * no-pv Disable IOMMU for PV domains (default) * force|required Don't boot unless IOMMU is enabled * passthrough Enable VT-d DMA passthrough (no DMA * translation for Dom0) * no-snoop Disable VT-d Snoop Control * no-qinval Disable VT-d Queued Invalidation * no-intremap Disable VT-d Interrupt Remapping */
[править] Поддержка операционных систем
- Хост-система: PAE, 64-bit
- Гостевая система: 32-bit, PAE, 64-bit
Сейчас Xen не поддерживает MSI, поэтому для тех гостевых систем, которые по умолчанию используют MSI, нужно добавить опцию ядра
pci=nomsi
в загрузчик (GRUB)
[править] Проверенные комбинации
- 64-битный хост: 32/PAE/64 Linux/XP/Win2003/Vista guests
- PAE хост: 32/PAE Linux/XP/Win2003/Vista guests
[править] Аппаратные системы с поддержкой VT-d
Материнские платы, в которых точно есть поддержка VT-d (список не полный):
- DQ35MP
- DQ35JO
- Intel S3210SHLC после прошивки биоса до последней версии (S3200X38.86B.00.00.0043, 13.06.08)
Системы, в которых точно есть поддержка VT-d (список не полный):
Поддержка VT-d присутствует во всех компьютерах, поддерживающих технологию Intel vPro. Технология vPro базируется на двух технологиях: AMT (Active Management Technology) для удалённого управления железом и VT (VT-x + VT-d) для виртуализации процессора и систем ввода/вывода.
Hi, I have been doing some significant experimentation with Intel's IOMMU (VT-d) so I can answer your questions. * Yes, real IOMMUs (at least Intel's VT-d) are available on the market today, both as loose motherboards and in OEM systems. For details see /docs/misc/vtd.txt in the Xen source. To repeat what is in that file: 1) For VT-d enabling work on Xen, we have been using development systems using following Intel motherboards: - DQ35MP - DQ35JO 2) As far as we know, following OEM systems also has vt-d enabled. Feel free to add others as they become available. c=us&cs=555&l=en&s=biz - HP Compaq: DC7800 This is very recent...I think the motherboards only became generally available this spring. Anyway I ordered a Dell Optiplex 755 and it does indeed have VT-d and it works with Xen. * I'm not sure about AMD's IOMMU...my impression is that it is currently not generally available, and/or there is less support in Xen. * If your motherboard/chipset supports VT-d, you will see it in the BIOS configuration (it will probably be turned off by default). Again, unless you motherboard is very new or acquired in a non-standard way, it will _not_ have VT-d. * Support in Xen was introduced by Intel in 3.2, which is just now getting ready to release. On 3.2 (unstable) I've been able to get a PCI NIC to pass through, but not a PCI Express graphics card (that story is on another thread). There _does_ seem to be testing of a PCI Express NIC so I guess PCI Express is in general supported. * You are correct that open-source PV drivers for Windows DomUs are just now under development and of course are being developed on a per-device type basis. IOMMU allows you to pass through an arbitrary PCI device so you need neither PV drivers nor qemu emulation. This will presumaby perform well as you suggest, and more importantly it allows you to use device types that qemu doesn't emulate!
[править] Дополнительная информация
- How to turn on VT-d in Xen (англ.)
- Assign hardware to DomU with PCIBack as module (англ.) — решение аналогичной задачи для PV-домена
- Intel Virtualization Technology for Directed I/O (англ.)
- Intel Virtualization Technology for Directed I/O (VT-d): Enhancing Intel platforms for efficient virtualization of I/O devices (англ.)
[править] Материалы по технологии Intel vPro на xgu.ru
- Intel vPro — основная страница
- Полигон по vPro в УЦ Сетевые Технологии — информация о серии однодневных тренингов по технологии Intel vPro
- Материалы тренинга
[править] Технология AMT и её использование
[править] Технологии VT-d и VT-x и их использование
- Windows XP в Xen — как выполнять запуск HVM-домена под управлением Windows XP в Xen с использованием технологии Intel VT-x
- Windows Vista в Xen — как выполнять запуск HVM-домена под управлением Windows Vista в Xen с использованием технологии Intel VT-x
- Использование VT-d в Xen — как выполнять проброс PCI-устройств (PCI-passthrough) внутрь HVM-домена Xen с помощью Intel VT-d
При доступе через web интерфейс - имя пользователя admin а пароль, тот который вы устанавливали при конфигурированиии ME
|
---|