company_banner

Hyper-V для разработчиков под Windows 10

Автор оригинала: Microsoft
  • Перевод
Hyper-V более известен как технология виртуализации серверов; однако, начиная с Windows 8, он также доступен в клиентской операционной системе. В Windows 10 мы значительно улучшили работу, сделав Hyper-V отличным решением для разработчиков и ИТ-специалистов.
 
Microsoft Hyper-V, кодовое название Viridian, — это нативный (тип 1) гипервизор, который, в отличие от VMware Workstation, VirtualBox и других гипервизоров типа 2, работает непосредственно на оборудовании. Впервые он был выпущен в Windows Server 2008 и позволяет запускать виртуальные машины в системах x86-64.

Hyper-V позволяет разработчикам быстро разгонять виртуальные машины для разработки на Windows 10 с превосходной производительностью, но он также используется в нескольких других функциях разработки в качестве серверной технологии, например, в таких как эмулятор Android, подсистема Windows для Linux 2 (WSL2) или контейнеры Docker. В этой статье мы кратко рассмотрим, как Hyper-V в Windows 10 может помочь разработчикам.

Быстрое создание коллекции виртуальных машин




Во-первых, давайте начнем с одной из основных функций для создания виртуальных машин. Теперь вы можете не только создавать виртуальные машины Hyper-V, устанавливая их с помощью файла ISO; вы можете использовать Hyper-V Quick Create VM Gallery, чтобы быстро создать новую среду разработки Windows 10 или даже виртуальную машину Ubuntu. Инструмент загрузит предварительно настроенную виртуальную машину Hyper-V с Windows 10 и средой разработки Visual Studio или Ubuntu 18.04 или 19.04. При желании вы также можете создавать собственные образы виртуальных машин Quick Create и даже делиться ими с другими разработчиками.
 

Подсистема Windows для Linux 2 (WSL 2)



 
С подсистемой Windows для Linux Microsoft перенесла среду Linux на Windows 10 desktop и позволяет запускать среду GNU/Linux — включая большинство инструментов, утилит и приложений командной строки — непосредственно в Windows без изменений, без издержек полноценных виртуальных машин. В последних версиях Windows 10 Insider Preview Microsoft выпустила превью WSL 2. WSL 2 использует технологию виртуализации Hyper-V для изоляции и виртуализации WSL в серверной части. Это обеспечивает не только преимущества безопасности, но и огромный прирост производительности. Подробнее о подсистеме Windows для Linux 2 вы можете узнать здесь.
 

Расширенный режим сеанса для обмена устройствами с вашей виртуальной машиной



 
Одной из трудных частей в прошлом было взаимодействие между виртуальной машиной и хост-машиной. С добавлением Enhanced Session Mode , Microsoft упростила копи-паст файлов между ними, а также теперь можно совместно использовать устройства. В том числе:

  • Делает виртуальные машины изменяемого размера и с высоким DPI
  • Улучшает интеграцию виртуальной машины
  • Позволяет совместное использование устройств

Расширенный режим сеанса включен по умолчанию в Windows 10 Hyper-V, в Windows Server вам необходимо включить эту функцию в настройках Hyper-V. Если вы создаете собственную виртуальную машину Linux, убедитесь, что вы установили последние версии драйверов виртуализации.
 

Чекпоинты


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

Hyper-V знает типы контрольных точек:

  • Стандартные контрольные точки: делает снимок состояния виртуальной машины и памяти виртуальной машины в момент запуска контрольной точки.
  • Продакшн-контрольные точки: использует службу теневого копирования томов или Freeze File System на виртуальной машине Linux для создания согласованной с данными резервной копии виртуальной машины. Снимок состояния памяти виртуальной машины не создается.


 
