Установка и настройка Microsoft Hyper-V Server 2019

Оказывается, далеко не все в курсе, что в Windows 10 уже есть всё необходимое, чтобы создать виртуальную машину для своих экспериментов.

Клонирование виртуальной машины Hyper-V

Hyper-V

Добрый день уважаемые читатели и гости блога, не так давно я вам рассказывал про экспорт и импорт виртуальной машины Hyper-V, все это здорово, но подразумевает, что вы выключите вашу виртуалку, а что делать в ситуациях, когда она должно работать, а иметь ее копию вам нужно, данная задача решается двумя путями, первый это сделать резервную копию с помощью Veeam Backup Replication либо же произвести клонирование виртуальной машины Hyper-V с помощью System Center 2012 R2 Virtual Machine Manager, чем мы и займемся.

Активация компонента на Windows8/8.1/10

Если вы используете серверную операционную систему Windows Server, тогда в панели управления вам необходимо активировать роль Hyper-V

В пользовательской ОС Windows Hyper-V представляет собой компонент, который изначально не активирован. Для активации данного компонента вы можете вы можете воспользоваться 2-мя способами.

  1. Активация с помощью команды в PowerShell. Для этого в поиске введите PowerShell и в открывшемся терминале введите следующую команду:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All
  2. С помощью графического интерфейса Windows. Для этого вызовите строку «Выполнить» с помощью сочетания клавиш Win+R и введите следующую команду «OptionalFeatures». После этого перед вами откроется окно «Включение или отключение компонентов Windows», тут вам необходимо отметить пункт «Hyper-V» и нажать «ОК».

После прохождения любого из способов необходимо перезагрузить систему, что бы Windows установила всё, что нужно для нового компонента гипервизора.

Настройка сервера Hyper-V

На сервере Hyper-V (Windows Server 2016) нужно включить удаленное управление PowerShell Remoting и открыть соответствующие порты на файерволе. Включаем службу WinRM командой

Enable-PSRemoting

Теперь нужно разрешить подключение со всех клиентов (из публичных сетей в той же самой локальной подсети) и разрешить передавать и получать CredSSP:

Enable-PSRemoting -SkipNetworkProfileCheck -Force
Enable-WSManCredSSP -Role Server

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Включим правило межсетевого экрана WinRM-HTTP-In-TCP-Public.

Set-NetFirewallRule -Name «WinRM-HTTP-In-TCP-Public» -RemoteAddress Any

Проверьте удаленную доступность порта WinRM (TCP 5985) на сервере

Test-NetConnection -ComputerName target_name -Port 5985

Разбираемся с конфигурацией сети

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

Как было раньше

. Старые мануалы по переносу ВМ Hyper-V описывают сценарии с использованием технологии тиминга Load Balancing/Fail Over (LBFO). LBFO позволяла группировать физические сетевые адаптеры и создавать поверх них интерфейсы. Но были и минусы, например: не было поддержки RDMA, нельзя было выяснить, через какой порт тима будет идти трафик. А поскольку трафик живой миграции требует довольно жирного канала, это превращалось в проблему, когда все сетевые ворклоады ломились в один физический порт. 

Как сейчас

. В Windows Server 2019 даже нельзя создать виртуальный свитч поверх LBFO Team. Единственным поддерживаемым решением для объединения портов сетевой карты в Hyper-V остался

Switch Embedded Team (SET)

.  

SET агрегирует адаптеры, как и vSwitch у ESXi. Физические сетевые порты становятся патч-кордом для разных типов трафика (в том числе для ВМ), а поверх них нарезаются виртуальные интерфейсы. 

Тут нужно добавить, что в типах гипервизоров есть небольшой рассинхрон. Англоязычные авторы считают, что есть только 2 типа, но на самом деле их 3 (подробно мы с коллегами описывали их в этом посте). Когда-то гипервизоры ESX были гибридного типа (1+). Это был такой модернизированный Red Hat c ролью гипервизора. VMware ушла от этого в vSphere 4.1 и стала честным гипервизором типа 1 (bare-metal). 

Microsoft взяла опыт VMware на вооружение и реализовала Switch Embedded Team в Windows Server 2016. Эта схема показывает большую производительность и гибкость в управлении трафиком в рамках тиминга.

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

Как это влияет на процесс настройки

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

