1. Подготовка образа
Скачиваем образ для установки сервера с сайта Microsoft. Если вы располагаете развернутой службой Windows Deployment Services или установленным «Комплект средств для развертывания и оценки Windows» (Windows ADK), можно полученный по ссылке выше дистрибутив архиватором 7-zip распаковать в папку, например, D:\W2012\x64\dvd. Затем полученные
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
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)
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, и не надо мучаться с именем СХД.
> Настройка времени
Работает по умолчанию без дополнительной настройки.xxlsuper Автор
29.05.2015 22:10+1про LACP это вы зря, если на портах физического коммутатора не настроено на объединение портов, то они (сетевые порты) спокойно будут себе работать в независимом режиме. Я описал свой частный случай установки Hyper-v, у кого другая инфраструктура и сетевое окружение — реализуют свой алгоритм установки :)
ALTF13
29.05.2015 18:14Вообще включение «Remote Management» — это далеко не только ping :)
За статью спасибо.
4c74356b41
30.05.2015 18:30Простите, а почему собственно «В процессе установки это сделать невозможно.»?
Retifff
Не очень понятно, с какой целью эти 7 обновлений интегрировать, почему нельзя обновить после установки?
ildarz
Почему автор предлагает эти 7, я не знаю, но в целом, если вам ставить больше одного сервера, обновления лучше интегрировать. Если не ошибаюсь, официальный образ Hyper-V не пересобирался с момента релиза, и там есть ряд граблей, связанных с последовательностью установки обновлений. Замучаетесь вручную. :) Если ошибаюсь и образ с оф. сайта всё-таки пересобирается, тогда, конечно, особого смысла нет.
ALTF13
Действительно, последняя доступная для скачивания сборка Hyper-V Server 2012 R2 была выпущена еще 9 сентября 2013 года.
В отличие от «большого» Windows Server 2012 R2, там последняя сборка была выпущена 15 декабря 2014 года. Но даже для нее уже успело выйти немало обновлений.
Retifff
Про интеграцию в принципе понятно, просто думал, что в этих конкретно 7-и есть какой-то скрытый смысл ))
xxlsuper Автор
подготовка к статье велась достаточно давно :) на момент ее написания (конец 2014) года эти обновления составляли Windows Server 2012 R2 Update 1 + update russian timezone — их все равно пришлось бы ставить, а это как правильно отметили дополнительные перезагрузки и траты времени.
ALTF13
Всегда проще сразу подготовить мастер-образ, в котором будут включены все необходимые компоненты и установлены все необходимые обновления. Хост после развёртывания не будет скачивать сотни мегабайт обновлений, вышедших после публикации последней сборки.
Если есть WSUS — то да, лишний интернет тратиться не будет, но в любом случае это дополнительное время и лишние перезагрузки.
Когда хост планируется один, тогда можно и обновить после установки. Когда их 5+, то лучше интегрировать обновления в образ.