Паравиртуальные драйверы Xen для Windows

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

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


Автор: Игорь Чубин
Короткий URL: xen/winpvdrivers
На этой странице рассматриваются основные вопросы связанные с паравиртуальными драйверами Xen для Windows, а также как их установить и использовать. Что такое паравиртуальные драйверы Xen вообще, зачем они нужны рассказано на странице Паравиртуальные драйверы Xen.

Последняя версия драйверов, доступных в виде бинарной версии: 0.10.0.97-dontuse[1]. За последние три месяца не было сделано ни одного выпуска новых бинарных версий драйверов, и с учётом того, что раньше бинарные сборки выходили чуть ли не каждую неделю, заставило некоторых людей задумать о том, что разработка драйверов прекратилась. В действительности, по сообщениям Джеймса Харпера (James Harper), главного разработчика этих драйверов, это не так, однако выпуск бинарных версий действительно приостановлен, из-за того что они работают недостаточно стабильно.

Кроме того, начались работы по модификации этих драйверов для использования совместно с Open Solaris в домене 0 [1].

Драйверы новой версии, 0.9.X, отличаются от своих предшественников тем, что те были написаны с использованием инфраструктуры WDF (Windows Driver Foundation), а эти — более старой (!) инфраструктуры WDM (Windows Driver Model). Инфраструктура WDF более удобна и проста для написания собственных драйверов, однако для работы таких драйверов необходима большая библиотека DLL, которая должна распространяться вместе с драйверами. Кроме того, несмотря на то, что большинство вещей в WDF делается очень легко, если какую-то сделать не получается, сделать её практически невозможно.

Переход на WDM позволил:

  • Существенно сократить размер бинарного кода драйверов;
  • Сделать возможным выполнение сборки непосредственно в Linux с использованием таких сред как, например, MinGW;
  • В будущем реализовывать новые возможности, которые были недоступны с WDF.

В этих драйверах поменялся способ, при помощи которого выполняется скрытие устройств (не паравиртуальных, но с которыми работают паравиртуальные драйверы; чтобы одно и то же устройство не обнаруживалось дважды). Скрытые устройства пока что видятся в диспетчере устройств, но с символом восклицательного знака напротив них.

По сообщения в списках рассылки Xen-users и Xen-devel предварительно можно сказать, что драйверы достаточно стабильны. Переход на WDM прошёл успешно.

Производителность драйверов постоянно растёт. Подробнее:

Для инсталляции новых драйверов нужно очистить систему от старых драйверов (0.8.x и ниже). Идеально, если это будет свежая система, но если нет — ничего страшного, нужно деинсталлировать старые драйверы. В архиве есть скрипт uninstall_0.8.x.bat, который нужно скопировать в каталог с старыми драйверами и вызвать его оттуда.

Загрузку системы, которая должна использовать новые драйверы, нужно обязательно выполнять с ключом /GPLPV.

Архивы бинарной версии:

Исходный код драйверов можно получить из Mercurial-репозитория Xen:


Содержание

[править] Поддержка Windows Vista, Windows 7 и Windows 2008

Поддержка есть, используйте:

gplpv_Vista2008x64_0.11.0.213_debug.msi

[править] Проприетарные паравиртуальные драйверы

Производители систем виртуализации, основанных на Xen, предлагают свои паравиртуальные драйверы для Windows, работающие только с их собственной модификацией системы виртуализации Xen [2].

Коммерческие PV-драйверы для Windows предлагают такие производители:

  • Oracle;
  • XenSource;
  • Novell;
  • VirtualIron;
  • Egenera (на территории Европы права полностью принадлежат Fujitsu-Siemens)

[править] Свободные паравиртуальные драйверы

Обсуждение необходимости свободных PV-драйверов Xen для Windows ведётся давно. Во второй половине 2007 года появились первая реализация свободных паравиртуальных драйверов под Windows, сделанная Джеймсом Харпером (James Harper).

В конце 2007 года вышла версия 0.5.0 драйверов, которые можно рассматривать как экспериментальные. Их можно ставить в виртуальную машину и играться с ними, но их пока что ни в коем случае не стоит использовать на производственных системах.

Последняя выпущенная версия, 0.9.0 (18 мая 2008) демонстрирует достаточно хорошую производительность и стабильность. Тем не менее её лучше не использовать на производственных системах.

Icon-caution.gif

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


