Вложенная виртуализация Hyper-V в Windows Server 2016

hyper-vНи для кого не секрет, что в Windows Server 2016 появилась вложенная виртуализация Hyper-V. Несмотря на то, что на момент написания статьи доступна лишь версия Technical Preview 5, уже в ней можно очень близко познакомиться с новым функционалом, о котором я и постараюсь коротко рассказать в этой статье.

Хочу отметить, что все сказанное относится к предрелизной версии и может сильно отличаться от официального релиза.


Если вам интересна тематика Windows Server, рекомендую обратиться к тегу  Windows Server  на моем блоге.


Вложенная виртуализация Hyper-V

Функция вложенной виртуализации в гипервизорах разных производителей доступна достаточно давно. Например у VMWare поддержка 64х-битных вложенных виртуальных машин была реализована в версии ESXi 5.1 и это было аж в 2011 году, не говоря о поддержке 32х-битных вложенных ОС, доступных ещё ранее. Другие вендоры также не отставали. Тем не менее, у Microsoft мы не могли увидеть такого функционала до сегодняшнего дня. Почему? Официального ответа мне найти не удалось, но можно говорить как об общей позиции (неприоритетная на то время задача), так и о чисто логических рассуждениях — в 2008 году с выходом Windows Server 2008 и последующей 2008 R2 говорить о вложенной виртуализации было не совсем актуально, ведь гипервизор был ещё во многом сыроват по многим направлениям (например max. vCPU упиралось в 4 шт.), а ситуация с конкурентами была такова, что Microsoft по сути вынужден был активно их догонять.

Архитектура

Классическая виртуализация первого типа представляет из себя гипервизор, разграничивающий доступ к оборудованию между единственным родительским и множеством гостевых разделов. При этом доступен только один уровень виртуализации — Level 1 — и использование вложенных виртуальных машин (VM внутри VM) не подразумевается. В общем виде архитектура выглядит следующим образом 1:

nesteddiagram

Раньше попытка развернуть роль Hyper-V внутри виртуальной машины непременно заканчивалась ошибкой:

vlozhennaya-virtualizatsiya-hyper-v-01

Так происходило потому, что гипервизор намеренно маскировал от гостевых ОС наборы аппаратных инструкций (Virtualization Extensions), отвечающих за виртуализацию 2 — Intel VT-x и AMD-V (все мы помним, что Hyper-V — это система именно аппаратной виртуализации и без поддержки функционала со стороны «железа» работать не будет).

Теперь же архитектура изменилась таким образом, что появилась возможность передачи наборов аппаратных инструкций в гостевые ОС (по умолчанию этот функционал отключен):

nesteddiagram2

Все это открывает возможности для вложенной виртуализации, которая при этом не ограничена вторым уровнем (Level 2 на рис. вверху).

Примечание: в лабораторных условиях я совершенно спокойной развернул виртуальную машину с четвертой степенью вложенности.

Но как и у любой свежей технологии (в данном случае свежей именно для Microsoft), у неё есть некоторые ограничения, о которых ниже.

Ограничения

Условно можно разделить на аппаратные и программные.

Аппаратные

Аппаратные ограничения упираются в обязательную поддержку процессором Intel технологий VT-x 3 и EPT. Если наличие VT-x было стандартным требованиям и для ранних версий Hyper-V, то необходимость в EPT появилась только сейчас и только для вложенной виртуализации 4:

vlozhennaya-virtualizatsiya-hyper-v-13

Примечание: Intel EPT предоставляет виртуальным машинам прямой доступ к памяти, минуя гипервизор 5 и по сути представляет из себя технологию виртуализации страниц памяти. Технология эта не нова и её можно встретить даже в давно устаревших Core 2 Quad.

И я ничего не забыл, не написав про процессоры AMD. Дело в том, что в Windows Server 2016 TP5 вложенная виртуализация на процессорах AMD пока что не поддерживается.

Программные

Программных ограничений значительно больше:

  1. Использование Windows Server 2016 или Windows 10 как в родительском, так и в гостевых разделах;
  2. Виртуальная машина с версией конфигурации 8.0 и выше;

