Как Xen предоставляет оборудование для гостей?
(Я чувствую, что этот вопрос наполовину относится к этому вопросу, а наполовину к ошибкам сервера; пожалуйста, дайте мне знать, если вы считаете, что есть лучшее место для этого.)
Каким образом Xen или любой гипервизор предоставляет оборудование для гостевых операционных систем?
Например, гость, желающий общаться в сети; на каком-то этапе его запрос должен быть переведен в запрос к NIC. Предоставляет ли гипервизор фиктивное сетевое устройство, которое, как мы предполагаем, гость знает, как использовать? Или у паравиртуализированных гостей есть знания о том, как напрямую сделать запрос на конкретную часть оборудования? (Если это так, что делают не-паравиртуализированные гости?)
Как только запрос сделан, кто его обрабатывает? Я предполагаю, что гипервизор мало знает о физическом оборудовании (с точки зрения драйвера), поэтому он, вероятно, должен перейти к dom0. Правильно?
Я спрашиваю, потому что я люблю заниматься разработкой ядра, но написание драйверов - это рутина. Если бы я мог положиться на dom0 с довольно хорошей аппаратной поддержкой (скажем, Ubuntu), а затем просто написать свое ядро для запуска паравиртуализированного и / или использовать какое-нибудь фиктивное устройство, которое предоставляет Xen, это сделало бы мою жизнь намного проще, Однако найти документацию по этим темам довольно сложно, поэтому я остановлюсь, вероятно, на рассмотрении ряда гостевых реализаций Xen; HaLVM, порт GHC для непосредственного запуска программного обеспечения на Haskell в качестве гостя Xen, выглядит хорошим началом.
Спасибо и приветствия!
Редактировать: этот маркетинговый документ от Xen.org, кажется, утверждает, что dom0 запускает драйверы для облегчения блочного устройства и доступа к сети, в соответствии с моим предположением. В этом случае любые технические ссылки / спецификации / и т. Д. было бы здорово!
Изменить: эта (очевидно устаревшая) документация выглядит хорошо.
1 ответ
Существует три типа моделей устройств.
PV - например, гости Linux PV используют pv_ops ( http://wiki.xen.org/wiki/XenParavirtOps, http://wiki.xen.org/wiki/Category:PVOPS)
HVM - полная виртуализация устройств с QEMU ( https://serverfault.com/questions/222010/difference-between-xen-pv-xen-kvm-and-hvm)
- Passthrough ( http://wiki.xensource.com/wiki/Xen_PCI_Passthrough)
Книга "Полное руководство по гипервизору Xen" может быть вам полезна.
В вики есть немало информации, связанной с разработкой: http://wiki.xen.org/wiki/Category:Developers.