что если запустить два гипервизора VMX типа 2 на одном хосте x86? - PullRequest
0 голосов
/ 10 мая 2018

При работе с Intel VMX, во-первых, необходимо вызвать VMXON(VMXON_REGION), чтобы включить VMX в ЦП, а затем VMPTRLD(VMCS_REGION) и т. Д.
А вот и мой вопрос.
Что, если два хост-гипервизора работают одновременно на одном хосте X86? Первый VMXON работает хорошо, но второй VMXON не работает.
И 2 гипервизора могут вызывать VMPTRLD(VMCS_REGION_a), и VMPTRLD(VMCS_REGION_b), текущая VMCS в ЦП изменена, это приведет к сбою другого гипервизора или они могут сосуществовать друг с другом?
Из моего чтения SDM я не думаю, что они могут сосуществовать, может быть, я снова пропустил что-то важное.

Пожалуйста, помогите прояснить это.

1 Ответ

0 голосов
/ 11 мая 2018

Вы правы, текущее состояние Intel VT-x не позволяет работать одновременно двум независимым мониторам виртуальных машин (VMM). Они создадут конфликт системных ресурсов, который приведет к неопределенному поведению, включая сбои виртуальных машин (VM), зависания или перезагрузки, возможно повреждение данных.

Например, небезопасно загружать драйверы ядра для разных решений визуализации одновременно, даже не запуская виртуальные машины. У меня возникли проблемы, когда, например, KVM и Virtualbox или KVM и Simics VMP были загружены вместе.

Невозможно, чтобы один VMM безопасно заблокировал загрузку или работу другого. Даже для одного VMM проблематично надежно обнаруживать присутствие других VMM, поскольку VMXON / VMXOFF может выполняться динамически во время работы операционной системы (ОС), и нет никакого аппаратного ресурса, который мог бы действовать как взаимоисключающий объект или блокировка для виртуализации. ресурсы.

Единственный подход, который будет работать с современным оборудованием, заключается в том, чтобы хост-операционная система предоставляла API для передачи запросов к базовым ресурсам виртуализации (VMXON / VMXOFF, VMPTRLD, VMLAUNCH / VMRESUME и т. Д.) И чтобы все VMM согласились использовать это API. Такие возможности существуют для Apple Mac OS X и с недавнего времени для систем Microsoft Windows. Однако можно утверждать, что эти API несколько ограничивают автора VMM.

...