[править] Что есть сейчас

  • поддержка pvSCSI (начиная с 0.8.0)
  • очень простой инсталлятор (начиная с 0.8.0)
  • появилась поддержка сети(начиная с 0.6.5)
  • работает 64-битная версия Windows (начиная с 0.6.5)
  • поддержка 64-битной Windows XP в гостевом домене (начиная с 0.6.1)
  • В настоящий момент драйвер выглядит как SCSI miniport driver
  • Есть поддержка CDROM
  • Работает как под XP, так и под Windows 2003
  • Правильная служба остановки системы (отвечает на xm shutdown/reboot)
  • Есть поддержка сети
  • Есть поддержка framebuffer'а
  • Поддерживает 64-битная версия Windows

[править] Глюки!

Основные проблемы в настоящий момент:

  • Замечены некоторые трудновоспроизводимые ошибки на платформе Intel (на AMD их нет)
  • Если PV-драйверы отвечают за загрузочный диск, создание аварийных образов (core dumps) не выполняется.
  • не проводилось тщательное тестирование SMP
  • есть (очень маленькая) вероятность возникновения гонок при нумерации устройств

Устранённые:

  • xm reboot в конце концов зависает вместо того чтобы перезагрузиться
  • В настоящий момент поддерживаются только 32-битные системы.
  • Сетевые драйверы в настоящий момент не работают (ведётся работа по их усовершенствованию)
  • Гонки часто приводят к зависанию
  • Поддерживает только одно устройство
  • не выгружается как надо
  • Не всегда хорошо подключается (attach)
  • Блочное устройство должно быть размером ровно 1048756 * 512 байтов
  • Нет управления питанием
  • Не поддерживает миграцию, останов, запуск
  • Не нумерует существующие блочные устройства
  • Невозможно использовать диски, работающие через PV-драйверы для загрузки
  • Пока что очень медленно работает, не было никаких оптимизаций
  • Сделано не совсем как требует Microsoft
  • Вероятно, куча других ужасных глюков

[править] Версия 0.8

21 февраля 2008 года вышло очередное обновление паравиртуальных драйверов Xen под Windows (0.8.0), а потом ещё несколько дополнений к нему; последнее было сделано 26 апреля, версия 0.8.9.

В этой версии:

  • Многочисленные исправления ошибок, в частности исправлены ошибки в xennet
  • Улучшено предотвращение загрузки блочных устройств QEMU при загрузке с ключом /gplpv
  • поддержка pvSCSI (что даёт возможность увидеть из Windows SCSI-устройства такие как стриммеры и проч.)
  • появился очень простой инсталлятор (скрипт install.bat)

В 0.8.1 также добавилось:

  • бинарная версия для windows 2000 (из исходников и раньше работало, только надо было собирать)

Тестирование pvSCSI проводилось с использованием стриммера. Использовалась программа HP Library & Tape Tools. Все проверки пройдены успешно, включая обновление прошивки (firmware) ленточного накопителя.

Для использования pvSCSI в гостевой системе Windows необходима соответствующая поддержка со стороны хост-системы. Подробнее об этом: xen/pvscsi.

При инсталляции этих драйверов нужно удалить предыдущие! В частности, нужно вернуть драйвер Windows PCI Bus (для этого просто нажать «Обновить»).

Icon-caution.gif

Если вы загружались с ключом /GPLPV и видите какие-то QEMU-устройства, сразу же уничтожьте домен, поскольку есть шанс потерять данные. Обязательно напишите об этом в список рассылки или разработчику напрямую (контакты ниже)

.

Баги, которые сохранились:

  • не записываются bug checks
  • не проводилось тщательное тестирование SMP
  • есть (очень маленькая) вероятность возникновения гонок при нумерации устройств

В 0.8.5 добавилось:

. TCP large send offload and other performance enhancements                                                                   
. The system should crash with a BSoD if it fails to 'hide' the Qemu                                                          
Intel IDE device, which is much better than silent corruption.                                                                
. Fixes to the above hiding to properly detect the PCI Bus device driver                                                      
under non-English languages                                                                                                   
. Beginnings of suspend (required for migration). The Suspend part                                                            
appears to work, but the resume doesn't.  

В 0.8.6 добавилось:

. Xennet is configurable via the 'Advanced' tab on the network                                                                                                                                                  
interface.                                                                                                                                                                                                       
. Lots of bug fixes in Xennet (thanks Andy), and other changes mainly                                                                                                                                            
related to differences between windows and linux in the way they do csum                                                                                                                                         
and large send offload. Should work better than the qemu drivers in this                                                                                                                                         
respect.                                                                                                                                                                                                         
. Fixed a bug where an x32 DomU wouldn't boot if it was configured with                                                                                                                                          
4G or more of memory.                                                                                                                                                                                            
. Lots of other stuff probably.

В 0.8.7 по сравнению с 0.8.6 исправлен один небольшой баг.

В 0.8.8 по сравнению с 0.8.7 есть только одно изменение:

  • исправлен баг с AMD64, драйверы снова работают на этой платформе.

