Как Xen предоставляет оборудование для гостей?

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

Каким образом Xen или любой гипервизор предоставляет оборудование для гостевых операционных систем?

Например, гость, желающий общаться в сети; на каком-то этапе его запрос должен быть переведен в запрос к NIC. Предоставляет ли гипервизор фиктивное сетевое устройство, которое, как мы предполагаем, гость знает, как использовать? Или у паравиртуализированных гостей есть знания о том, как напрямую сделать запрос на конкретную часть оборудования? (Если это так, что делают не-паравиртуализированные гости?)

Как только запрос сделан, кто его обрабатывает? Я предполагаю, что гипервизор мало знает о физическом оборудовании (с точки зрения драйвера), поэтому он, вероятно, должен перейти к dom0. Правильно?

Я спрашиваю, потому что я люблю заниматься разработкой ядра, но написание драйверов - это рутина. Если бы я мог положиться на dom0 с довольно хорошей аппаратной поддержкой (скажем, Ubuntu), а затем просто написать свое ядро ​​для запуска паравиртуализированного и / или использовать какое-нибудь фиктивное устройство, которое предоставляет Xen, это сделало бы мою жизнь намного проще, Однако найти документацию по этим темам довольно сложно, поэтому я остановлюсь, вероятно, на рассмотрении ряда гостевых реализаций Xen; HaLVM, порт GHC для непосредственного запуска программного обеспечения на Haskell в качестве гостя Xen, выглядит хорошим началом.

Спасибо и приветствия!

Редактировать: этот маркетинговый документ от Xen.org, кажется, утверждает, что dom0 запускает драйверы для облегчения блочного устройства и доступа к сети, в соответствии с моим предположением. В этом случае любые технические ссылки / спецификации / и т. Д. было бы здорово!

Изменить: эта (очевидно устаревшая) документация выглядит хорошо.

1 ответ

Решение

Существует три типа моделей устройств.

  1. PV - например, гости Linux PV используют pv_ops ( http://wiki.xen.org/wiki/XenParavirtOps, http://wiki.xen.org/wiki/Category:PVOPS)

  2. HVM - полная виртуализация устройств с QEMU ( https://serverfault.com/questions/222010/difference-between-xen-pv-xen-kvm-and-hvm)

  3. Passthrough ( http://wiki.xensource.com/wiki/Xen_PCI_Passthrough)

Книга "Полное руководство по гипервизору Xen" может быть вам полезна.

В вики есть немало информации, связанной с разработкой: http://wiki.xen.org/wiki/Category:Developers.

Другие вопросы по тегам