Посмотрим на процесс пошагово

  1. Для начала опишем сети, которые будем использовать. Предположим, у нас стандартная двухпортовая on-board сетевая карта и двухсокетная материнская плата.
  2. Создать SET через стандартный интерфейс можно с помощью Virtual Switch в VMM (Virtual Machine Manager). Если VMM нет, выполняем следующий скрипт  PowerShell на каждом хосте Hyper-V: 

    New-VMSwitch -Name «SET» –NetAdapterName «NIC1″,»NIC2» -EnableEmbeddedTeaming $True -AllowManagementOS $true -MinimumBandwidthMode Weight
    В результате мы создадим свитч с менеджмент-интерфейсом. MinimumBandwidthMode обязательно сразу задаем как weight, иначе после создания SET мы не сможем изменить этот параметр. Так пропускная способность сети будет указана в относительных числах. Это понадобится для настройки Network QoS Policies (а иначе они не будут работать). 

    Если мы настраиваем SET поверх RDMA-адаптеров, то MinimumBandwidthMode работать не будет ни в каком режиме. Следовательно, Network QoS Policies при включенном RDMA тоже работать не будут.

  3. Алгоритм балансировки выставляем в Dynamic вместо дефолтного Hyper-V Port (в Windows Server 2019). Dynamic использует лучшие аспекты режимов Address Hash и Hyper-V Port и хорошо обрабатывает и входящий, и исходящий трафик: 

    Set-VMSwitchTeam «SET» -LoadBalancingAlgorithm Dynamic
    Здесь нужно быть очень внимательным, особенно если мы создаем SET через SC VMМ и оставляем балансировку Host Default. В Windows Server 2016 алгоритмом по умолчанию был Dynamic. В Windows Server 2019 дефолтный алгоритм по непонятным причинам изменили на Hyper-V Port, так что можно и ошибиться.

  4. Когда мы создали свитч, IP-адрес первого физического интерфейса мигрирует на виртуальный интерфейс свитча. 

    После этого мы создаем сетевые интерфейсы по количеству физических портов на сетевой карте и «прибиваем» CSV-трафик и трафик живой миграции к каждому порту: 

    # Создаем виртуальные сетевые адаптеры Live MigrationAdd-VMNetworkAdapter –ManagementOS –Name «LiveMigration01» –SwitchName MGMT-Switch -NumaAwarePlacement $trueAdd-VMNetworkAdapter –ManagementOS –Name «LiveMigration02» –SwitchName MGMT-Switch -NumaAwarePlacement $true# Задаем VLANSet-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName «LiveMigration*» -VlanId 2 -Access#Задаем IP-адреса для адаптеровNew-NetIPAddress –InterfaceAlias «vEthernet (LiveMigration01)» -IPAddress 192.168.2.2 -PrefixLength 24 -Confirm:$falseNew-NetIPAddress –InterfaceAlias «vEthernet (LiveMigration02)» -IPAddress 192.168.2.3 -PrefixLength 24 -Confirm:$false# Создаем виртуальные сетевые адаптеры CSV-трафикаAdd-VMNetworkAdapter –ManagementOS –Name «CSV01» –SwitchName MGMT-Switch -NumaAwarePlacement $trueAdd-VMNetworkAdapter –ManagementOS –Name «CSV02» –SwitchName MGMT-Switch -NumaAwarePlacement $true# Задаем VLANSet-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName «CSV*» -VlanId 3 -Access# Задаем IP-адреса для адаптеровNew-NetIPAddress –InterfaceAlias «vEthernet (CSV01)» -IPAddress 192.168.3.2 -PrefixLength 24 -Confirm:$falseNew-NetIPAddress –InterfaceAlias «vEthernet (CSV02)» -IPAddress 192.168.3.3 -PrefixLength 24 -Confirm:$false

  5. Теперь мы должны утилизировать все доступные нам оффлоады. Например, я выкручиваю Jumbo Frames до 9K для всех типов трафика, кроме Management. 

    Тут без помощи сетевых инженеров не обойтись: потребуется настройка портов на сетевом оборудовании.  

    Set-NetAdapterAdvancedProperty -Name «NIC1» -DisplayName «Jumbo Packet» -DisplayValue 9014Set-NetAdapterAdvancedProperty -Name «NIC2» -DisplayName «Jumbo Packet» -DisplayValue 9014Set-NetAdapterAdvancedProperty -Name «vEthernet (CSV01)» -DisplayName «Jumbo Packet» -DisplayValue «9014 Bytes»Set-NetAdapterAdvancedProperty -Name «vEthernet (CSV02)» -DisplayName «Jumbo Packet» -DisplayValue «9014 Bytes»Set-NetAdapterAdvancedProperty -Name «vEthernet (LiveMigration01)» -DisplayName «Jumbo Packet» -DisplayValue «9014 Bytes»Set-NetAdapterAdvancedProperty -Name «vEthernet (LiveMigration02)» -DisplayName «Jumbo Packet» -DisplayValue «9014 Bytes»
    Названия свойств сильно зависят от модели сетевой карты, так как это не статические фичи Windows Server, а фичи конкретной модели сетевой карты. Чтобы использовать эти фичи, нужно ОБЯЗАТЕЛЬНО ставить драйверы от производителя сетевой карты и ни в коем случае не использовать стандартный драйвер Windows. Иначе сразу после создания SET может отвалиться сеть по Management’у. Список всех свойств сетевой карты можно получить через командлет Get-NetAdapterAdvancedProperties.

  6. Проверим, что метрики сетевых интерфейсов равны:

    vd6qpipbzqbxw2nzd5jq1duqo64.jpeg

    Синхронизируем метрики интерфейсов и снизим приоритет интерфейсов CSV-трафика. В моем случае задавал так:

    Set-NetIPInterface -InterfaceIndex 16 -InterfaceMetric 10000Set-NetIPInterface -InterfaceIndex 3 -InterfaceMetric 10000Set-NetIPInterface -InterfaceIndex 9 -InterfaceMetric 10500Set-NetIPInterface -InterfaceIndex 6 -InterfaceMetric 10500
    Это нужно, чтобы трафик равномерно распределялся между физическими портами на равных.

  7. Если карта поддерживает RDMA, то трафик живой миграции уместно перенести на нее. RDMA позволяет двум хостам обмениваться данными в их памяти без обращения к ОС хостов и без нагрузки на CPU. Поддержку RDMA на карте проверяем с помощью командлета Get-NetAdapterRdma.

    tyookn_edqplqayxd4kkcf_skic.png
    Пример: что можно получить с помощью командлета. Скрин со statemigration.com.

    При этом сетевые ворклоады машин лучше оставить на встроенном или внешнем адаптере без RDMA (но, опять же, эта тема дискуссионная).

  8. На сетевую производительность влияет расстояние до сокета процессора от конкретного порта и PCI-шины. Поэтому перейдем к маппингу виртуальных адаптеров и настройке Virtual Machine Queues (VMQ). 

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

    Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName «NIC1» -VMNetworkAdapterName «LiveMigration01″Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName «NIC2» -VMNetworkAdapterName «LiveMigration02″Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName «NIC1» -VMNetworkAdapterName «CSV01″Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName «NIC2» -VMNetworkAdapterName «CSV02»

  9. Настройка VMQ помогает учесть расположение на PCI-шине. По умолчанию, очереди обрабатываются нулевым ядром нулевого процессора. Это не очень хорошо: во-первых, мы его ОЧЕНЬ сильно греем, во-вторых, так мы просто не сможем выжать из сетевого порта больше 3 Гб. Это относится к трафику ВМ. Но у нас же другой трафик (SMB)! Значит, имеет смысл настроить RSS. 

    До Windows Server 2019 настройка VMQ была обязательна, пока не появился dVMMQ. Он автоматически балансирует трафик и перекидывает его с ядра на ядро, как только нагрузка доходит 90%. Так что на Windows Server 2019 сидеть и высчитывать ядра для VMQ не нужно. 

    Настраиваем так:

    Set-NetAdapterRss -Name «NIC1» -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessors 8 -MaxProcessorNumber 16Set-NetAdapterRss -Name «NIC2» -BaseProcessorGroup 0 -BaseProcessorNumber 16 -MaxProcessors 8 -MaxProcessorNumber 30
    Посмотрим наглядно, как это работает. Предположим, у нас есть 2 процессора с 16 физическими ядрами. Это 32 логических ядра с учетом многопоточности. Открываем Excel и выписываем по порядку ядра от 0 до 31:

    q7yxyixeapz3muhaavcpzsqqlze.png

    Для первого порта сетевого адаптера назначаем Base Processor Number 2. Для количества ядер берем степень двойки. В четвертой степени получим 16 – это значение задаем для MaxProcessorNumber.

    BaseProcessor для второго адаптера тоже будет равен 16 (опять берем степень двойки). На картинке хорошо виден перехлест для обработки трафика на шестнадцатом ядре. Ситуация не критичная, так как нулевое ядро мы разгрузили и не используем для обработки Live Migration. 

    Через эти же командлеты можно задать и количество RSS-очередей (RSS Queues). Их количество зависит от конкретной модели сетевой карты, поэтому перед настройкой RSS Queues нужно изучить документацию к сетевой карте.