В версии 0.8.9 были сделаны изменения, направленные на повышение производительности работы драйверов. Тестирование говорит о том, что скорость передачи внутрь домена Windows (TX) поднимается до 1.5Gb/s, а скорость передачи данных из домена Windows (RX) поднимается до 0.5Gb/s.

Архив бинарной версии:

[править] Планы на будущее

  • Устранить вышеупомянутые глюки
  • Virtual IRQ
  • Более эффективное выделение памяти
  • Правильное выключение домена (нужен дравер работающий в user space)
  • Сетевые адаптеры (vif)
  • balloon-драйверы (this should actually be pretty easy)

[править] Установка и использование

[править] Получение

Бинарная версия:

Если нужны более старые версии, их нужно собирать из исходников.

Архив исходных текстов можно получить из репозитория Mercurial:

[править] Сборка

Вы можете использовать собранные драйверы.

Если вы хотите собрать драйверы из исходников, необходимо выполнить такую процедуру.

(будет описана позже)

[править] Инсталляция

Для инсталляции драйверов выполните шаги в точности как описано ниже. Если ошибиться, виртуальная машина может перестать загружаться (правда, всегда остаётся возможность использования варианта загрузки 'Last known good configuration').

1. Скопируйте драйверы (или собранные в соответствии с процедурой описанной в следующем разделе, или непосредственно из бинарного архива) в какой-либо каталог на виртуальной машине (например, в C:\Xen\), так чтобы дерево выглядело следующим образом:

Xen\<arch>\xenhide.inf
Xen\<arch>\xenpci.inf
Xen\<arch>\xenvbd.inf
Xen\<arch>\i386\xenaddresource.sys
Xen\<arch>\i386\xenhide.sys
Xen\<arch>\i386\xenpci.sys
Xen\<arch>\i386\xenvbd.sys
Xen\<arch>\i386\WdfCoInstaller01005.dll
(ещё надо будет скопировать WdfCoInstaller01005.dll из каталога Redist, что в DDK)
(<arch> = winxp для Windows XP, или winnet для Windows 2K3)

2. Откройте device manager (Правая кнопка на My Computer, потом таб Hardware, потом Device Manager)

3. Найдите 'PCI Device' в ветке 'Other Devices' — на нём должен стоять восклицательный знак. Щёлкните по нему правой кнопкой и выберите 'Update Driver...'

4. В ответ на 'Can Windows connect to Windows Update...' выберите 'No, not this time' и нажмите Next

5. Выберите 'Install from a list of specific location (Advanced)' и нажмите Next

6. Отключите галочку 'Search removable media...' и включите 'Include this location...'. Введите имя каталога, в котором вы разместили .inf файлы, после чего нажмите Next

7. Windows должна будет найти драйвер XenPCI и пожаловаться что этот драйвер не подписан. Нужно будет с этим согласиться.

8. Windows должна будет загрузить драйвер XenPCI и показать четыре новых устройства 'Othher Devices' - console, vfb, vif и vbd.

9. Повторите шаги 3-7 для устройства vbd. Windows should then загрузить the XenVBD драйвер.

10. В Device Manager, перейдите к системным устройствам 'System devices', щёлкните правой кнопкой на PCI Bus и выберите Update Driver.

11. В качестве ответа на 'Can Windows connect to Windows Update...' выберите 'No, not this time' и нажмите Next

12. Выберите 'Install from a list or specific location (Advanced)' и нажмите Next

13. На этот раз выберите 'Don't search. I will choose the драйвер to install' и нажмите Next

14. Нажмите 'Have Disk' и укажите путь, где лежать .inf файлы.

15. Выберите 'Xen PCI Device Hider Driver' и установите его; нужно будет согласиться с тем, что драйвер не подписан.

16. Отредактируйте файл boot.ini, чтобы он выглядел так:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise, GPLPV" /noexecute=optout /fastdetect /gplpv

17. Самое важное в этом файле — строчка с ключом /gplpv. Эта строчка заставляет активироваться драйверы прямо при загрузке системы.

18. Перезагрузите гостевую систему и выберите вариант загрузки с /gplpv.

Если не использовать /gplpv, драйвер xenvbd будет подхватывать только те устройства, которые будут подключаться после загрузки системы.

Подключить устройство можно с помощью, например, такой команды, вызванной в домене 0:

" xm block-attach mywindowsdomain phy:/dev/someblockdevice /dev/hdc w "

Нужно использовать "phy:"-устройства, иначе backend-драйвер не сможет корректно определить и сообщить размер блока и сектора.

Когда вы сделаете block-attach, блочное устройство появится в Windows; на нём можно будет создавать таблицу разделов, форматировать и так далее.

