Можно ли настроить виртуальную машину внутри другой виртуальной машины?

30

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

Tester101
источник
3
Практическая причина - если вы арендуете сервер. Не имеет значения, физический или виртуальный сервер - это мой сервер. И если я хочу установить VirtualPC или Virtual Server на моем сервере, это мое дело.
Ян Бойд
2
Это не совсем практическая причина, поскольку «практичность» установки ВМ внутри ВМ будет в конечном итоге зависеть от того, «практично» ли реализовать эту возможность на выбранной платформе HW + SW. Просто потому, что кто-то «хочет» это сделать, не делает это практичным.
Джо Интернет
1
Для тех, кто задается вопросом, почему кто-то может захотеть сделать это, вот моя причина, хотя я признаю, что это не причина «реального мира» и что я не могу придумать одну из них. Я готовлюсь к экзамену RHCSA, но у меня нет доступа к системе с аппаратной виртуализацией. Поэтому я надеялся выполнить это на виртуальной машине RHEL, работающей в качестве экземпляра Amazon AWS. Поскольку машина AWS (почти наверняка) сама является виртуальной машиной, для запуска KVM на ней потребуются вложенные виртуальные машины.
Стивен К

Ответы:

27

Вложенные виртуальные машины - это то, что было сделано навсегда на оборудовании IBM Mainframe. Это оборудование делает много вещей, чтобы сделать процесс очень очень эффективным. Вы можете иметь виртуальные машины, вложенные на произвольную глубину, и это работает очень хорошо.

Аппаратное обеспечение ПК совсем недавно сделало это едва ли возможным. Об этом говорится в документе на веб-сайте VMware, но суть в том, что виртуальные машины могут иметь глубину 2, но только на очень современном оборудовании, поддерживающем настоящую аппаратную виртуализацию (VT-x или AMD-V), а глубина второй виртуальной машины должна быть запуск более старого стиля BT / виртуализации в двоичном стиле. Существуют также серьезные ограничения для виртуальных мониторов, которые вы можете запускать на внутреннем госте.

Само собой разумеется, что это не поддерживается, и я ожидал бы, что это будет действительно ненадежным, если вы сделаете что-нибудь даже отдаленно странное (как Hyper-V под ESX). И производительность не будет хорошей, независимо от того, стабильна ли она.

Крис
источник
2
Этот документ значительно изменился с тех пор, как он был написан, равно как и уровень техники. Этот ответ, как было написано, сегодня действительно не применим. Рассмотрите возможность обновления.
Майкл Хэмптон
1
@MichaelHampton Ваши комментарии очень скептически и звучат оптимистично; Вы могли бы предоставить обновленный ответ или ссылку на него?
ILMostro_7
Вот ссылка на страницу Fedora-Wiki, описывающая, как включить вложенный вирт в KVM .
ILMostro_7
1
Просто для подтверждения. Что касается предложения Hyper-v от MS, я считаю, что вложенная виртуальная машина не поддерживается до настоящего времени.
RBT
2

Да, ты можешь. Например, в Linux вы можете запустить Xen с несколькими виртуальными машинами, на которых работает OpenVZ, VirtualServer или какой-либо другой тип системы виртуальных машин. Это, безусловно, возможно, а также очень практично в зависимости от вашей цели.

Одна из причин, по которой я мог бы подумать, это запустить несколько серверов на одном физическом компьютере. Запускаете ли вы его как один или несколько уровней иерархии виртуальных машин, зависит от вашего плана изоляции ресурсов.

sybreon
источник
2

Если вам нужна какая-то конкретная, скажем, устаревшая система для виртуализации, вы всегда можете сделать это с помощью программного обеспечения, тогда вложение не является проблемой. Попробуйте qemu, я сделал это на 2 уровня глубже, но вы можете пойти глубже, хотя производительность, вероятно, сделает его бесполезным. Кстати, архитектура ПК была номенклатурой, сделанной IBM, но для совершенно другого использования по сравнению с тем, что используется сегодня.

Michaels
источник
1

Я не верю, что большинство пакетов виртуализации позволит вам запускать виртуальную машину в виртуальной машине. Я знаю, что VMware проверит, когда он установлен, чтобы увидеть, устанавливается ли он на ВМ, и я надеюсь, что другие продукты делают то же самое. Я не думаю, что необходимые инструкции ЦП будут передаваться от гипервизора, работающего на аппаратном обеспечении, до виртуальной машины для достижения второй виртуальной машины. Если бы это сработало, вы бы также добавили накладные расходы, не получив ничего взамен.