Перед началом работы Before you start

  • Для выполнения описываемых действий необходимо быть администратором или полномочным администратором на сервере VMM либо пользователем самообслуживания. To complete the steps you must be an Administrator or Delegated Administrator on the VMM server, or a self-service user.
  • При клонировании виртуальной машины существующая виртуальная машина (источник) не удаляется. When you clone a virtual machine, the existing virtual machine source is not deleted. Рекомендуется клонировать виртуальную машину, которая была подготовлена (в том числе для общего использования) с помощью средства Sysprep. We recommend that you clone a virtual machine that has been prepared and generalized with the Sysprep tool. Если виртуальный жесткий диск не подготовлен к использованию, идентификационные данные новой виртуальной машины совпадают с идентификационными данными исходной виртуальной машины. If you do not use a generalized virtual hard disk, the identity of the new virtual machine will be the same as the source. Одновременное включение двух виртуальных машины с одними и теми же идентификационными данными может привести к неполадкам. Issues might occur if you turn on two virtual machines with the same identity at the same time.
  • Можно клонировать виртуальную машину, развернутую на узле. You can clone a virtual machine that is deployed on a host. Виртуальная машина может быть подключена к сети, остановлена или находиться в сохраненном состоянии. The machine can be online, stopped, or in a saved state.
  • Можно клонировать виртуальную машину, которая хранится в библиотеке VMM. You can clone a VM that is stored in the VMM library.
  • Возможность использования оптимизаций разностных дисков применяется автоматически при развертывании виртуальной машины на узле, если на этом же узле существует основной диск. The option to use differencing disk optimizations is automatically applied when you deploy the virtual machine on a host, if a base disk exists on that host.
  • Если вы являетесь пользователем самообслуживания, вам требуются разрешения на развертывание с назначенным действием Сохранение и повторное развертывание. If you’re a self-service user you need Deploy permissions with the Store and re-deploy action assigned. Вам необходимо сначала развернуть виртуальную машину в частном облаке, а затем сохранить ее в библиотеке. You must first deploy the VM to a private cloud, and then store it in the library.