19. Если вы хотите использовать службу ShutdownMon, выполните команду

   ShutdownMon -i

которая проинсталлирует эту службу в систему. Надо будет указать, что служба должна работать в автоматическом режиме ('Automatic') и запускаться при загрузке. Эта служба нужна для того чтобы команды 'xm shutdown' 'xm reboot' выполнялись корректно.

[править] Как составить отчёт об ошибке

Синий экран смерти, который возник при использовании PV-драйверов

Драйверы находятся ещё в очень сыром состоянии. Поэтому, их использование пока что стоит рассматривать скорее как эксперимент, нежели реальное использование в производственной среде.

Причём эксперимент может не оказаться успешным. Данные Windows-системы не потеряются и она останется рабочей (при условии использования старых драйверов), но не исключено, что при попытке использовать новые, она будет валиться в синий экран смерти.

Что можно сделать в такой ситуации?

Можно подготовить сообщение об ошибке, которая у вас возникла с подробным её описанием.

Сообщение должно включать информацию о таких компонентах вашей системе:

  • Центральный процессор
  • Гипервизор (версия, источник, сборка)
  • Ядро домене 0 (версия, источник, сборка)
  • Конфигурация гостевого домена (конфигурационный файл домена)
  • Гостевая операционная система (версия, наличие сервиспаков)
  • Паравиртуальные драйверы (версия, сборка)
  • Крэш-дамп гостевой операционной системы

Первые три пункта можно определить с помощью команд xm dmesg и xm info (можно отправлять вывод этих команд целиком).

Для получения крэш-дампа выполните следующие действия:

1. Загрузитесь без ключа /GPLPV
2. Включите запись крэш-дампов в гостевой операционной системе
3. Запустите DebugView
4. Сделайте block-attach
5. Должен создаться крэш-дамп
6. Загрузитесь без ключа /GPLPV снова
7. Запустите DebugView
8. Сделайте анализ крэш-дампа (скорее всего, это C:\Windows\Memory.dmp)
9. Приложите полученные данные к отчёту

Как включить запись крэш-дампов в гостевой операционной системе:

  1. Щёлкните правой кнопкой на 'My Computer' и выбирите 'Properties'.
  2. Перейдите в таб 'Advanced' и выберите 'Settings' в 'Startup and Recovery'.
  3. В 'Write Debugging Information' есть опции:
    • 'Small memory dump (64 KB)',
    • 'Kernel Memory Dump', (можно выбрать эту)
    • 'Complete Memory Dump'. (но лучше эту)

.

Полученное сообщение можно отправить по одному из адресов:

  • James Harper <james.harper@bendigoit.com.au>, на английском
  • Игорь Чубин <igor@chub.in>, на русском или английском
  • списки рассылки xen-users <xen-users@lists.xensource.com> и xen-devel <xen-devel@lists.xensource.com>, на английском

[править] См. также

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

[править] Примечания

  1. Слово "dontuse" в названии версии намекает, что не надо спешить с использованием, а сначала прочитать это:
    I have just uploaded a new testing version of GPL PV drivers for                                         
    Windows. Have a look for 0.10.0.97-dontuse at                                                            
    http://www.meadowcourt.org/downloads (the -dontuse bit is to scare                                       
    people away who haven't read this email :)                                                               
                                                                                                             
    As usual, please test thoroughly on a test DomU and make sure you have a                                 
    backup before installing on a non-test system. In particular, I'm only                                   
    testing with Xen 3.4.1 these days so anything older isn't tested                                         
    although it should work.                                                                                 
                                                                                                             
    There was a problem with the signing of the drivers that would prevent                                   
    them working properly under Vista/2008 x64 even with testsigning                                         
    enabled. This should resolve that.                                                                       
                                                                                                             
    The installation procedure for Vista/2008 x64 is as follows:                                             
    . Run 'bcdedit /set testsigning on'                                                                      
    . Reboot                                                                                                 
    . Install the drivers. Accept any warnings and tick 'always trust...'                                    
    when prompted.                                                                                           
    . Make sure you now have PV network and SCSI adapters present                                            
    . Reboot                                                                                                 
                                                                                                             
    If something doesn't work, you should be able to boot to safe mode                                       
    unless you forgot to run 'bcdedit /set testsigning on' in which case you                                 
    will probably have an unbootable system... for some reason the vista F8                                  
    boot menu doesn't allow you to turn on testsigning and safe mode at the                                  
    same time. Ideally the installer would be able to detect that we are                                     
    using a test certificate and instruct you to turn on testsigning first                                   
    but I don't yet know how to do that. I'll see if I can at least put in a                                 
    loud warning at installation time...
    
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