В этой статье я хочу поделиться своим опытом установки и настройки гипервизора Hyper-V Server 2012R2 от компании Microsoft. Итак, приступим. Дано: 2 сервера и iscsi СХД.

1. Подготовка образа

Скачиваем образ для установки сервера с сайта Microsoft. Если вы располагаете развернутой службой Windows Deployment Services или установленным «Комплект средств для развертывания и оценки Windows» (Windows ADK), можно полученный по ссылке выше дистрибутив архиватором 7-zip распаковать в папку, например, D:\W2012\x64\dvd. Затем полученные
обновления windows
Windows8.1-KB2919355-x64.msu
Windows8.1-KB2919442-x64.msu
Windows8.1-KB2932046-x64.msu
Windows8.1-KB2934018-x64.msu
Windows8.1-KB2937592-x64.msu
Windows8.1-KB2938439-x64.msu
Windows8.1-KB2959977-x64.msu
скопировать в папку D:\W2012\x64\upd, создать папку D:\W2012\mnt и с помощью следующего батника обновить образ.

Скрипт обновления и модификации образа
Dism /Mount-WIM /WimFile:D:\W2012\x64\DVD\sources\install.wim /index:1 /MountDir:D:\W2012\mnt
dism /image:D:\W2012\mnt /Enable-Feature /FeatureName:MultipathIo
dism /image:D:\W2012\mnt /Enable-Feature /All /FeatureName:NetFx3 /Source:d:\W2012\x64\dvd\sources\sxs
dism /image:D:\W2012\mnt /Add-Package /PackagePath:d:\W2012\x64\upd
Dism /Unmount-Wim /MountDir:D:\W2012\mnt /commit
pause

Обратную сборку распакованного дистрибутива в загрузочный iso можно выполнить например программой Ultraiso, открыв в ней исходный образ и добавив в папку Sources файл install.wim из папки D:\W2012\x64\dvd\sources и сохранить полученный образ. Опять же все описанные выше манипуляции можно и не проводить, обновленный образ ускорит развертывание сервера Hyper-V

2. Установка

Если исходный диск для установки сервера превышает в размере 2Тб, то для того чтобы иметь возможность использовать все возможное пространство диска необходимо перед началом установки сконвертировать диск в GPT и разметить его. В процессе установки это сделать невозможно.

Необходимо загрузиться в режиме PE с инсталляционного диска и запустить diskpart.
Convert MBR to GPT using DISKPART

 # Diskpart
 # select disk 0
 # convert gpt
 # create partition primary align=64 offset= 104857600

Для дальнейшей установки необходимо в BIOS сервера выставить загрузку в UEFI режиме (но это в случае если у вас локальное дисковое хранилище сервера превышает 2 ТБ, если нет то этот шаг можно пропустить)

3. Начальная настройка

В sconfig включаем Remote Desktop (пункт 7-e-2):



Включаем ping (пункт 4-3):



В командной строке запускаем powershell и отключаем firewall (можно пропустить):

 Set-NetFirewallProfile –Profile * -Enabled False

4. Настройка виртуального коммутатора

Задание пула MAC адресов для виртуального коммутатора (менять выделенные значения, т.е. берем последний октет ip-адреса (например 192.168.251.11) mgmt-интерфейса и переводим его в шестнадцатеричный вид):

New-ItemProperty -Path “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization” -Name MinimumMacAddress -PropertyType Binary -Value ([byte[]](0x00,0x15,0x5D,0xFB,0x0B,0x00)) –Force

New-ItemProperty -Path “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization” -Name MaximumMacAddress -PropertyType Binary -Value ([byte[]](0x00,0x15,0x5D,0xFB,0x0B,0xFF)) –Force

Это нужно для того, чтобы MAC адреса виртуальных серверов, расположенных на разных hyper-v host, не пересекались. По умолчанию они выдаются из одного диапазона и могут получиться одинаковыми, как у меня и произошло при внедрении на одном объекте.

Получение списка сетевых адаптеров:

Get-NetAdapter