Тип контрольной точки может быть установлен виртуальной машиной. Оба типа чекпоинтов имеют разные преимущества и недостатки. В последних версиях Hyper-V продакшн-контрольные точки выбираются по умолчанию. Однако вы можете легко изменить это с помощью настроек диспетчера Hyper-V или PowerShell. На моем клиентском компьютере с Windows 10 я предпочитаю использовать стандартные контрольные точки, поскольку он также сохраняет состояние памяти виртуальной машины, однако в системах с продакшн-серверами я настоятельно рекомендую использовать продакшн-контрольные точки, и даже в этом случае вам следует соблюдать осторожность.
 

NAT сети



 
Одной из особенностей, которые были очень болезненными в прошлом, была сеть. С появлением опции переключения NAT в виртуальном коммутаторе Hyper-V теперь вы можете легко подключить все ваши виртуальные машины к сети, к которой подключен ваш хост. В Windows 10 вы получите переключатель по умолчанию для подключения ваших виртуальных машин. Если этого недостаточно или вы хотите использовать виртуальный коммутатор NAT на сервере Hyper-V, вы можете использовать следующие команды для создания виртуального коммутатора и правила NAT.

Вы можете узнать больше о Hyper-V NAT сетях здесь.
 

Запускайте контейнеры Windows и Linux в Windows 10


Контейнеры являются одной из самых популярных технологий прямо сейчас, с Docker Desktop для Windows вы можете запускать их на своем компьютере с Windows 10. По умолчанию Windows использует технологию Hyper-V, чтобы создать дополнительную защиту между контейнером и операционной системой хоста, так называемыми контейнерами Hyper-V. Эта функция также позволяет запускать Windows и Контейнеры Linux в Windows side-by-side без необходимости запуска полной виртуальной машины Linux в Windows 10.
 

PowerShell Direct и HVC


Если вы хотите взаимодействовать с вашей виртуальной машиной, работающей под управлением Windows 10, вы можете использовать диспетчер Hyper-V и консоль для непосредственного взаимодействия с операционной системой. Однако есть также два других варианта, которые позволяют вам управлять виртуальными машинами и получать к ним доступ с помощью командной строки. PowerShell Direct позволяет создавать сеанс удаленного взаимодействия PowerShell для виртуальной машины с использованием шины VM, так что никаких сетей не требуется. То же самое касается виртуальных машин Linux и инструмента HVC, который позволяет создавать SSH-соединение непосредственно с виртуальной машиной. Оба варианта также позволяют копировать файлы на виртуальные машины и с них.


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

Windows песочница



 
Песочница Windows — это новая функция в Windows 10, выпущенная в версии 1903. Песочница Windows использует технологию Hyper-V для предоставления Windows 10 Sandbox. Песочница позволяет раскрутить изолированную временную среду рабочего стола, где вы можете запускать ненадежное программное обеспечение. Песочница отлично подходит для демонстраций, разработки, тестирования, устранения неполадок или для работы с вредоносными программами. Если вы закроете песочницу, все программное обеспечение со всеми его файлами и состоянием будет удалено навсегда. Это виртуальные машины с Windows 10, их преимущество в том, что они встроены в Windows 10, поэтому они используют существующую ОС, что обеспечивает более быстрый запуск, лучшую эффективность и удобство в обращении без потери безопасности.

Опыт Windows Sandbox также можно настроить с помощью файлов конфигурации. Таким образом, вы можете добавить дополнительное программное обеспечение и инструменты в свою Windows Sandbox.
 

Windows Defender Application Guard



 
Это может быть не связано непосредственно с развитием. Тем не менее, я думаю, что такое происходило с каждым. Мы видим ссылку, и мы не уверены, точно ли это доверенный сайт или это вредоносный сайт. С Windows Defender Application Guard мы получаем изолированный браузер, который защищает нас от вредоносных веб-сайтов и программного обеспечения. Если пользователь переходит на ненадежный сайт через Microsoft Edge или Internet Explorer, Microsoft Edge открывает сайт в изолированном контейнере с поддержкой Hyper-V, который отделен от операционной системы хоста.
 

Hyper-V Battery Pass-through



 
Эта особенность больше об удобстве. Если вы работаете и разрабатываете внутри виртуальной машины и используете консоль виртуальной машины в полноэкранном режиме, вы можете не заметить, когда у вашего ноутбука разрядился аккумулятор. Благодаря функции Hyper-V Battery Pass-through гостевая операционная система внутри виртуальной машины знает о состоянии батареи. Функция виртуальной батареи Hyper-V включена по умолчанию и работает с виртуальными машинами Windows и Linux.
 

Вложенная (Nested) виртуализация



 
Вложенная виртуализация позволяет запускать виртуализацию на виртуальной машине, в основном, как на начальном этапе для виртуальных машин. С Hyper-V вы можете запускать Hyper-V на виртуальной машине Hyper-V. Это интересно для пары разных сценариев. Во-первых, вы можете создать виртуальный хост Hyper-V для тестирования и лабораторных работ, или, что еще важнее, вы можете запускать контейнеры Hyper-V или Windows Sandbox на виртуальной машине. И еще одна замечательная особенность Nested Virtualization: она также работает с виртуальными машинами в Microsoft Azure.

Для включения nested-виртуализации внутри Hyper-V, вы можете изучить этот гайд.
 

Эмулятор Visual Studio для Android


Если вы используете Visual Studio для создания приложений Android, я уверен, что вы уже использовали Эмулятор Visual Studio для Android. Фича позволяет разработчикам использовать эмулятор Android с аппаратным ускорением, не переключаясь на гипервизор Intel HAXM, что обеспечивает им еще большую производительность и скорость.
 

Как настроить Hyper-V на Windows 10


Теперь, как вы можете видеть, Hyper-V является отличным инструментом для разработчиков и используется для множества различных функций. Чтобы установить Hyper-V, вы должны проверить следующие требования на вашем компьютере:

  • Windows 10 Enterprise, Pro, или Education.
  • 64-битный процессор с Second Level Address Translation (SLAT).
  • Поддержка CPU для VM Monitor Mode Extension (VT-c на Intel CPUs).
  • Как минимум 4 GB памяти.

Для получения дополнительной информации и устранения неполадок см. Windows 10: системные требования Hyper-V.
 