Что касается того, практично ли это - я не понимаю почему. Если вам нужна другая виртуальная машина, вы можете просто запустить ее рядом с той, что у вас уже есть. Я не могу представить себе случай, когда у вас должна быть виртуальная машина, работающая внутри другой виртуальной машины. Дополнительные издержки без пропорционального усиления какого-либо ресурса сделали бы это непрактичным.

Баумгарт
источник
1

Да. Существуют даже способы запуска VMware ESX / vSphere на виртуальной машине. Я не знаю, почему вы захотите на практике, но это было сделано.

Кевин Куфал
источник
Я видел людей, желающих протестировать ESX на виртуальной машине, но установка требует дополнительной работы после обычного метода установки. Это не то, что работает из коробки.
Баумгарт
1

Да, вы МОЖЕТЕ, но, как и многие другие вещи, это не значит, что вы должны. Я видел виртуализированный сервер ESX, на котором запущена виртуальная машина с другим виртуальным сервером ESX. Конечно, это был тест, просто чтобы посмотреть, можно ли это сделать (и можно), я бы не стал его рекомендовать.

SQLChicken
источник
1

Это зависит от техники виртуализации. Если вы используете решения, которые не являются «настоящей» виртуализацией, такие как UML, вы можете запустить их внутри, скажем, VMWare. Или сами по этому вопросу.

Установки на основе UML могут выполняться внутри виртуальных машин VMWare и других установок на основе UML (даже вложенных). Показатели производительности не будут хорошими, хотя!

Дэвид Спиллетт
источник
1

Да, это возможно, но очень медленно.

Это особенно полезно, если вы арендуете сервер с ограниченным выделенным публичным IP-адресом (который зависит, например, от вашего MAC-адреса, чтобы не отравить сеть вашего сервера); и что вы хотите, чтобы ваш виртуальный IP-адрес был соединен напрямую с интернетом. Поэтому, когда вы не можете иметь больше, чем, например, 3 общедоступных IP-адреса, но при этом вам нужно 10 ВМ, неплохо иметь виртуальные машины в глобальной ВМ: вы будете использовать только один из указанных общедоступных IP-адресов, а затем есть много виртуальных машин с суб-мостами.

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

Yannovitch
источник
0

Как и многие люди, уже все готовы сказать: конечно, это возможно. Это зависит от того, насколько хорошо эмулируется оборудование виртуальной машины и какое программное обеспечение для виртуализации вы используете. VMWare Workstation, по крайней мере, не хочет, чтобы вы виртуализировали ее.

Что касается практичности, может быть, нам следует задать вам вопрос: зачем вам делать такие вещи? Что плохого в том, чтобы просто запустить две виртуальные машины рядом? И в какой степени вы спрашиваете, практично ли это? То есть, если вы беспокоитесь о целесообразности установки и настройки, вероятно, нет. Если вас больше волнует практическое использование, опять же, я не могу придумать, для чего мне нужно это делать, если я не ищу ошибки в программном обеспечении для виртуализации или что-то еще.

mrduclaw
источник
0

Вы можете, но я не рекомендую это.

Производительность обычно сильно падает во всем этом процессе на машине «гостя гостя». Если вы действительно должны сделать это без специального аппаратного и программного обеспечения, удачи вам. Однако, как правило, это не очень хорошая практика, особенно с распространенными методами, используемыми для достижения виртуализации.

Я знаю, что если вы попытаетесь запустить VMWare в системах VMWare, он будет жаловаться и не позволит вам сделать это. Я не уверен насчет VirtualBox. Я знаю нескольких людей, которые по какой-либо причине размещают Docker-контейнеры в Docker-контейнерах (или так они говорят). Мораль этой истории такова: хотя это и возможно, но вряд ли это разумно, если вы действительно не знаете, что делаете.

Лично я не знаю ни одного фактического варианта использования для этого, кроме сетевого взаимодействия.

Мифический Джаггернаут
источник
2
«Специализированное» оборудование, которое вам нужно, - это практически любой процессор, изготовленный за последние семь или восемь лет.
Майкл Хэмптон