Использование VT-d в Xen

Материал из Xgu.ru

Перейти к: навигация, поиск


Автор: Игорь Чубин
Короткий URL: xen/vtd


VT-d — технология виртуализации ввода/вывода, предложенная Intel. Эта технология позволяет обеспечить монопольное выделение устройства HVM-домену, в то время как без её помощи (или аналогичной технологии IOMMU от AMD) это возможно только для паравиртуальных доменов.

На этой странице подробнее рассматриваются вопросы применения технологии VT-d в Xen, какие преимущества она даёт, а также как правильно её использовать.


Содержание

[править] Организация ввода/вывода в домене Xen

Существует три основных способа обеспечения ввода/вывода (и, фактически, доступа к оборудованию) для гостевой операционной системы, работающей внутри домена Xen:

  1. Эмуляция устройств со стороны домена 0 и использование традиционных драйверов в гостевой системе;
  2. Монопольное выделение устройств гостевой системе;
  3. Использование паравиртуальных драйверов.

В настоящий момент наиболее распространённым является первый способ, т.е. эмуляция устройств. Xen использует для эмуляции, так называемый QEMU Device Model (qemu-dm). Это специальный процесс, работающий в пространстве пользователя (userlevel) в домене 0 и предоставляющий виртуальные устройства гостевому домену.

Полной противоположностью этому подходу является второй подход — монопольное выделение устройства гостевой системе. В этом случае никаких затрат на эмуляцию не требуется. Гостевой домен работает с устройством напрямую, без всякого посредничества домена 0. Он видит устройство "как есть", и использует стандартные драйверы от этого устройства. Работа с устройством осуществляется на полной скорости.

В третьем способе используются особые драйверы, которые выполняет ввод/вывод не через эмулируемые устройства, а при помощи специального паравиртуального интерфейса, предоставляемого системой виртуализации и хост-системой.

Далее будет подробнее рассмотрен второй способ, то есть монопольное выделение устройств гостевым доменам.

[править] Монопольное выделение устройств гостевому домену

В настоящий момент такой способ работает с паравиртуальными доменами — им можно выделять устройства в монопольное использование без всяких проблем. Что касается HVM-доменов (доменов, использующих аппаратную виртуализацию), это:

  1. Требует аппаратной поддержки;
  2. Реализовано в 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 (список не полный):

  • Dell: Optiplex 755 [2]
  • HP Compaq: DC7800 [3]

Поддержка 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!     

[править] Дополнительная информация

[править] Материалы по технологии Intel vPro на xgu.ru

100px-Core2 vpro.png

[править] Технология 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

Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure