Libvirt PCI passthrough for Xen

Введение

В мире виртуальных машин существует много различных гипервизоров, каждый со своими функциональным возможностями, интерфейсами и нюансами. Для унификации этих интерфейсов был разработан проект с открытым исходным кодом libvirt — API, демон и набор утилит. Основная цель проекта — избавить пользователя от непосредственного управления гипервизором. В том или ином виде поддерживаются KVM/QEMU, LXC, Xen, VirtualBox, Hyper-V и другие.

Важной частью виртуализации является "прокидывание" (passthrough) физических устройств, в частности, PCI устройств, в виртуальную машину. Почти все гипервизоры поддерживают эту технологию. Libvirt также предоставляет пользователю соответствующий API для управления passthrough. Ранее (2009 год) libvirt поддерживал управление passthrough для Xen, однако с течением времени эта функциональность была упразднена. Данная задача заключается в восстановлении этой функциональности на современном уровне.

Требования

  1. PCI passthrough для XEN должен быть конфигурируем через Libvirt с учетом параметров pci-passthrough в XEN http://xenbits.xen.org/docs/unstable/man/xl.cfg.5.html
  2. Возможность создавать и управлять драйвер-доменами (hardware domains)
  3. Динамическое назначение Virtual Functions устройств (обычно сетевых карт, SR-IOV)

Поскольку работа будет проводиться в Libvirt, требования к технологиям и архитектуре полностью диктуются проектом Libvirt. Лицензия — GNU LGPL 2.1 или выше (как у Libvirt)

Планируемые результаты

Пуллреквест с реализацией PCI passthrough для XEN в Libvirt. Прохождение ревью кода специалистами YADRO.

Этапы разработки

  1. Знакомство с технологиями — научиться пользоваться XEN, поуправлять им через Libvirt.
  2. Обзор исходников и архитектуры Libvirt.
  3. Реализация.
  4. Апробация и тестирование, исправление замечаний.
  5. Оформление результатов.

План коммуникаций

Еженедельные звонки (30 минут) с представителями YADRO для демонстрации результатов; Коммуникация в Telegram; Инструкция по правильному написанию вопросов: http://tinyurl.com/stack-hints

Порядок приёмки и оценивания

Оценка A ставится за сделанный пуллреквест и одобрение кода специалистом компании YADRO. Оценка F — если задача не выполнена.

Требования к студенту

Владение C/C++, большим плюсом будет знакомство с гипервизором Xen

Уровень

3 курс, Бакалаврская ВКР, Магистерская ВКР


Руководитель

Смирнов Кирилл Константинович


Консультант

Смирнов Кирилл Константинович


Источник

YADRO