Почему в OS X допускается одновременное использование нескольких программ виртуализации, а в других системах - нет?

393
Tarnay Kálmán

Я был удивлен, узнав, что VirtualBox и докер HyperKit могут одновременно запускать виртуальные машины на OS X. Использование разных гипервизоров одновременно невозможно в Windows или Linux. Почему это работает на OS X?

0
Вы можете одновременно запускать 32-битные (но не 64-битные) виртуальные машины Hyper-V и VirtualBox в Windows. Какой битностью были ваши виртуальные машины? lx07 5 лет назад 1
Докер на самом деле не считается гипервизором. Для запуска Docker необходим гипервизор. На Windows Hyper-V или VirtualBox могут быть использованы. В Linux или OSX кажется, что VirtualBox воспроизводит этот ролл. Ramhound 5 лет назад 0
Docker в Linux не нуждается в гипервизоре, так как пространства имен Linux являются родными для Linux, поэтому виртуальная машина не требуется. Docker для Mac использует HyperKit. Tarnay Kálmán 5 лет назад 0
@ lx07, оба 64 битные. VirtualBox показал, что он использует аппаратную виртуализацию. Я не могу сказать, использовал ли HyperKit его, но он должен использовать его согласно официальному сообщению в блоге Docker (https://blog.docker.com/2016/05/docker-unikernels-open-source/). Tarnay Kálmán 5 лет назад 0

1 ответ на вопрос

1
harrymc

Позвольте мне попытаться ответить на этот не очень простой вопрос.

Существует два типа гипервизоров, которые обобщены в Википедии :

Тип-1, нативные или голые металлические гипервизоры

Эти гипервизоры работают непосредственно на оборудовании хоста для управления оборудованием и управления гостевыми операционными системами. По этой причине их иногда называют железными гипервизорами.

Тип-2 или размещенные гипервизоры

Эти гипервизоры работают в обычной операционной системе (ОС) так же, как и другие компьютерные программы.

Hyper-V имеет тип 1, что означает, что после установки он становится компьютером. Фактически, установка функции Hyper-V означает, что установленная версия Windows является просто виртуальной машиной, которой, однако, выделено 100% аппаратных ресурсов.

VirtualBox и VMWare для Windows относятся к типу 2, что означает, что они работают под Windows как обычные программы, в которых процессоры эмулируются как потоки, поэтому теоретически могут работать под гипервизором типа 1, таким как Hyper-V.

Проблема возникает, когда аппаратная виртуализация используется для эмуляции разнородных процессоров, а именно Intel VT-x и AMD-V. Такое оборудование требуется для эмуляции, например, 32-разрядного процессора на 64-разрядном компьютере.

Аппаратная виртуализация может иметь только одного владельца (или пользователя). Это означает, что только один гипервизор может использовать его одновременно и исключает использование двух гипервизоров типа 2, работающих на одном компьютере.

Кроме того, специально для упомянутого Docker, это не гипервизор. Как объясняет Вкипедия :

Docker - это компьютерная программа, которая выполняет виртуализацию на уровне операционной системы, также известную как «контейнеризация».

Docker не выполняет никакой эмуляции процессора или устройства, но предоставляет тонкий слой для преобразования вызовов операционной системы в контейнерах в вызовы операционной системы хоста. Контейнеры очень ограничены в том, насколько их операционная система может отличаться от операционной системы хоста, поскольку она должна быть достаточно схожей для простой и легкой трансляции вызовов. Поэтому Docker не конфликтует с гипервизорами при использовании оборудования.

Привет, спасибо за объяснение типа 1 и типа 2. Я понимаю, что Docker не является гипервизором. Ядро OS X настолько отличается от Linux, что контейнеры Docker не могут работать непосредственно на нем, поэтому Docker для Mac по умолчанию использует виртуальную машину Linux за кулисами, эта виртуальная машина запускается с использованием HyperKit, который, в свою очередь, использует Hypervisor.framework, который требует VT -x (так что помощь в виртуализации оборудования?). Tarnay Kálmán 5 лет назад 0
Кроме того, существуют такие аспекты, как сетевая интеграция, аппаратное ускорение, управление и совместное использование памяти и другие виды совместного использования (например, общие папки, буфер обмена), которые могут иногда мешать работе виртуальных машин из нескольких гипервизоров одновременно, так что даже это кажется работа, скорее всего, не будет поддерживаться производителем. Cameron Kerr 5 лет назад 0

Похожие вопросы