PS C:\Users\Administrator> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----          -----------------                   ------- ------       ----------             ---------
NIC4         Broadcom NetXtreme Gigabit Ethernet #2       14 Up         C8-1F-66-D1-CB-FA        1 Gbps
NIC3         Broadcom NetXtreme Gigabit Ethernet #4       16 Up         C8-1F-66-D1-CB-F9        1 Gbps
NIC2         Broadcom NetXtreme Gigabit Ethernet #3       15 Up         C8-1F-66-D1-CB-F8        1 Gbps
NIC1         Broadcom NetXtreme Gigabit Ethernet          13 Up         C8-1F-66-D1-CB-F7        1 Gbps

Нужные нам – NIC1 и NIC2.
Объединение адаптеров в группу (Team1):

New-NetLbfoTeam –Name Team1 –TeamMembers “NIC1”,“NIC2” –TeamingMode Lacp –LoadBalancingAlgorithm Dynamic

Создание виртуального коммутатора (vSwitch0):
New-VMSwitch -Name vSwitch0 -NetAdapterName Team1 -AllowManagementOS $False -MinimumBandwidthMode Weight

Создание виртуального сет. адаптера (Management) и подключение его к виртуальному коммутатору:

Add-VMNetworkAdapter -ManagementOS -Name "MGMT" -SwitchName "vSwitch0"
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "MGMT" -Access -VlanId 251
Set-VMNetworkAdapter -ManagementOS -Name "MGMT" -MinimumBandwidthWeight 20

Порты на физическом коммутаторе настроены в trunk и Vlan 251. В данном примере это подсеть для управления Hyper-V сервером.

Настройка IP-адреса, маски, шлюза и DNS сервера на виртуальном адаптере (MGMT): пункт 8 меню sconfig (например: 192.168.251.11/24, gw 192.168.251.1):

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

Подключаемся по RDP, создаем виртуальный сетевой адаптер (Cluster) и подключаем его к виртуальному коммутатору:

Add-VMNetworkAdapter -ManagementOS -Name "Cluster" -SwitchName "vSwitch0"
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Cluster" -Access -VlanId 253
Set-VMNetworkAdapter -ManagementOS -Name "Cluster" -MinimumBandwidthWeight 40

5. Подключение СХД

Будем исходить из того, что СХД уже настроена и подключена в соответствующие порты коммутатора. Настроим ip-адреса для адаптеров iscsi интерфейса:

В командной строке запускаем powershell:

New-NetIPAddress -InterfaceAlias "NIC3" -IPAddress 192.168.254.22 -PrefixLength 24
New-NetIPAddress -InterfaceAlias "NIC4" -IPAddress 192.168.255.22 -PrefixLength 24
Set-Service –Name MSiSCSI –StartupType Automatic
Start-Service MSiSCSI
New-IscsiTargetPortal –TargetPortalAddress 192.168.254.12
$target = Get-IscsiTarget
$target = Get-IscsiTarget
$target| Connect-IscsiTarget -IsPersistent $true -IsMultipathEnabled $true -InitiatorPortalAddress 192.168.254.22 -TargetPortalAddress 192.168.254.12
$target| Connect-IscsiTarget -IsPersistent $true -IsMultipathEnabled $true -InitiatorPortalAddress 192.168.255.22 -TargetPortalAddress 192.168.255.12
Get-IscsiSession | Register-IscsiSession

С сетевыми адаптерами Broadcom NetXtreme вылез неприятный баг, который выражался в том, что на драйверах, идущих в образе, была очень низкая скорость передачи по сети от 3 до 5 МБайт/с на гигабитном подключении. Низкая производительность сети —
Broadcom is aware of this issue and will release a driver update to resolve the issue. Until the driver update is available, you can work around the issue by taking one of the following actions:
Disable VMQ on the Virtual Network Adapter by using the following Windows PowerShell cmdlet:

Set-VMNetworkAdapter –ManagementOS -Name MGMT -VmqWeight 0

Исправляем, либо обновляем драйвера вручную.

6. Установка необходимых ролей

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

Dism /online /enable-feature:MultipathIo
DISM /online /Enable-Feature /all /FeatureName:NetFx3

Это если вы не модифицировали образ, как описано в п.1.

Добавляем поддержку SAS и iSCSI в оснастке mpiocpl и после перезагрузки в диспетчере дисков LUN-ы не будут двоиться, если сервер подключен двумя и более путями.

mpclaim -n -i -d "HP      MSA 1040 SAN"
(шесть пробелов обязательно)



Проверка:

diskpart
# list disk



При добавлении нового volume на СХД выполняем в powershell:

Get-Disk
Initialize-Disk -Number <Number of disk> -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume

Настройка времени (после добавления сервера в домен Windows время будет синхронизироваться с PDC):

В командной строке:

sc config w32time start= auto
net start w32time

Если необходимо, то вручную:
Control timedate.cpl

p.s.
Подправил немного текст и форматирование
Настройка кластера будет описана позднее.

Комментарии (10)


  1. Retifff
    29.05.2015 15:45

    Не очень понятно, с какой целью эти 7 обновлений интегрировать, почему нельзя обновить после установки?


    1. ildarz
      29.05.2015 18:15

      Почему автор предлагает эти 7, я не знаю, но в целом, если вам ставить больше одного сервера, обновления лучше интегрировать. Если не ошибаюсь, официальный образ Hyper-V не пересобирался с момента релиза, и там есть ряд граблей, связанных с последовательностью установки обновлений. Замучаетесь вручную. :) Если ошибаюсь и образ с оф. сайта всё-таки пересобирается, тогда, конечно, особого смысла нет.


      1. ALTF13
        29.05.2015 18:31

        Действительно, последняя доступная для скачивания сборка Hyper-V Server 2012 R2 была выпущена еще 9 сентября 2013 года.
        В отличие от «большого» Windows Server 2012 R2, там последняя сборка была выпущена 15 декабря 2014 года. Но даже для нее уже успело выйти немало обновлений.


      1. Retifff
        29.05.2015 19:35

        Про интеграцию в принципе понятно, просто думал, что в этих конкретно 7-и есть какой-то скрытый смысл ))


      1. xxlsuper Автор
        29.05.2015 21:48

        подготовка к статье велась достаточно давно :) на момент ее написания (конец 2014) года эти обновления составляли Windows Server 2012 R2 Update 1 + update russian timezone — их все равно пришлось бы ставить, а это как правильно отметили дополнительные перезагрузки и траты времени.


    1. ALTF13
      29.05.2015 18:24

      Всегда проще сразу подготовить мастер-образ, в котором будут включены все необходимые компоненты и установлены все необходимые обновления. Хост после развёртывания не будет скачивать сотни мегабайт обновлений, вышедших после публикации последней сборки.
      Если есть WSUS — то да, лишний интернет тратиться не будет, но в любом случае это дополнительное время и лишние перезагрузки.

      Когда хост планируется один, тогда можно и обновить после установки. Когда их 5+, то лучше интегрировать обновления в образ.


  1. ildarz
    29.05.2015 18:11
    +2

    > Remote Desktop — Enable all clients

    all clients? 2015 год на дворе.

    > отключаем firewall

    Тоже явно лишнее.

    > По умолчанию они выдаются из одного диапазона и могут получиться одинаковыми

    Вот как раз по умолчанию они и формируются на основании последних октетов IP-адреса. Совпасть они могут, если во время установки роли Hyper-V у серверов были одинаковые адреса.

    > New-ItemProperty -Path “HKLM:\

    Зачем трогать реестр, если есть Set-VMHost?

    > New-NetLbfoTeam –Name Team1 –TeamMembers “NIC1”,“NIC2” –TeamingMode Lacp

    … и у большинства следующих инструкции не взлетает. :)) Да и в целом не очень понятно, зачем использовать LACP при наличии у Hyper-V собственного балансировщика.

    > Установка необходимых ролей, должно быть подключение сервера к интернету

    Интернет нужен только для Net Framework 3, а зачем он на Hyper-V?

    > mpclaim -n -i -d «HP MSA 1040 SAN»

    mpclaim -r -i -a, и не надо мучаться с именем СХД.

    > Настройка времени

    Работает по умолчанию без дополнительной настройки.


    1. xxlsuper Автор
      29.05.2015 22:10
      +1

      про LACP это вы зря, если на портах физического коммутатора не настроено на объединение портов, то они (сетевые порты) спокойно будут себе работать в независимом режиме. Я описал свой частный случай установки Hyper-v, у кого другая инфраструктура и сетевое окружение — реализуют свой алгоритм установки :)


  1. ALTF13
    29.05.2015 18:14

    Вообще включение «Remote Management» — это далеко не только ping :)
    За статью спасибо.


  1. 4c74356b41
    30.05.2015 18:30

    Простите, а почему собственно «В процессе установки это сделать невозможно.»?