Примечание: в Windows Server 2016 изменился формат хранения файлов конфигурации виртуальных машин 6. Если верить разработчикам, то новый формат стал более надежным, также появилась поддержка новых функций, которые будут недоступны при использовании виртуальных машин со старой версией конфигурации (для Windows Server 2012 R2 эта версия — 5.0).

Для вложенных виртуальных машин не поддерживается:

  1. Динамическая память;
  2. Динамическая миграция;
  3. Снимки виртуальных машин и состояния Save/Restore;

Важно помнить, что если вы собрались выпускать вложенные виртуальные машины во внешнюю сеть, то на виртуальном адаптере «хостовой» виртуальной машины будет поднят виртуальный свитч и на нем будут несколько виртуальных сетевых адаптеров, а значит несколько MAC-адресов, а значит надо включать спуфинг MAC-адресов на адаптере.  Это тоже в некотором смысле ограничение.

Есть и обходной вариант — использовать NAT (это тоже новый функционал, о котором расскажу ниже).

Применение

У тех, кто встретился с вложенной виртуализацией впервые, может возникнуть вопрос об области её применения. Остановимся на этом более подробно.

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

Мне стало интересно проверить на реальной среде падение производительности ЦП внутри виртуальных машин разной степени вложенности. Для этого я использовал Hot CPU Tester Pro. Хоть и тестирование получилось исключительно субъективное, но оно как минимум намекает на существенное падение отдачи CPU:

vlozhennaya-virtualizatsiya-hyper-v-02

Примечание: для измерения индекса производительности ЦП я просто запускал тест по очереди сначала на хосте (при этом все VM были заглушены), потом включал виртуальную машину и измерял индекс внутри неё, выделив максимально возможное количество vCPU. Следующим шагом был запуск VM внутри этой VM и измерение индекса производительности уже внутри виртуальной машины второй вложенности и т.д.

Моего терпения хватило только для развертывания экземпляра третьей вложенности.

Настройка

Для возможности использовать вложенную виртуализацию, необходимо выполнить ряд настроек на хостовой ОС. Приступаем.

Обновление версии VM

Если по каким-либо причинам ваша виртуальная машина имеет версию конфигурации ниже 7.1 (например она смигрировала на ваш Hyper-V с предыдущих версий Technical Preview), то обязательно обновляем конфигурацию вручную, нажав правой кнопкой по VM и выбрав Обновить версию конфигурации:

vlozhennaya-virtualizatsiya-hyper-v-03

Или через Powershell:

vlozhennaya-virtualizatsiya-hyper-v-04

Последний вариант удобен при массовом обновлении виртуальных машин. Обновить все VM враз можно командой Get-VM | Update-VMVersion.

Активирование вложенной виртуализации

По умолчанию гипервизор все также маскирует аппаратные наборы инструкций, отвечающих за виртуализацию, не передавая их гостевым ОС, как я и упоминал ранее. Чтобы изменить это поведение, необходимо выполнить команду:

Изменение опции ExposeVirtualizationExtensions доступно только через Powershell.

Спуфинг MAC-адресов / NAT

Если вы планируете настроить сеть вложенных виртуальных машин таким образом, чтобы все они находились в реальной локальной сети, то на одном единственном сетевом адаптере «хостовой» виртуальной машины будут висеть несколько MAC-адресов. Это ожидаемо вызовет проблемы со связью, если не активирована настройка Включить спуфинг MAC-адресов (а она не активирована по умолчанию).

Ставим галочку вручную:

vlozhennaya-virtualizatsiya-hyper-v-05

Или через Powershell:

Если же вы не планируете выпускать вложенные VM в локальную сеть, но все же хотите обеспечить их возможностью коммуникаций по сети, можно поднять NAT 7. Для этого необходимо создать виртуальный коммутатор внутреннего типа командой (на данный момент настройка NAT возможна только через Powershell):

Примечание: если до этого момента все настройки производились на хостовой ОС, то NAT настраивать нужно внутри виртуальной машины.

vlozhennaya-virtualizatsiya-hyper-v-06

Создаем NAT:

vlozhennaya-virtualizatsiya-hyper-v-07

Обратите внимание, что на этом этапе нужно определиться с подсетью, которая будет использоваться за NAT-ом. Разумеется диапазон адресов не должен пересекаться с реальными диапазонами в вашей локальной сети.

Назначаем адрес для интерфейса:

vlozhennaya-virtualizatsiya-hyper-v-08

На этом шаге внутреннему интерфейсу нужно присвоить адрес, который будет использоваться вложенными виртуальными машинами как шлюз. Конструкция команд, используемая на скриншоте выше, совсем необязательна, вы можете обойтись и без Get-NetAdapter 8, указав командлету New-NetIPAddress 9 индекс сетевого интерфейса (поле ifIndex). В этом случае моя команда выглядела бы таким образом: New-NetIPAddress -IPAddress 172.16.0.1 -AddressFamily IPv4 -PrefixLength 24 -InterfaceIndex 9.

Ну а теперь дело за малым: сконфигурируем сеть на вложенной виртуальной машине:

vlozhennaya-virtualizatsiya-hyper-v-09

И проверим связь с внешним миром:

vlozhennaya-virtualizatsiya-hyper-v-10

Переходим к последнему этапу.

Отключение динамической памяти

Динамическая память для виртуальных машин, внутри которых будет развернута роль Hyper-V, не поддерживается, а потому позоботьтесь о том, чтобы она была полностью отключена. Сделать это можно через консоль Hyper-V:

vlozhennaya-virtualizatsiya-hyper-v-11

Или через Powershell командой:

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

vlozhennaya-virtualizatsiya-hyper-v-12

Разумеется все те настройки, которые вы проводили на хосте, чтобы запустить вложенные виртуалки, нужно выполнять и внутри самих виртуалок, если вы планируете использовать вложенную виртуализацию на них.