Для получения дополнительной информации о том, как установить Hyper-V в Windows 10, изучайте документацию Microsoft .
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии 34

    0

    Это конечно всё круто, но сейчас ты вынужден выбирать: или виртуальные машины или докер, эти две технологии мешают друг другу.

      +1

      В новом докере для windows, будет по другому. Все только через виртуализацию.

        +1
        Так уже сейчас докер через hyper-v работает + есть поддержка windows контейнеров
        0

        Виртуалки, докер, винда на хосте — выберите любые два.

          0

          Я выбрал все три и живу спокойно

            0

            Ну расскажите как. А то вот в виртуалбоксе предлагают выключать Hyper-V.

              0
              Этот тикет слегка протух, уже год как (с версии 6.0) VirtualBox умеет работать при включённом Hyper-V (конечно, бьёт по производительности, но Microsoft недавно обещала что-то придумать). Но альтернатив как бы и нет, если отказываешься от Hyper-V, то одновременно отказываешься и от Windows Sandbox и от HVCI, что довольно неприятно.
                0
                В этом тикете комментарий утверждает что с VirtualBox 6 оно тоже крашится, правда без указания конкретной версии.
                0
                AFAIK с версии 6 виртуалбокса — уже не предлагают.
                надо обновлять комментарии
          • НЛО прилетело и опубликовало эту надпись здесь
            +5
            Как и в любой другой статье про возможности Hyper-V, возникает резонный вопрос про проброс USB с хоста внутрь виртуальной машины, что в условиях десктопной виртуализации вещь архиважная. Покупать хардварные USB свичи или городить USB овер нетворк для разработке на десктопе не удобно и порой невозможно.

            Ну и выбор между докером и виртуализацией как взаимоисключающие вещи — так себе решение.
              –1

              А почему везде реклама какого-то судя по домену чешского датацентра?

                +1

                https://www.thomasmaurer.ch/about/


                Thomas Maurer works as a Senior Cloud Advocate at Microsoft. As part of the Azure engineering team (Cloud + AI), he engages with the community and customers around the world to share his knowledge and collect feedback to improve the Azure platform. Thomas helps the community and companies to transform their business to the cloud and make Azure the best cloud platform to run their applications.
                +1
                GPU всё так же нельзя пробросить или уже починили?
                  +1
                  Одной из трудных частей в прошлом было взаимодействие между виртуальной машиной и хост-машиной. С добавлением Enhanced Session Mode, Microsoft упростила копи-паст файлов между ними, а также теперь можно совместно использовать устройства.

                  Работает из коробки только если в виртуалке то же Windows.
                  Как то не зашло для виртуальной Linux. Пишут что есть специальный Lunix дистрибутив, где это поддерживается, но так же пишут, что он глюкав и не есть проблемы.


                  Впрочем, чуть потыкавшись поставил ssh и samba (как докер образ) и вопрос для меня снялся (обмена файлами и copy|paste в консоле).


                  Но, все равно, если кто знает как подружить Windows 10 с гостевой Linux (стандартный хостовый/десктопный Ubuntu, например) в Hyper-v, так же как это работает "из коробки" в VirtualBox, поделитесь информацией pls.
                  Любопытно же..

                    0
                    Поддерживаю. Ни один десктопный linux не завелся нормально в hyper-v. А вот образы без gui отлично работают.
                    Для linux-десктопа лучше Virtual box.
                      0
                      Ни один десктопный linux не завелся нормально в hyper-v.

                      Я ставил ради интереса (Ubuntu последнюю) под Hyper-v. И даже как то конфигурил на полный экран..


                      но, поскольку GUI в гостевой Linux мне не нужны совсем, то поставил и снес.
                      Особенно мне GUI Linux не нужны в отсутствии copy|paste между windows и гостевой системой.
                      Сильно приспичит — можно X-windows сервер на Windows поднять и пользовать гостевой Linux в виртуалке через него.

                        0
                        зачем нужен десктопный линух внутри виртуалки?
                          0
                          Затестировать какой-нибудь Endian Firewall Community, раз уж MS свой Forefront прибила.
                          И напоминаю: В Hiper-V очень плохо, вплоть до полной не работают 32-х битные Линуксы. Забили.
                        0
                        А какие были у вас проблемы? Несколько лет даже почтовый сервер крутился на такой VM на Linux.
                          0

                          Особых проблем нет.
                          Просто если сравнивать с VirtualBox, то


                          • расшарить папку как VirtualBox не получится
                          • copy|paste между Windows и гостевой Linux не работает.
                          • USB "из коробки" не пробрасываются

                          Конечно все это мелочи. Samba поставить не долго и в виртуалку ходить с windows через ssh
                          Тем более, что для Вашего случая (почтовый сервер) все это перечисленное и не нужно.

                            0
                            Чтобы работал копи-паст, нужно подключаться по RDP к виртуалке. Такая же проблема и с гостевой XP — можно нагуглить образ дополнений от старых версий Hyper-V, но копи-паст всё равно заработал лишь по RDP и при условии, что в свойствах подключения расшарен весь диск, с которого осуществляется копирование на виртуалку (поскольку у меня обмен файлами между виртуалкой и хостом ведётся через рабочий стол, пришлось расшарить весь диск C:).

                            Ещё есть вот такой вариант, но у меня не завелось.
                          0
                          Присоединяюсь. Тоже недавно мучился с Ubuntu в Hyper-V. Не удалось запустить общие файлы, буфер обмена и даже статический IP. Пришлось заходить по SSH и при этом каждый раз забивать новый IP адрес в SSH клиенте. Сколько лет уже существуют виртуальные машины и просто стыдно в конце 2019 иметь такой убогий функционал. Но приходится пользоваться, поскольку Virtual Box к примеру так и не получилось запустить, поскольку где-то в недрах Windows какая-то служба захватила ресурсы аппаратной виртуализации и не хочет отдавать.
                            0
                            и даже статический IP

                            статический IP — нужно настроить на гостевой Linux.


                            Остальное — это политика MS (у них где то даже написано было в FAQ) о полной изоляции виртуально машины. Т.е. все только через "сеть" (IP).


                            Virtual Box к примеру так и не получилось запустить, поскольку где-то в недрах Windows какая-то служба захватила ресурсы аппаратной виртуализации и не хочет отдавать.

                            Virtual Box одновременно с Hyper-v на Win10 не живет. Причем выкашивать Hyper-v нужно похоже полностью. Простой останов не помогает.
                            Поскольку комп рабочий, то сильно курочить не стал. Hyper-v так Hyper-v
                            Дома VirtualBox без проблем на Vin10 home встал и заработал сразу.

                            0
                            Несколько улучшенный xrdp-сеанс можно получить по следующей инструкции: c-nergy.be/blog/?p=14093
                            +1
                            В Windows 10 вы получите переключатель по умолчанию для подключения ваших виртуальных машин.

                            Простите, о чем речь в этом предложении?

                              +1
                              Hyper-V застрял на месте уже давно, в 2012 версии.
                              1) нет проброса USB с хоста, как писали выше.
                              2) нет vm-vm affinity rules
                              3) делать mirroring трафика наружу нельзя, (зеркалировать извне по-моему тоже)
                              что-то еще, сейчас уже не помню…
                                0
                                Hyper-V застрял на месте уже давно, в 2012 версии.

                                Не соглашусь, просто до 2012 версии всё ещё только разрабатывалось, а к 2012 уже устоялся стабильный продукт и изменения не такие революционные — нечего уже на корню менять.

                                1) нет проброса USB с хоста, как писали выше.

                                Не хочу показаться героем Войновича, поясняющим, что у вас нет этой потребности, но, на самом деле, зачем? Времена HASP-ов давно прошли (а за пределами бывшего Союза и не начинались толком), а для чего ещё нужен проброс голого USB прямо в виртуальную машину? Флешку по RDP можно прокинуть, а что ещё нужно? Как минимум на сервере (статья про desktop, но вы ссылаетесь на «2012», тогда на desktop-е Hyper-V ещё и близко не было) USB не только не нужно, но даже вредно, теряется гибкость кластеризации и репликации.

                                2) нет vm-vm affinity rules

                                Anti-affinity есть, это — основной use case, я полагаю. Опять же, не хочу говорить, что это никому не нужно, но какой смысл именно в положительной affinity при условии современной сети между node-ми виртуализации? Есть ещё настройка preferred owners в FC и placement rules в SCVMM.

                                3) делать mirroring трафика наружу нельзя, (зеркалировать извне по-моему тоже)

                                Всегда можно было, с 2012 версии простой командой, в 2008 R2 посложней — полу-документированным параметром, насколько я помню.
                                  0
                                  а для чего ещё нужен проброс голого USB прямо в виртуальную машину?

                                  Например на Linux идет сборка Firmware для платы. Хотелось бы там же, тем же скриптом и грузить.
                                  На VirtualBox — без проблем.
                                  На Hyper-v — танцы с бубном вокруг USB шлюза через IP с непредсказуемым результатом. Или написать CMD скрипт под windows который вначале запускает процесс сборки на Linux (через ssh), потом грузит используя расшаренный через sambu том образ в железку.
                                  Конечно все это решаемо, но требует времени на создание/отладку такой схемы и просто раздражает после VirtualBox

                                    0
                                    Очень радуют ответы «вам это не надо», наверное у почты россии и сбера научились:

                                    3) трафик с виртуалок нельзя отдать наружу, только на другую виртуалку на том же хосте. Ваш мануал не совсем рабочий, команда есть, при попытке это сделать на внешний порт случается облом.
                                    2) хорошо, развернули коллекторы трафика DLP на тех же хостах, где и интересующие виртуалки. Но увы, все стараниями vmm разъехалось. Нужны правила именно vm-vm affinity.
                                    Там был кластер из ~ 10 хостов, мониторить надо было несколько конкретных серверов + внешние порты. На vmware все делается элементарно…
                                    да это не касается клиентских машин, но нафига hyper-v, когда уже давно есть vbox? MS уже давно проиграл виртуализацию, хотя в 2008-2012 был очень перспективен.

                                    1) подняли виртуалку с линуксом, надо пробросить USB wifi адаптер, или SDR. Готов выслушать ваше мнение, как мне это не надо.
                                      +1
                                      Очень радуют ответы «вам это не надо», наверное у почты россии и сбера научились

                                      Объявлять, что всё пропало, и Hyper-V «застрял» на основе эзотерических требований не совсем корректно, я это имел в виду. На основе Hyper-V Azure построен, а там решаются самые разнообразные задачи, практически любые. Да, исключения всегда можно найти, но возводить в абсолют какую-нибудь редчайшую задачу и на основе этого делать выводы, мне кажется, не стоит.

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

                                      Открывали support ticket? MS подтвердила, что функция не работает? Внутрь всё работает годами, наружу никогда задачи такой не видел, потому не берусь утверждать, работает ли. Но раз документировано, должно работать, иначе прямая дорога в тех. поддержку.

                                      2) хорошо, развернули коллекторы трафика DLP на тех же хостах, где и интересующие виртуалки. Но увы, все стараниями vmm разъехалось. Нужны правила именно vm-vm affinity.
                                      Там был кластер из ~ 10 хостов, мониторить надо было несколько конкретных серверов + внешние порты. На vmware все делается элементарно…

                                      DLP, как всякая система безопасности, как правило, требует контроль 100% трафика, просто для отчётности. Миграция двух виртуальных машин всё равно не может быть микросекунда-в-микросекунду одновременной, а это значит, что часть сетевых пакетов при переезде не будет проконтролирована. Мне кажется, тут какое-нибудь другое решение лучше подойдёт, например зеркалирование traffic-а на уровне физических коммутаторов или установка агентов систем контроля внутрь контролируемых виртуальных машин, либо размещение виртуальных машин DLP на всех node-ах кластера. Вообще говоря, в наше время перехват пакетов в целях DLP достаточно бессмысленен — всё шифруется.

                                      Что касается «все стараниями vmm разъехалось», то динамическую оптимизацию можно отключать на уровне виртуальной машины, в совокупности с preferred owners в FC/placement rules в SCVMM «разъезжание» можно минимизировать, но, опять же, задачу, на мой взгляд, лучше решать по-другому.

                                      1) подняли виртуалку с линуксом, надо пробросить USB wifi адаптер, или SDR. Готов выслушать ваше мнение, как мне это не надо.

                                      На серверах — не надо. Клиентскому же Hyper-V ещё без году неделя, может и сделают. Но и на клиентах это нужно, я полагаю, мизерному проценту пользователей.

                                      да это не касается клиентских машин, но нафига hyper-v, когда уже давно есть vbox?

                                      А почему не наоборот? VBox есть у полутора гиков, а Hyper-V внедряется во все Windows 10.

                                      MS уже давно проиграл виртуализацию, хотя в 2008-2012 был очень перспективен.

                                      Пока что в качестве доводов «проигрыша» были только примеры редчайших задач.
                                        0
                                        Я сильно сомневаюсь, что azure работает на публичном hyper-v. Как еще один из дополнительных доводов, могу привести как hyper-v работает с разными поколениями процессоров в одном кластере.
                                        Про vbox у полтора гиков реально смешно, особенно учитывая под число платформ где его можно запускать, и про ограничение hyper-v от редакции windows.
                                      0
                                      для чего ещё нужен проброс голого USB прямо в виртуальную машину?

                                      Ну, например, для разработки и тестирования ПО, использующего разные USB-устройства — кардридеры, камеры, сканеры отпечатков, U2F-токены и т.п.

                                    0
                                    Для кое-какой автоматизации создания виртуальных машин для себя писал: github.com/farag2/Hyper-V

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое