Работа с Hyper-V Server 2019

Установка и настройка Free Windows Hyper-V Server 2019 (2016)

https://winitpro.ru/index.php/2019/08/07/nastrojka-free-windows-hyper-v-server/

После установки необходимо осуществить сетевые настройки.
По-умолчанию в консоли sconfig в пункте 8 предлагается сделать настройки для физической сетевого адаптера. Такой вариант подходит для быстрого получения доступа к установленному серверу, однако в производственной среде управление через одиночный сетевой интерфейс вряд ли можно считать хорошей практикой, поэтому лучше сразу сделать тиминг из 2-х сетевых адаптеров, подключенных к разным коммутаторам. Также это позволит использовать сетевые адаптеры не только для управления, но и для виртуалок, а также выставить Поэтому запускаем консоль powershell и погнали.

План следующий:
1) делаем тиминг
2) создаём виртуальный сетевой коммутатор на интерфейсе тиминга
3) создаём виртуальный сетевой адаптер для управления Hyper-V Server
4) присваиваем сетевые настройки на сетевом адаптере управления

Литература:

https://www.altaro.com/hyper-v/virtual-networking-configuration-best-practices/
http://pyatilistnik.org/nic-teaming-on-windows-server-2019/

Объединение сетевых карт (Teaming)

Посмотреть список физических сетевых адаптеров с мак-адресами (можно также через ipconfig /all):

Get-NetAdapter | FT -auto

Предположим, мы хотим объединить интерфейсы “Ethernet” и “Ethernet 2”.

Если действия будут производиться с интерфейсом, по которому в данный момент идёт удалённое управление сервером, то, прежде чем начинать, нужно подключиться к консоли сервера (iLO или KVM), т.к. в процессе создания тиминга входящие в него интерфейсы потеряют адреса, а свежесозданный тиминг IP-адреса иметь не будет, по умолчанию он будет пытаться получить его по dhcp.

New-NetLbfoTeam -Name Teaming_Mgmt -TeamMembers "Ethernet", "Ethernet 2" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic

Удалить или добавить сетевую карту в тиминг:

Add-NetLbfoTeamMember -Team Teaming_Mgmt -Name "Ethernet 2"
Remove-NetLbfoTeamMember -Team Teaming_Mgmt -Name "Ethernet 2"

Создание виртуального сетевого коммутатора (vSwitch)

Создадим виртуальный свитч на менеджмент интерфейсе Teaming_Mgmt:

New-VMSwitch -Name vSwitch-Mgmt -NetAdapterName Teaming_Mgmt
Remove-VMSwitch -Name vSwitchName

Данная команда создаёт виртуальный свитч типа External (можно указать -SwitchType Internal/Private).

Создание виртуального сетевого адаптера (vNIC)

Add-VMNetworkAdapter -ManagementOS -SwitchName vSwitch-Mgmt -Name vNIC-Mgmt
Get-VMNetworkAdapter –ManagementOS
Rename-VMNetworkAdapter -ManagementOS -Name CurrentName -NewName NewName

Указание VLAN на виртуальном сетевом адаптере

Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName vNIC-Mgmt -Access -VlanId 3303
Get-VMNetworkAdapterVlan -ManagementOS

Сетевые настройки на виртуальном сетевом адаптере

Задать IP-адрес можно следующей командой:

New-NetIPAddress -InterfaceAlias Teaming_Mgmt -IPAddress 172.16.1.120 -PrefixLength 24 -DefaultGateway 172.16.1.1
New-NetIPAddress -InterfaceIndex 34 -IPAddress 172.16.1.120 -PrefixLength 24 -DefaultGateway 172.16.1.1

В случае если у интерфейса не задан InterfaceAlias, можно указать InterfaceIndex, взяв его из результата команды Get-NetAdapter

Задать DNS-сервер:

Set-DnsClientServerAddress -InterfaceAlias Teaming_Mgmt -ServerAddresses 10.128.2.16

Настройка Firewall

https://winitpro.ru/index.php/2019/09/25/upravlenie-windows-firewall-powershell/

Get-NetFirewallRule | ft DisplayName, Enabled
Set-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request - ICMPv4-In)" -enabled True
Set-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-In)" -Enabled True

Enable-NetFireWallRule -DisplayName "Windows Management Instrumentation (DCOM-In)"
Enable-NetFireWallRule -DisplayGroup "Remote Event Log Management"
Enable-NetFireWallRule -DisplayGroup "Remote Service Management"
Enable-NetFireWallRule -DisplayGroup "Remote Volume Management"
Enable-NetFireWallRule -DisplayGroup "Windows Defender Firewall Remote Management"
Enable-NetFireWallRule -DisplayGroup "Remote Scheduled Tasks Management"

netsh advfirewall monitor show currentprofile
netsh advfirewall set allprofiles state off
netsh advfirewall set allprofiles state on
netsh advfirewall show allprofiles
netsh advfirewall set publicprofile state on
netsh advfirewall reset

#Включить уделенное управление томами
Enable-NetFirewallRule -name RVM-RPCSS-In-TCP,RVM-VDSLDR-In-TCP,RVM-VDS-In-TCP