comments powered by HyperComments
2coupled
2022-07-04 18:23:42
<strong>1consensus</strong>
dissertation thesis writing
2022-07-05 15:54:11
<strong>help writing https://professionaldissertationwriting.org/</strong>
best dissertation writing services uk
2022-07-05 17:47:30
<strong>doctoral dissertation defense https://professionaldissertationwriting.com/</strong>
writing dissertation abstract
2022-07-05 21:58:35
<strong>proposal and dissertation help geography https://helpwithdissertationwritinglondon.com/</strong>
find a dissertation
2022-07-05 23:32:05
<strong>dissertation plan https://dissertationwritingcenter.com/</strong>
phd dissertation peer reviewing help
2022-07-06 01:21:53
<strong>online edd no dissertation https://dissertationhelpexpert.com/</strong>
dissertation editing
2022-07-06 05:10:59
<strong>uk dissertation writing help online https://accountingdissertationhelp.com/</strong>
proposal and dissertation help plan
2022-07-06 07:56:45
<strong>dissertation help online free https://examplesofdissertation.com/</strong>
art dissertation help
2022-07-06 09:33:30
<strong>phd dissertation writing service https://writing-a-dissertation.net/</strong>
dissertation assistance
2022-07-06 15:14:09
<strong>doctoral dissertation help usa https://businessdissertationhelp.com/</strong>
buy dissertation writing services
2022-07-06 17:50:53
<strong>nursing dissertation help https://customdissertationwritinghelp.com/</strong>
best dissertation writing services uk
2022-07-06 20:24:10
<strong>psychology dissertation https://writingadissertationproposal.com/</strong>
dissertation writing process
2022-07-06 23:01:39
<strong>dissertation writing software https://dissertationhelpspecialist.com/</strong>
dissertation statistics help
2022-07-07 03:37:52
<strong>research writing help https://dissertationhelperhub.com/</strong>
dissertation help
2022-07-07 04:53:56
<strong>what does dissertation mean https://customthesiswritingservices.com/</strong>
online casino games free
2022-07-25 18:59:37
<strong>betmgm online casino https://download-casino-slots.com/</strong>
virginia online casino
2022-07-25 21:21:25
<strong>online casino with free signup bonus real money no deposit https://firstonlinecasino.org/</strong>
mgm nj online casino
2022-07-25 23:49:24
<strong>mgm online casino michigan https://onlinecasinofortunes.com/</strong>
wind creek online casino
2022-07-26 01:49:37
<strong>online casino with no minimum deposit https://newlasvegascasinos.com/</strong>
riversweeps online casino sign up
2022-07-26 05:31:22
<strong>caesar casino online https://trust-online-casino.com/</strong>
casino online streaming
2022-07-26 06:45:30
<strong>usa casino online https://onlinecasinosdirectory.org/</strong>
nj casino online sites
2022-07-26 09:35:15
<strong>online michigan casino https://9lineslotscasino.com/</strong>
best free online casino slot games
2022-07-26 15:23:59
<strong>casino mate online casino https://internet-casinos-online.net/</strong>
online casino reviews usa
2022-07-26 18:20:18
<strong>u.s.a online casino https://cybertimeonlinecasino.com/</strong>
online casino bookie
2022-07-26 20:09:08
<strong>online casino bonus code https://1freeslotscasino.com/</strong>
online casino in usa
2022-07-26 22:14:42
<strong>online casino spanish https://vrgamescasino.com/</strong>
casino card games online
2022-07-27 01:30:39
<strong>free online casino games no download https://casino-online-roulette.com/</strong>
chumba casino online mobile
2022-07-27 04:18:05
<strong>online casino games free https://casino-online-jackpot.com/</strong>
casino free games online
2022-07-27 08:12:19
<strong>my choice online casino https://onlineplayerscasino.com/</strong>
real casino slots online
2022-07-27 09:01:31
<strong>newest pa online casino https://ownonlinecasino.com/</strong>
online casino games real money no deposit
2022-07-27 13:26:05
<strong>real money online casino no deposit bonus codes https://all-online-casino-games.com/</strong>
new online casino with free signup bonus real money usa
2022-07-27 14:40:05
<strong>caesars online casino nj https://casino8online.com/</strong>
how to get a vpn
2022-08-07 14:25:21
<strong>vpn vanish https://freevpnconnection.com/</strong>
best free vpn for kodi
2022-08-07 16:58:39
<strong>best chrome vpn free https://shiva-vpn.com/</strong>
top vpn services
2022-08-07 19:45:16
<strong>windows vpn https://freehostingvpn.com/</strong>
vpn express
2022-08-07 22:24:32
<strong>buy vpn cheap https://ippowervpn.net/</strong>
free vpn for pc windows 10
2022-08-08 00:09:35
<strong>best vpn apps https://imfreevpn.net/</strong>
vpn blocker
2022-08-08 02:35:04
<strong>best free vpn for mobile https://superfreevpn.net/</strong>
best vpn providers
2022-08-08 05:24:50
<strong>vpn pc free https://free-vpn-proxy.com/</strong>
best windows vpn app
2022-08-08 07:05:53
<strong>free vpn for xbox one https://rsvpnorthvalley.com/</strong>
gay hairy men dating sites
2022-08-23 14:13:03
<strong>which gay dating app? https://gay-singles-dating.com/</strong>
gay chubby dating
2022-08-23 16:28:59
<strong>gay dating sites cape cod https://gayedating.com/</strong>
gay dating profile "always-looking"
2022-08-23 18:48:23
<strong>gay dating machismo https://datinggayservices.com/</strong>
100 free chat and dating for adults free
2022-08-24 13:42:04
<strong>sabrina carpenter dating https://freephotodating.com/</strong>
lesbian cowgirls
2022-08-24 16:11:15
<strong>dating apps free https://onlinedatingbabes.com/</strong>
mature nl free
2022-08-24 17:18:39
<strong>world best dating sites https://adult-singles-online-dating.com/</strong>
date sites
2022-08-24 21:50:57
<strong>date sites free for men https://online-internet-dating.net/</strong>
spanish dating site free trial
2022-08-25 01:07:38
<strong>dating sites really free https://speedatingwebsites.com/</strong>
free and single
2022-08-25 02:47:10
<strong>dating sites into trampling https://datingpersonalsonline.com/</strong>
over dating
2022-08-25 05:24:32
<strong>absolutely free local dating site https://wowdatingsites.com/</strong>
online dating
2022-08-25 07:32:23
<strong>local online dating sites https://lavaonlinedating.com/</strong>
single women online
2022-08-25 10:32:42
<strong>which online dating site is best https://freeadultdatingpasses.com/</strong>
online dating sites for free
2022-08-25 11:02:43
<strong>free dating sites online https://virtual-online-dating-service.com/</strong>
free dating sites no fees
2022-08-25 16:02:21
<strong>free local dating sites https://onlinedatingservicesecrets.com/</strong>
hollywood casino online slots
2022-08-30 15:58:34
<strong>tiger casino online https://online2casino.com/</strong>
real casino online
2022-08-30 20:15:24
<strong>best online casino games https://casinosonlinex.com/</strong>
702 gay chat
2022-09-03 00:32:20
<strong>mens gay chat https://newgaychat.com/</strong>
gay furry chat one on one
2022-09-03 05:59:55
<strong>frree gay and bi chat sites in seattle wa https://gaychatcams.net/</strong>
phone chat in maryland gay
2022-09-03 11:34:32
<strong>gay roulette chat https://gaychatspots.com/</strong>
live gay webcam chat rooms
2022-09-03 15:03:19
<strong>gay massachusetts chat https://gay-live-chat.net/</strong>
chat gay
2022-09-03 18:38:59
<strong>paginas gay de chat https://chatcongays.com/</strong>
free gay bi chat lines in seattle wa
2022-09-03 23:54:46
<strong>gay chicago webcam chat software https://gayphillychat.com/</strong>
chat gay joven
2022-09-04 04:51:09
<strong>dirty gay video chat https://gaychatnorules.com/</strong>
arab friends gay webcam chat
2022-09-04 09:58:59
<strong>gay daddy cam chat https://gaymusclechatrooms.com/</strong>
gay chat cam ramdoom
2022-09-04 15:30:10
<strong>sex gay chat https://free-gay-sex-chat.com/</strong>
gay text chat app
2022-09-04 21:10:46
<strong>freee gay chat https://gayinteracialchat.com/</strong>
chat-avenue/gay
2022-10-20 16:51:47
<strong>gay chat apps for pc https://gaymanchatrooms.com/</strong>
writing paper help
2022-10-20 17:47:44
<strong>college papers for sale https://term-paper-help.org/</strong>
write my papers discount code
2022-10-20 19:44:37
<strong>pay to do paper https://sociologypapershelp.com/</strong>
english paper help
2022-10-20 21:13:59
<strong>paper writing company https://uktermpaperwriters.com/</strong>
paper writing services for college students
2022-10-20 22:36:19
<strong>can i pay someone to write my paper https://paperwritinghq.com/</strong>
help with college paper writing
2022-10-20 23:44:47
<strong>buying papers online https://writepapersformoney.com/</strong>
college paper writing service reviews
2022-10-21 00:37:19
<strong>buy college papers https://write-my-paper-for-me.org/</strong>
custom writing paper service
2022-10-21 05:20:24
<strong>college papers help https://researchpaperswriting.org/</strong>
buy cheap paper online
2022-10-21 06:07:30
<strong>pay to write paper https://cheapcustompaper.org/</strong>
write my statistics paper
2022-10-21 08:04:27
<strong>papers writing help https://writingpaperservice.net/</strong>
buy college paper online
2022-10-21 09:04:39
<strong>paper writers for college https://buyessaypaperz.com/</strong>
buy dissertation paper
2022-10-21 12:20:45
<strong>do my college paper for me https://writemypaperquick.com/</strong>
order a paper
2022-10-21 17:31:14
<strong>buying papers https://ypaywallpapers.com/</strong>
Яндекс.Метрика