Запуск виртуальной машины и установка Windows на нее

Здесь тоже все просто, но немного непривычно для тех, кто ранее не сталкивался с Hyper-V.

Hyper-V в Windows
Увеличить рисунок

В диспетчере Hyper-V:

  • для запуска виртуальной машины нажмите «Пуск»
  • для взаимодействия с ней нажмите «Подключить» или дважды щелкните эскиз машины

Когда в параметрах машины указан загрузочный ISO-образ Windows, вы увидите на экране знакомую надпись Press any key to boot… Дальше вы уже сами справитесь, но если вам нужны пошаговые инструкции по установке, они есть на OSZone для Windows 7 и Windows 8.

Если операционная система на физической машине новее той, что установлена на виртуальной, рекомендуется обновить компоненты интеграции (спасибо, Артем). Для этого подключитесь в диспетчере Hyper-V к виртуальной машине, нажмите Ctrl + I и запустите setup.exe.

Клонирование виртуальных машин Hyper-V через Windows Admin Center

Возможно клонировать ВМ Hyper-V напрямую без промежуточного экспорта/импорта появилась в Windows Admin Center v2009.

Запустите WAC, выберите раздел Virtual Machines, выберите ВМ -> Manage -> Clone.

Windows Admin Center клонировать виртулаьную машину

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

wac клонирование виртуальной машины с sysprep

Обратите внимание, что мастере клонирования есть опция “I have already run sysprep on my VM”. Если вы не выполнили генерализацию образа с помощью Sysprep, и не включили эту опцию, Hyper-V создаст снапшот исходной ВМ, выполните ее Sysprep и склонирует в новую (исходная ВМ будет несколько раз перезагружена и не доступна для работы). После этого исходная ВМ будет возвращена в первоначальное состояние, а снапшот удален.

При клонировании любых ВМ, с гостевыми ОС, отличными от Windows, всегда включайте эту опцию.

Windows Admin Center - pre-sysprep снимок при клонировании

Дождитесь окончания клонирования ВМ. Новой ВМ автоматически будет присвоен новый ID.

клонирование виртуальной машины hyper-v

Резервное копирование кластеров Hyper-V и Hyper-V

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: