Собираем кластер виртуализации на NanoServer

Исходные данные:
Есть два севера HP DL360G8 и FC СХД MSA P2000 G3. Задача - собрать кластер виртуализации на решении NanoServer.
Процесс создания волюмов и маппинга на ноды описывать не буду, это несложно. Для кластера надо кворумный волюм и волюм данных. У меня вышло 2 волюма данных, так как при 24 дисковой хранилке в RAID-группу можно собрать только 16 дисков... Но не суть.

Итак, подготовка и установка нод будущего кластера. Я использую отдельный сервер с Windows 2016 Standard для подготовки заливочной флешки. Сам дистрибутив у меня торчит на флешке по пути F:\

Копируем с дистрибутива 2016 каталог NanoServerGenerator (например в D:\Distribs\NanoServerGenerator\)

Запускаем PS с повышенными привилегиями, меняем текущий каталог на D:\Distribs\NanoServerGenerator\

Импортируем модуль NanoServerImageGenerator (работает в повершелле ОС 8.1, 10, 12R2, 16):
Import-Module .\NanoServerImageGenerator -Verbose

Отступление:
Для создания vhd с nanoserver, для использования nanoserver в качестве виртуалки делаем так:
New-NanoServerImage -Edition Standard -DeploymentType Guest -MediaPath F:\ -BasePath .\Base -TargetPath .\NanoServerVM\nano1.vhd -ComputerName s-mos1-nano1
и указываем административный пароль. В итоге в каталоге D:\Distribs\NanoServerGenerator\ получаем каталог NanoServerVM с vhd виртуалки наносервера.
vhd расширение создаст диск для виртуальной машины первого поколения, а vhdx создаст диск для второго поколения виртуальных машин) для компьютера с именем s-mos1-nano1

Отдельно создаем такой же образ для второй ноды - s-mos1-nano2

Создаем образ для развертывания хоста виртуализации на физическом железе:
Чтобы создать образ с поддержкой OEM драйверов для аппаратной развертки на физический хост используем опцию -OEMDrivers. В моем случае я еще добавляю поддержку кластеризации, файлсервера и Hyper-V (все опции сборки перечислены здесь: https://technet.microsoft.com/ru-ru/windows-server-docs/get-started/deploy-nano-server)
New-NanoServerImage -Edition Datacenter -DeploymentType Host -MediaPath F:\ -BasePath .\Base -TargetPath .\NanoServerPhysical\NanoServer.wim -ComputerName s-mos1-nano1 -OEMDrivers -Clustering -Storage -Compute -Package Microsoft-NanoServer-SecureStartup-Package, Microsoft-NanoServer-Host-Package

Копируем WIM образ на флешку с Windows PE, загружаемся с этой флешки на хосте где надо развернуть наносервер, запускаем diskpart, находим диск, который будет системным для NanoServ (пусть это 0 диск):

select disk 0
clean
create partition primary size=100
select partition 1
format quick fs=ntfs label="SYSTEM"
active
assign letter=s
create partition primary
select partition 2
format quick fs=ntfs label="NANOSERVER"
assign letter=n

выходим из diskpart и применяем образ NanoServer (изменив путь к WIM-файлу):

Dism.exe /apply-image /imagefile:.\nano1.wim /index:1 /applydir:n:\
Bcdboot.exe n:\Windows /s s: /f ALL

Убираем флешку и перезагружаем систему с помощью команды Wpeutil.exe reboot.

На всякий случай, как создать WinPE флешку:
нужен ADK Windows 10, на клиентской машине с Windows 10, или на сервере с Windows Server 2016. Запускаем среду средств развертывания и работы с образами с повышенными привилегиями, а в ней:

copype amd64 C:\WinPE_amd64
MakeWinPEMedia /UFD C:\WinPE_amd64 F:

После запуска нод нужно получить удаленное управление. Добавляем сервера в доверенные на сервере с GUI и RSAT (использовал этот же сервер с Windows Standard 2016 Desktop Experience):
Set-Item WSMan:\localhost\Client\TrustedHosts –Value "10.131.252.13"
Set-Item WSMan:\localhost\Client\TrustedHosts –Value "10.131.252.14"

Подцепляем их в Server Manager с локальной учеткой которая настроена на удаленных серверах и запускаем удаленный PS, настраиваем DNS сервера.
Get-NetAdapter даст нам индексные номера интерфейсов (ifIndex). Даем интерфейсу LAN адреса DNS:
Set-DnsClientServerAddress -InterfaceIndex 4 -ServerAddresses ("10.131.252.98","10.131.252.99")

Добавляем машину в домен, работает только оффлайн метод. На сервере уже находящемся в домене делаем запрос:
Djoin.exe /Provision /Domain "mydomain.ru" /Machine "s-mos1-nano1" /Savefile domainjoin.djoin /REUSE

Копируем на nanserver получившийся файлик (я копирую на c$\Users\Administrator\Documents, так как туда по умолчанию смотрит remote powershell сессия) и присоединяем в домен сервер:
djoin /requestodj /loadfile domainjoin.djoin /windowspath c:\windows /localos

Перегружаем сервер:
shutdown -r -t 0
Exit-PSSession

То же самое проделываем на второй ноде.
Я через Emergency Console назначил IP адреса на вторых интерфейсах для HerartBeat. Можно и через PS.

Для нормального создания кластера нужно прописать ноды в отдельную OU, дать права на создание объектов в этой OU нодам. После этого создаем кластер из серверов:
$Servers = 's-mos1-nano1','s-mos1-nano2'
New-cluster -name s-mos1-nanocl -node $Servers -StaticAddress 10.131.252.15

Далее можно управлять кластером через оснастку на сервере с GUI и нужным компонентом RSAT.
В моем случае еще есть полка, подключенная по избыточным FC линкам к хостам с презентованными дисками кворума и данных. Нужно корректно поднять MPIO и сделать кворумный и дата диски.
Установить MPIO можно через оснастку управления на сервере c GUI или через PS:
Enable-WindowsOptionalFeature -Online -FeatureName MultiPathIO

Для включения MPIO полезен скрипт MultipathIoClaim.ps1, который я взял тут:
https://technet.microsoft.com/en-us/windows-server-docs/get-started/mpio-on-nano-server

Форматируем подключенные диски:
Get-Disk | Where partitionstyle -eq ‘raw’ | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -Confirm:$false

Дальше мне понадобилось на хосте Windows Server 2016 развернуть RSAT. Через консоль RSAT Failover Clustering можно определить роли дисков. У меня, как я писал выше, это был один свидетель и два CSV.
Через консоль RSAT создаем нужные виртуальные свичи на нодах. Все, можно создавать виртуальные машины, делать их высокодоступными.

Подмеченные проблемы:
1. Нет поддержки Teaming. Интерфейсы сингловые, что может приводить к нежелательным отказам на сетевом уровне. Ждем включения поддержки Teaming, хоть Microsoft на замену предлагает пользоватся инструментарием виртуалнього свитчинга.
2. Нельзя назначать static IP если на интерфейсе нет линка. Проблема тянется с powershell на 2012R2.
3. Не нашел как можно деинициализировать проинициализированные диски на нодах.