Отключение IPv6 на сетевом адаптере

Get-NetAdapterBinding | Where-Object -Property DisplayName -Match IPv6 | Format-Table –AutoSize
Disable-NetAdapterBinding -Name "MyAdapter" -ComponentID ms_tcpip6
Get-NetAdapterBinding | Where-Object -Property DisplayName -Match IPv6 | Disable-NetAdapterBinding -ComponentID ms_tcpip6

Включение MPIO

https://winitpro.ru/index.php/2013/11/15/ustanovka-i-nastrojka-mpio-v-windows-server-2012/

Add-WindowsFeature -Name 'Multipath-IO'

Графический интерфейс для включения MPIO можно открыть, введя команду mpiocpl

Из командной строки:

mpclaim.exe -r -i -a ""

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

Обязательно перезагрузить сервер для включения MPIO!

Обновление списка дисков

diskpart
list disk
rescan
list disk

"rescan" | diskpart
"list disk" | diskpart

Удалённая консоль mmc бесполезна. При любом изменении данных консоль нужно открывать заново, никакие кнопки “обновить” не помогают!
Можно использовать Windows Admin Center, тоже основные функции выполнять можно.

Просмотреть WWN storage-адаптеров

Get-InitiatorPort

Список дисков и LUN

Get-WmiObject Win32_DiskDrive | sort scsilogicalunit | ft @{Label=”Disk Number”;Expression={"Disk "+$_.index}}, @{Label=”Size (GB)”;Expression={[Math]::Round($_.size / 1GB, 2)}; Alignment="left"}, @{Label=”LUN”;Expression={$_.scsilogicalunit}}, @{Label=”ScsiBus”;Expression={$_.scsibus}}, SerialNumber, Caption -autosize

Отключить/включить сетевую карту

Get-NetAdapter | FT -auto
Get-NetAdapter -name Teaming_Data | Disable-NetAdapter -Confirm:$false
Get-NetAdapter -name Teaming_Data | Enable-NetAdapter -Confirm:$false

Создание кластера без домена

http://woshub.com/workgroup-failover-cluster-windows-server-2016/

https://www.vembu.com/blog/workgroup-cluster-in-hyper-v-failover-cluster/

https://www.mssqltips.com/sqlservertip/4951/deploy-a-windows-server-2016-failover-cluster-without-active-directory-part-1/

Установка Windows Admin Center

После того как сетевые настройки выполнены и есть доступ по сети к управляющему интерфейсу Hyper-V Server, можно установить довольно удобную админку, в которой можно впоследствии делать рутинные операции по управлению сервером и виртуальными машинами.

Скачиваем пакет msi со странички:
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-admin-center
и заливаем его в папку на локальном диске через SMB. Открываем со своего компьютера \\HYPERV\c$ и вводим логин/пароль администратора.

Заходим по RDP на хост Hyper-V и в командной строке запускаем установочный файл msi:

PS C:\_Distrib> .\WindowsAdminCenter2103.2.msi

Запустится установщик с GUI. Все настройки можно оставить по-умолчанию, не устанавливать галочку напротив Use WinRM over HTTPS only, порт оставляем 443, установить галочку редиректа с 80-го порта.

Настройка хранения файлов виртуальных машин

Get-VMHost | FL
Set-VMHost -VirtualMachinePath D:\Hyper-V -VirtualHardDiskPath 'D:\Hyper-V\Virtual Hard Disks'

Установка Server Core App Compatibility Feature on Demand (OFD)

Набор совместимости предназначен для Windows Server Core, но также может быть установлен на Hyper-V Server.

Скачать отсюда:
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019

https://docs.microsoft.com/en-us/windows-server/get-started/server-core-app-compatibility-feature-on-demand

Если нужна консоль управления кластером, сначала нужно добавить фичу кластера в ОС, а затем установить FOD:

Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
Mount-DiskImage -ImagePath c:\_Distrib\17763.1.180914-1434.rs5_release_amd64fre_SERVER-FOD-PACKAGES_OEM_amd64fre_MULTI.iso
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0 -Source D:\ -LimitAccess

После завершения установки необходимо перезагрузить сервер.

Появятся следующие возможности:

  • Microsoft Management Console (mmc.exe)
  • Event Viewer (Eventvwr.msc)
  • Performance Monitor (PerfMon.exe)
  • Resource Monitor (Resmon.exe)
  • Device Manager (Devmgmt.msc)
  • File Explorer (Explorer.exe)
  • Windows PowerShell (Powershell_ISE.exe)
  • Disk Management (Diskmgmt.msc)
  • Failover Cluster Manager (CluAdmin.msc)

Настройка Live Migration

https://theitbros.com/live-migration-in-hyper-v/

https://winitpro.ru/index.php/2017/03/30/nastrojka-hyper-v-live-migration-bez-klastera/

Изоляция виртуальных машин с помощью ACL

https://windowsnotes.ru/virtualization/spiski-kontrolya-dostupa-porta-v-hyper-v/

Подключение pass-through дисков

http://devguis.com/hyper-v-storage-pass-through-disks.html

тут отговаривают от проброса дисков:
https://www.altaro.com/hyper-v/hyper-v-pass-through-disks/

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