Hyper-V Server настройка и управление

Hyper-V Server настройка и управление — мой опыт по созданию серверов виртуализации, их архивированию и все связанные с этим моменты.

Почему Hyper-V Server?

Hyper-V Server 2012 R2 или 2016 (далее HVS) vs Hyper-V в составе полноценной ОС. Плюсы очевидны:

  1. Полнофункциональный продукт бесплатно. Подчеркну именно полнофункциональный, не урезанная версия и не условно-бесплатная замануха, где выпилено всё самое нужное;
  2. Меньше площадь атаки и площадь падения. HVS, имея на борту всего несколько ролей, выступает как узкоспециализированное решение - в этом его сила, чем проще, тем надёжнее;
  3. Если использовать Hyper-V под той же самой Windows 2012 R2 с графическим режимом, получаем полностью зависимое решение от хостовой ОС - от перезагрузок и выключений, от BSOD'ов, от ошибок, в том числе от ошибок администрирования, ошибок стороннего софта и драйверов, от перегрузки хостовой ОС;
  4. Если использовать Core-режим Windows 2012 R2 для Hyper-V, встает вопрос цены и лицензирования - всё тоже самое можно получить легально и бесплатно в HVS;
  5. Занимает минимум места на диске ~ 7GB.

Минус HVS следует за плюсами, один большой минус:

  • Ограниченный и сложный родной инструментарий управления внутри самого сервера. Ограниченный в виде sconfig и сложный в виде powershell. Ведь некоторые так и делают, сначала базовые настройки в sconfig, а затем лепят конструкции PS, да ещё и солюшены выкладывают. Отказываемся от этого сразу, 90% управления удалённо и через графический режим.

Потрудиться конечно придется, как же без этого?


Железо

Крайне желательно покупать специализированное серверное железо.

Очень хорошо, что есть компании и полноценный б/у сервер можно приобрести по цене двух новых стационаров.

Сейчас таких компаний уже несколько, их несложно найти в поисковике и линейка предлагаемых б/у серверов довольно широкая, на любой кошелёк.

Можно купить недорого на барахолке, но уже без гарантии.

Конфигурацию 1 CPU (4 ядра, HT) и 8Gb памяти можно взять за разумный минимум.

NIC

Сетевые карты желательно выбирать такие, которые поддерживают виртуализацию аппаратно (SR-IOV), подробнее здесь. Включается данная опция либо в BIOS материнской платы, либо включена по умолчанию. Поддержка на уровне ПО активируется при создании виртуального коммутатора, нужно отметить специальный чекбокс. В свойствах сетевой также нужно включить чекбокс на закладке Аппаратное ускорение:

Hyper-V Server настройка и управление

Схема работы следующая:

Hyper-V Server настройка и управление

SR-IOV есть не у всех серверов, проверка наличия этой функции по модели сервера до покупки никогда не будет лишней.

В интернете много информации о некорректной работе данной функции на ряде оборудования. Пропадает сеть и другие баги. Кто-то действительно решает установкой специализированных драйверов, кто-то отключает SR-IOV. Со временем всё отладят, функция нужная и полезная. Честно говоря, по данной опции знаний у меня пока немного.

CPU+RAM

Однопроцессорная система класса Xeon E3 и 8Gb памяти оказалась вполне боевой. На такой машине успешно трудится 4 виртуальных машины:

  • 2 дополнительных контроллера домена для 2 доменов в режиме Core - по 1Gb оперативки на машину;
  • CentOS - 2Gb;
  • Ubuntu - 1,5Gb.

Двухпроцессорная система Xeon L5520 и 24Gb памяти тянет уже 10 виртуальных машин (в основном нетребовательные к объёму памяти бывшие физические сервера Windows 2003/2008: FTP, файловый сервер, сервер антивируса и так далее — которые перевели в среду виртуализации для уплотнения).

HDD и SSD

Дисковая подсистема и количество дисковых операций часто становятся узким местом на хосте виртуализации. Неоднократно наблюдал такое на разных конфигурациях, от своего домашнего компьютера, где все VMs на 1 диске, до нескольких блейд-серверов с дисковой полкой по оптике в качестве общей дисковой подсистемы.

Если ставить систему без RAID, то жёсткие диски нужны обязательно раздельные под систему и под виртуалки. К тому же нужно сразу учесть количество виртуалок (и пользователей в каждой виртуалке) на диск - операций ввода-вывода в секунду диска (IOPS) должно быть с запасом. Оптимально 1 диск - 1 VM.

Можно для удобства воспользоваться IOPS-калькулятором, можно выставить качество обслуживания для виртуального диска в свойствах виртуальной машины. Мой выбор - обычный жесткий диск, можно мелкий, можно б/у, но с зеленым SMART под систему и несколько Samsung EVO/PRO 850 (3D V-NAND) под виртуалки.

Никого так делать не призываю, потому как Desktop-диски не предназначены для серверов, но сам так делаю и буду. Создавать RAID силами BIOS сервера именно под виртуалки не вижу смысла. Такое решение больше программное, чем аппаратное и если можно без него обойтись, то лучше без него.

RAID

Конечно если есть денежная возможность поставить нормальный RAID, нужно ставить его. Что значит нормальный? На отдельном контроллере с аппаратным буфером и желательно с батарейкой, на серверных Enterprise-SAS хардах/SSD. А если нету? Почему говорю против программных RAID? Ответ простой — функционал:

  • Скорость работы, скорость ребилда, надёжность, ПО;
  • Наличие у железного RAID дополнительных функций типа Hot Spare: резервный диск, который вступит в работу как только отвалится 1 из основных дисков.

При программном RAID получается вместо защиты от падения ещё 1 дополнительная сложность и плоскость отказа. Лучше уж тогда обычные диски и резервное копирование с возможностью bare metal recovery. Посыпался диск? Ну и ладно, мы к такой ситуации готовы, восстанавливаем из архива.

Вторая беда программных BIOS-RAID это то, что они жёстко привязаны к платформе, значит если материнская плата сервера выйдет из строя (вздутые конденсаторы, перегрев моста и так далее), то быстро восстановить работоспособность хоть в каком-то виде будет довольно сложной задачей.

Какой RAID выбрать? Для нагруженных серверов однозначно 10, для файловых помоек и типа того — 5. RAID с расчётом контрольной суммы всегда менее предпочтительны (исключение составляет только, пожалуй, RAID 50 — две 5 в страйпе, но такое умеет далеко не каждый RAID-контроллер).

Минус RAID в HVS
  • Нет софта именно под HVS, может для самых новейших контроллеров такой софт есть, не знаю. Под обычной ОС с GUI ставится софт, настраиваются события и e-mail администратора, если у RAID начинает падать диск, ребилды, то приходит письмо соответствующего содержания. На HVS софт не поставишь, в каком состоянии RAID, диски вот так просто не посмотришь. Это опасно. Поэтому и раздельные диски, Samsung EVO/PRO обеспечивают высокую скорость, минимальное время доступа и фантастическую живучесть.

Тут поможет установка агента Zabbix, если конечно же Zabbix развёрнут в сети.

Поднял тестовый HVS 2012 R2, скачал последний агент zabbix (версии 3.2), закинул на HVS через встроенную шару в папку zabbix на диске C файлы установки, установил x64 версию агента:

C:\> c:\zabbix\zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -i

Успешная установка, служба работает:

Затем нужно подправить конфигурационный файл zabbix_agentd.win.conf, указать куда будет записываться лог (по умолчанию в корень C), адрес сервера (по умолчанию Server=127.0.0.1) и тестовый сервер Zabbix "из коробки" нормально подцепил агента:

Ну а уже через Zabbix мониторим состояние RAID или отдельных дисков, если RAID не используется. Осталось проверить на боевом сервере в продакшене (уже вряд ли проверю, так как переквалифицировался в управдомы в сетевика-затейника).


HVS 2016 vs HVS 2012 R2

Отличие HVS 2012 R2 от 2016 по CPU

Изучая системные требования для обоих ОС нетрудно увидеть, что HVS 2016 требует наличие SLAT (Second Level Address Translation). SLAT позволяет виртуализовать страницы памяти и отдать их под прямой контроль гостевой системы, не затрагивая гипервизор, что конечно же быстрее и надёжнее. Вот сами требования:

SLAT имеет различные версии реализации:

  • EPT (для Intel);
  • RVI/NPT (для AMD).

В то время как HVS 2012 R2 требует только DEP (Data Execution Prevention):

Nested Virtualization

Вложенная виртуализация - как следует из документа, доступна только для HVS 2016.

Проверка поддержки виртуализации

Процессорами AMD не пользуюсь, поддержку для процессора Intel проще всего проверить по модели на ark.intel.com, SLAT будет в разделе Advanced Technologies как Intel® VT-x with Extended Page Tables (EPT):

Много утилит для проверки, большинство из них врёт или имеет ограничения. Лучше всего использовать Coreinfo с ключом -v:

Сама MS рекомендует проверять поддержку с помощью Systeminfo.exe, информация о поддержке нужных функций находится в самом низу вывода команды или сокращенно:

systeminfo | select -last 4

Если гипервизор уже установлен и работоспособен, то информация выводится не будет:

Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.

Поэтому такая проверка подойдёт для Windows с GUI и без роли Hyper-V, для HVS она бесполезна.

По итогам: 

  • На старые сервера ставим HVS 2012 R2 и без вариантов;
  • При установке HVS 2012 R2 забудьте про вложенную виртуализацию.

Если же установить HVS 2016 на сервер без SLAT, то он нормально установится и даже можно будет создавать виртуальные машины, но стартовать они не смогут.


Установка

Тут всё просто. Единственный на момент образ HVS 2012 R2 выложен в свободном доступе на MS. Ну и рядом там же HVS 2016. Придется завести учетную запись в MS для скачивания. Наверное можно закачать где-то ещё через торрент, но мне по душе скачивать с первоисточника, если есть возможность, исключает вероятность adware и другие шутки.


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

Для начала нужно выполнить первоначальную настройку через sconfig:

  • Сетевые настройки;
  • Настройки даты и времени, проверить синхронизацию;
  • Включить удаленное управление WinRM;
  • Включить удаленный десктоп;
  • Загрузить обновления.

Обновления - важный момент, так сама сборка, выложенная на MS - старая. Бесплатные продукты "допиливаются" в последнюю очередь или вообще не допиливаются, это понятно - загрузить обновления нужно. Для HVS 2012 R2 обновлений очень много, а сама сборка очень старая (а может и единственная) и даже не знает, что Москва это UTC+3, пишет +4. Для HVS 2016 обновлений немного. Параметр Автоматическое обновление считаю лучше не включать. Почему? Гарантия стабильной работы - никаких незапланированных изменений, тем более изменений, про которые администратор не знает. Это как бомба на верёвке - пока висит, всё хорошо. Вдвойне опасно, так как HVS будет выступать сервисом для других ОС.

Что ещё есть на самом HVS?

Из полезного есть Редактор реестра - regedit, есть Диспетчер задач - taskmgr. Из бесполезного Блокнот - notepad. Запускаются через командную строку. Возможно есть что-то ещё, знаю только это.

Присутствует стандартный инструментарий командной строки и конечно же PS.

Для локального управления можно поставить бесплатный FarManager, может быть устаревший уже Corefig и условно-бесплатный 5nine. Лично для меня полезность установки этих программ, да и локального управления в целом, сомнительна. Условно-бесплатные программы в топку. Всё это, так или иначе - костыли.

Встроенный фаервол считаю в общем случае лучше не выключать. С другой стороны его работа не бесплатна, он  задействует ресурсы HVS при фильтрации пакетов.

В данном примере реализации выключаю потому, что:

  • HVS за NAT, NAT выступит в роли файрвола;
  • Внутри моей локальной сети реализация безопасности позволяет так сделать - где-то подсеть вообще на 2 компьютера, где-то сервера виртуализации в отдельном VLAN с ограниченным доступом;
  • Защиту от вирусов обеспечивает удаление WoW64.
netsh advfirewall set allprofiles state off
Отключение IPv6

Поскольку данный протокол скорее всего не используется и местами загромождает вывод команд, то можно его безболезненно отключить. Можно не отключать - на усмотрение администратора. Как уже говорил, Редактор реестра работает и нужно добавить параметр DWORD (32 бита) с именем DisabledComponents и значением FF в шестнадцатеричной системе в секцию HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP6\Parameters:

Hyper-V Server настройка и управление

После перезагрузки IPv6 будет отключён на всех интерфейсах.


Администрирование

Заготовка под будущий сервер есть. Теперь моё видение - HVS предназначен для удалённого администрирования. Локальных инструментов мало, они неудобны и это не минус, а плюс. Управлять удалённо серверами, не только HVS, а вообще всеми имеющимися серверами, из единой консоли - это мега удобно. Управление HVS через Server Manager с другой машины предоставляет все необходимые в работе инструменты.

Administration Host

Задача - подцепить HVS к Server Manager на другом компьютере, назовём этот компьютер Administration Host (AH). Для настройки используется подключение с AH к HVS через RDP, которое работает в любом случае. В качестве AH может выступать либо компьютер с 2012 R2/2016, либо с Windows 10 Pro и RSAT.

Подробнее о RSAT
  • Подойдёт машина с Windows 8 или Windows 10. Поскольку после выхода 10 ставить Windows 8 как-то уже сильно не хочется, забудем про 8. Значит нужна машина с Windows 10;
  • Есть 2 варианта: скачать и установить RSAT для Windows 10 с полным набором утилит управления и наиболее нужной из них - Server Manager либо установить встроенную оснастку для управления только Hyper-V из раздела Включение и отключение компонентов Windows. Вариант 2 сильно урезанный по возможностям, поэтому отпадает;
  • Установка RSAT и встроенные возможности Hyper-V поддерживается на Windows 10 Pro и не поддерживается на системах Home Edition;
  • RSAT не работает на системах с ARM процессорами.
Подробнее о Server Manager
  • Из Windows 2012 R2, 2016 и Windows 10 с RSAT можно управлять серверами Windows 2008/2008 R2 после установки на последние WinRM 3.0. Управлять серверами 2003/2003 R2 нельзя, так нельзя поставить WinRM 3.0;
  • Оснастка управления именно Hyper-V в Windows 10/2012 R2/2016 несовместима с Server 2008/2008 R2 и наоборот. Связано это с изменением пространства имён классов WMI для виртуализации от Windows 2008 R2 к 2012 R2, 2012 без R2 понимает оба пространства. Поэтому, допустим, Server Manager на Windows 10 увидит сервер на Windows 2008 R2, успешно подцепит его, распознает роль Hyper-V, но запуск оснастки Hyper-V для данного 2008 R2 невозможен;
  • По указанной выше причине Windows 7 с установленным RSAT не может управлять Hyper-V на Windows 2012 R2.

Да, есть небольшое неудобство по поводу оснастки Hyper-V для 2008 R2. Вариантов как его обойти - тонна. Главный разговор идёт про бесплатный HVS, который выпускается в 2 версиях и версии Hyper-V Server 2008 R2 среди них нет.


HVS и AH в одной подсети, в одной рабочей группе

Подразумевается, что для всех компьютеров рабочей группы, включая HVS и AH, пользователь Администратор - это единое имя и единый пароль. Это логично, удобно для запоминания - обычно на практике так и делают. И как следствие, при открытии с AH чего-либо на HVS (оснастка, консоль и так далее) - всё нормально заходит и открывается без ввода пользователя и пароля. Всё, кроме WinRM.

Когда мы добавим HVS в Server Manager на AH, то увидим:

Hyper-V Server настройка и управление

Почему так происходит? Потому, что автоматически компьютеры доверяют друг-другу в домене, а в рабочей группе такое доверие нужно прописать вручную.

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

  • Просмотр событий;
  • Общие папки;
  • Пользователей;
  • Диски;
  • Службы.

Изначально управление дисками не заработало, сказав: - "Сервер RPC недоступен", посмотрев, что соответствующая служба HVS работает, понял - дело в фаерволе AH. Можно отключить файрвол или настроить. Настройка файрвола рассмотрена ниже в пункте Брандмауэр.

Hyper-V Server настройка и управление
WinRM

Итак, настраиваем WinRM. Параметры WinRM по умолчанию:

Hyper-V Server настройка и управление

Нужно добавить оба компьютера в TrustedHosts друг-другу. Синтаксис тут будет такой:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value NAME

где NAME - имя компьютера. Команда перезапишет текущее значение TrustedHosts. Если нужно добавить еще одно значение к уже существующим, то применяется параметр -Concatenate, а параметр -Force уберет запрос подтверждения выполнения команды. Посмотреть текущее значение TrustedHosts можно так:

Get-Item WSMan:\localhost\Client\TrustedHosts

Ну и последнее - для успешного добавления, добавлять сервер в Server Manager нужно по его имени. Иногда с добавлением по IP адресу возникают баги, а точнее после добавления, в чём точно было дело уже не припомню, но столкнулся и обратил внимание.

Hyper-V Server настройка и управление

Если привыкли работать через встроенные шары (C$, D$, ..), тогда здесь всё, если нужны обычные шары, тогда нужно добавить роль File Server:

Hyper-V Server настройка и управление

И после создать файловую шару, куда будут заливаться образы установочных дисков для виртуалок и другие шары для работы:

На что обратить внимание
  • Подключение к сети на AH обязательно перевести из Общего профиля в Частный и включить обнаружение.

HVS и AH в одном домене

Проблем нет, идеальный вариант, дополнительная настройка не нужна.


HVS и AH в разных доменах

Подцепить сервер для управления, сервер подцепится с ошибкой, правой кнопкой контекстное меню - Управлять как, ввести реквизиты администратора домена где находится HVS. По поводу без доверия - припоминаю ситуацию и всё нормально подцепилось и работало за несколько месяцев до того как настроил отношения доверия. Работало и без доверия, и с доверием.


HVS и AH в разных сетях, соединённых каким-то подключением (скорее VPN), каждый в своей рабочей группе

Ну вот добрались до самого вкусного, управление из дома. Чтобы 10 раз не уточнять, AH тут - ваш домашний компьютер. Поставили одиночный сервер, настроили, прокинули VPN, приехали домой и хотите рулить:

  • Настроить TrustedHosts как описано выше;
  • На AH в файле C:\Windows\System32\drivers\etc\hosts прописать HVS, чтобы имя сервера HVS резолвилось в IP адрес;
  • Дальше был большой затык, так как HVS упорно не хотел цепляться выкидывая ошибку:
У вас нет необходимого разрешения на выполнение этой задачи. Обратитесь к администратору политики авторизации для компьютера (Имя_HVS). 
  • Идём через RDP на HVS и добавляем с помощью sconfig в группу администраторы нового пользователя с точно таким же именем и паролем как пользователь на AH, под которым вы работаете. После чего HVS сразу подцепился к моему домашнему компу, а сижу я через клиентское OpenVPN подключение.
На что обратить внимание

Чтобы не ловить баги на ровном месте, имена пользователей лучше всегда задавать на латинице;

  • Если на домашнем компьютере нет пароля, значит нужно установить пароль. Вообще отсутствие у пользователя пароля является одной из главных причин невозможности получить доступ к сетевым ресурсам даже при предоставлении всех необходимых разрешений, так как по умолчанию действует правило парольной защиты (оно в дополнительных настройках сети):
  • Не удаётся установить на сервере такой же пароль как и на домашнем компьютере из-за того, что он слишком простой и не соответствует правилам сложности - сменить пароль на сложный, затем установить его на сервере;

Файрвол выключен на HVS и включён на AH - специально проверил, при включённом файрволе на HVS подключение не работает, хотя на HVS выполнена команда PS winrm quickconfig. Нужно править руками, данный момент пока остаётся в работе.

Проверка

При работе в RSAT на Windows 10 Pro и HVS 2016 - проблем нет, кроме того, что не открывается Управление дисками с сообщением "нет доступа". Не придал значения, так как непринципиально.

Затем настроил подключение в RSAT на Windows 10 Pro и HVS 2012 R2. Дополнительно к Управление дисками оснастка Hyper-V тоже пишет "нет доступа". Стал уже разбираться. Помог скрипт hvremote.wsf, довольно старый, но всё ещё боевой. На странице чётко указано: Windows 10 и 2016 не поддерживаются.

There are no plans add support for Windows 10/Windows Server 2016 - there are too many changes in Windows 10 to take this on in a simple manner right now given other things I'm working on. Sorry.

Но работа возможна с добавлением параметра /override.

Итак, запускаю проверку со своего домашнего компьютера:

J:\>cscript hvremote.wsf /show /override /target:hv-srv

В выводе скрипта вижу ошибку и солюшен:

WARN: ANONYMOUS LOGON does not have remote access

This setting is required when the client is in a workgroup, or the server is in an untrusted domain from the client.

Use hvremote /mode:client /anondcom:grant to turn on

Выполняю:

J:\>cscript hvremote.wsf /override /mode:client /anondcom:grant

Оснастка Hyper-V сразу нормально начинает функционировать, а Управление дисками пишет "Сервер RPC недоступен". Эта ситуация уже была и описана в разделе HVS и AH в одной подсети, в одной рабочей группе. Выключил файрвол на домашнем компьютере, да, Управление дисками работает. Но выключать/включать каждый раз не хочется, полностью выключать тоже не хочется.

Брандмауэр

Во-первых, видно, что запрещаются только неразрешенные входящие соединения:

Hyper-V Server настройка и управление

Стало быть запрос приходит на удалённый компьютер, он отвечает и входящий пакет блокируется. Далее, моё VPN подключение находится в Общем профиле:

Ну и тут либо более грубо - вырубить файрвол для всего Общего профиля (Общественная сеть), потому что 2 приватные сети соединены туннелем и фильтрация пакетов не нужна. Это лишнее. Либо же более тонко - выбрать пункт Разрешить взаимодействие с приложением или компонентом в брандмауэре Windows и там поставить галку Удалённое управление томами в столбце Публичная:

Работоспособность восстановлена.


HVS и AH в разных сетях, соединённых каким-то подключением, HVS в домене

Избыточная ситуация, если есть домен, значит есть достаточное число рабочих станций/серверов с GUI, одну/один из которых можно настроить как AH, далее из дома подключаться к AH, а уже оттуда управлять как HVS, так и другими серверами. Такая схема по моему мнению более верная, чем напрямую ломиться из дома на именно на HVS-сервер в домене и тем более что-то для этого настраивать, поэтому вариант непосредственного подключения AH из рабочей группы к серверу HVS в домене даже не рассматриваю - нет в этом необходимости.


AH как виртуальная машина на HVS

Если уже есть на HVS виртуальная машина, которая подходит на роль AH, то как временное решение использовать можно. Однако создавать на HVS виртуалку только для такого управления.. ИМХО плохо. Первая причина - схема громоздкая. Допустим машина AH из-за чего-то стала неработоспособна, мы не можем удаленно вот так просто её восстановить из архива или из сохранённого состояния либо же нужны манипуляции через PS - неудобно, не можем управлять другими машинами пока AH лежит и возможно придётся применять инструмент ноги, что нежелательно. Вторая причина - потребление ресурсов, то есть существует виртуальная машина, всё время включена, практически не используется, при этом ей выделено какое-то количество памяти, ядра процессора. Поэтому настойчиво рекомендую эту схему избегать и применять только в крайних случаях.


Настройка HVS через Server Manager

Сначала устанавливаю компоненту .Net Framework 3.5 - для архивации через HVBackup, как это сделать рассказано ниже, в пункте Архивирование HVBackup. Затем удаляю компоненту WoW64 - совместимость с 32 разрядными приложениями и SMBv1 - для защиты от вирусов. Сервер полностью работоспособен без данных компонент.

Пароль Администратора

Обнаружилось, что на HVS по умолчанию пароль администратора истекает через 42 дня. Пароль администратора через этот срок блокируется и удаленно подключиться к компьютеру ни через RDP, ни через Server Manager, ни как-то ещё - не получится. Это печально и я с этим столкнулся.

Для решения нужно сначала доехать до сервера и поменять пароль, затем подцепиться с AH и в свойствах учётки Администратора отметить чекбокс "Пароль никогда не истекает". Возможно MS поправит этот баг, потому как для сервера, который подразумевает только удалённое управление - это именно баг.

Политики HVS

Политики у HVS есть. Добраться до них непросто, так как на HVS нет mmc:

На AH открываем mmc, Добавить или удалить оснастку->Редактор объектов групповой политики->Обзор->Другой компьютер, вводим имя сервера HVS:

Hyper-V Server настройка и управление

Ну и собственно вот оно. Если сравнивать с политиками на обычном компьютере, то видно, что на HVS политики сильно урезаны:


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

Устанавливаем на AH компоненту для удаленного управления Hyper-V, если AH с серверной ОС:

Hyper-V Server настройка и управление

и RSAT, если AH с десктопной ОС.

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

Hyper-V Server настройка и управление

Далее создаем внешний виртуальный коммутатор, включаем на нем SR-IOV. Опция доступна только если есть поддержка со стороны железа. Выключить эту опцию потом нельзя, только через удаление существующего и создание нового виртуального коммутатора.

После этого создаем виртуальные машины. Если нет конкретных противопоказаний, то рекомендую создавать виртуалки как машины 2 поколения - сами ОС знают, что они синтетические, моментальная установка, быстрое и адекватное поведение.

Для машин 2 поколения Hyper-V поддерживаются ОС:

  • Windows 8/10;
  • Windows 2012/2012 R2;
  • Windows 2016;
  • Ubuntu: 14.04 и выше;
  • Debian: точно работает 8.8 (Jessie), если в свойствах машины выключить Безопасную загрузку, с другими версиями не сталкивался;
  • CentOS: 7 работает, версии ниже уже неинтересны.

Полную информацию можно посмотреть здесь (прокрутить страницу вниз до Содержание раздела и там выбрать нужную ветку).


Обмен файлами

Всё неплохо воркает через встроенные шары. Когда подключение к интернету высокоскоростное, то залить дистрибутивы не составляет проблемы:


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

Сколько и каких выделять ресурсов каждой виртуальной машине - решаете сами.

Доступные логические процессоры для VMs - это физические ядра, плюс потоки Hyper-Threading.

Хочу только обратить внимание на раздел Управление, подраздел Службы интеграции, пункты Автоматическое действие при включении (и при выключении) и Синхронизация времени. Если на шаге начальной настройки было настроено обновление времени HVS через интернет, то можно спокойно передавать на виртуалки через Синхронизацию времени - время будет точным. Если HVS устанавливается в уже существующий домен, то синхронизация идёт от домен контроллера - Синхронизацию времени  на виртуалках тоже включаем.

А вот если контроллером домена является одна из виртуалок, Синхронизацию времени с ней нужно выключить.

Автоматический старт виртуалок при включении хоста (небольшие разные задержки для разных виртуалок) и завершение при выключении - именно завершение работы гостевой ОС, а не сохранение - редко, но метко сохраненные состояния оказываются неработоспособными при включении, что требует ручного вмешательства. Завершение работы гостевой ОС гораздо дольше, зато надёжнее. За исключением, может быть, VMs на Linux, тут зависит от конкретного дистрибутива и особенностей работы Служб интеграции для Linux (LIS) в этом дистрибутиве. В некоторых случаях при установленных LIS актуальной версии Hyper-V не может погасить Linux машину при перезагрузке самого HVS и всё это дружно висит и ждёт ручного вмешательства.

Включаем SR-IOV в свойствах синтетической сетевой, если есть поддержка со стороны железа. Возможно придётся поставить специализированные драйвера.

Пробрасывание внутрь виртуальных машин USB-устройств (у меня это ключи 1С) осуществляется с помощью программы USB Over Network.


Удаленное управление 

Схемы для удалённого управления всего 2:

  1. VPN;
  2. Проброс портов.

Нужен VPN, если AH - машина с Server Manager для управления находится удалённо. Нужен проброс портов, если AH локально с HVS.

Про проброс портов подробнее. Вопрос безопасности. Поскольку порты открыты в интернет и присоединиться может каждый желающий, рекомендую следующее:

  1. Порты из динамического диапазона >50000. Сканирование портов требует времени и боты сканируют в основном общеизвестные порты <1023;
  2.  На сервере не выключать опцию "More secure clients only" для RDP - будет использоваться поддержка NLA;
  3. Для пользователей RDP использовать пароли минимум 8 знаков, отвечающие требованиям сложности. Чтобы не ломать голову можно воспользоваться одним из онлайн-генераторов паролей: //pasw.ru/

Немного про требования сложности. Есть 4 группы символов - латинские строчные, латинские прописные, цифры и все остальные (специальные, сюда же входят национальные строчные и прописные), для соблюдения требований сложности в пароль должны входить символы минимум из трех групп. Все тоже самое касается пользователей виртуальных машин.

Кроме этого RDP-сессия шифруется сертификатом сервера.

Считаю, что этого достаточно для обеспечения безопасности - сессия зашифрована, подобрать пароль не получится из-за NLA и криптостойкости самого пароля.

Кому этого мало, могут обратить внимание на такие срeдства как: Cyberarms IDS и различные скрипты по ограничению количества попыток входа в систему.


Архивирование Acronis

Без архивирования вся проделанная работа ничего не стоит. Первый блин это Acronis Advanced Backup. Варианта тут два:

  1. Агент архивирования ставится на HVS;
  2. Агент архивирования ставится внутрь каждой виртуалки.
Hyper-V Server настройка и управление

Разница в количестве лицензий, поэтому выбираю вариант 1. А на AH в этом случае ставится хранилище и менеджмент.

Полностью ознакомиться с документом можно на сайте Acronis'а, либо скачав с моего Google Drive.

Установка - адская пляска с бубном, то Acronis не может, то он не видит, то он не хочет... И есть большой недостаток - практически все компоненты, включая акронисовского агента Hyper-V - 32-разрядные. Непонятно. Значит не получится удалить компоненту WoW64 и сделать HVS полностью бронебойным.

Плюс то, что архивирование на уровне гипервизора дает различные схемы по архивированию.

Порядок установки такой - сначала все необходимые компоненты устанавливаются на AH:

Затем через Удаленную установку на HVS заливается Агент Hyper-V, который состоит из двух частей - Агента Core и непосредственно Агента Hyper-V.

Потом на Узле хранения создается Хранилище - у меня это локальная папка и наконец План резервного копирования для виртуалок.

Hyper-V Server настройка и управление

Есть много путей как настроить архивирование, это 1 из вариантов, не самый лучший.


Архивирование HVBackup

Архивация машин с гипервизора, установленного в обычной ОС с GUI при помощи HVBackup была рассмотрена в отдельной заметке.

Что для HVS? Вариант Acronis считать полноценным нельзя по понятным причинам - ломовая цена и 32-разрядность (смотри выше). Бесплатный Veem позволяет делать архивацию, но не автоматизирует её. Администратор может заболеть, уйти в отпуск, не успеть в связи с форс-мажорными или аварийными ситуациями, забыть наконец - бекапы не будут сделаны и тут-то, как обычно это и бывает, какая-то виртуальная машина отвалится. Такое никуда не годится, да и главный принцип системного администрирования - максимальная автоматизации всех IT-процессов - при этом нарушается. Поэтому наилучший вариант всё тот же HVBackup. Позволяет он без костылей и танцев архивировать машины? Позволяет. Рассмотрим.

.Net Framework 3.5

Первое, что нужно сделать установить на машину с HVS .Net Framework 3.5 для Core режима. По умолчанию он не установлен и более того установочного пакета нет в установленной ОС.

Скриншот сделан с другой машины, не HVS, но смысл тот же самый. Поэтому подготавливаем флешку с дистрибутивом и запихиваем в сервер. Букву нового диска удобно посмотреть в Server Manager:

Уже говорил, повторю - здесь же в разделе Общие ресурсы можно создавать расшаренные папки для HVS:

Более того, как тоже уже говорил выше, моё личное мнение такое - Server Manager предоставляет достаточный набор функций для работы с HVS и другие инструменты не нужны (или же нужны крайне редко в нестандартных ситуациях).

Итак, подключаем флешку и выбираем Добавить роли и компоненты - .Net Framework 3.5, установщик сразу предупредит, что у него нет установочных файлов и выделит пункт Указать альтернативный путь:

После чего указываем путь к флешке:

WoW64

Всё это известно и неоднократно выложено на просторах интернета, но есть нюанс. Пробовал ставить как рассказано, пробовал через пошик, результат - компонент не установлен. Закончилось тем, что на обоих управляющих рабочих станциях с RSAT, Server Manager вылетел с ошибкой и не запускался до перезагрузки сервера 🙂 Поиски солюшена ничего не дали и тут мне коллега по работе подсказал, что дело может быть в установленном .Net Framework 4.6. Это не подтвердилось, но натолкнуло меня на мысль, что дело может быть в каких-то других компонентах. И это так.

Дело именно в WoW64, сношу эту компоненту для усиления безопасности HVS, так вот, его нужно поставить обратно, перезагрузить сервер, установить .Net Framework 3.5 и можно сносить снова. 🙂 Так и сделал.

После чего копируем папку с HVBackup на сервер, там же создаём скрипт backup-vm.cmd:

set BCKPATH="\\backup\f$\SVM0"
pushd %BCKPATH% && forfiles.exe -m *.zip -d -20 -c "cmd /c del @path"
popd
HVBackup.exe -a -o %BCKPATH% 1> log_out.txt 2> log_err.txt

Скрипт взят с домашней страницы HVBackup, сейчас проект уже в архиве.

Хотя заявленные к поддержке ОС заканчиваются на Windows Server 2012 - и HVS 2012 R2, и HVS 2016 нормально архивируется.

Планировщик

На домашней странице HVBackup есть примеры добавления заданий через командную строку. Гораздо удобнее настроить планировщик через Server Manager:

Hyper-V Server настройка и управление

И проверить тестовым запуском:

Очень важно отметить работу с лог файлом.

log_out.txt

С помощью этого файла можно контролировать работу задания по архивации не только после завершения задания, но в момент выполнения:

Cloudbase HyperVBackup 1.0 beta1
Copyright (C) 2012 Cloudbase Solutions Srl
http://www.cloudbasesolutions.com

Backing up all VMs on this server
Initializing VSS

Starting snapshot set for:
Offline\USDWiki

Volumes:
D:\

Component: "Offline\USDWiki"
Archive: "\\backup\f$\SVM0\USDWiki_20170324154858.zip"
Entry: "hyper-v/snapshots/Snapshots/649A9C9A-A90E-4D87-8C02-3FC4BF3322B4.VMCX"
................................................................................
Entry: "hyper-v/snapshots/Snapshots/649A9C9A-A90E-4D87-8C02-3FC4BF3322B4.VMRS"
.................

Ещё один момент, если задание уже запущено в Планировщике, то его отмена через Планировщик останавливает работу скрипта, но не останавливает работу HVBackup.exe и все машины будут заархивированы как и положено.

И последнее, задания в Планировщике лучше лучше настроить от отдельного пользователя, которого специально создать под эти цели, тогда после плановой или внеплановой смены своего пароля, спустя недели так 2-3, вдруг не обнаружится, что все задания отвалились.


Восстановление

Если зайти на домашнюю страницу HVBackup, то в самом внизу можно прочесть, что функция бекапа в данной версии стабильна, а функцию восстановления ещё только предстоит сделать и все это датировано 14 годом.. Бесплатный проект - есть бесплатный проект, свои плюсы, свои минусы. Спасибо людям за чёткий инструмент бекапа.

Hyper-V Server настройка и управление

Как же восстанавливать? Разархивировать и перезаписывать .vhd/vhdx диск.

Возникает проблема, у машины нет прав на работу с файлом диска после перезаписи. Нужно эти права добавить вручную. Так вот просто взять и добавить права конкретной машине не получится, можно можно использовать утилиту MS Icacls.

Смотрим Virtual machine ID машины в папке, где машина лежит:

Он же является и SID для машины, копируем его и вводим команду:

icacls "D:\VM\Import\zimbra\Virtual Hard Disks\zimbra.usd.vhd" /grant "NT VIRTUAL MACHINE\D9B759EF-A94D-42C2-8E22-C88AE7836B68":(R,W)

Для русской версии Windows будет:

ВИРТУАЛЬНАЯ МАШИНА NT - вместо NT VIRTUAL MACHINE

Смотрим права на файл диска, нужные права на месте:

Всё, машина нормально стартует. Вывод: не оставлять снимок машины, тем более дерево снимков, на длительный срок и заменять при восстановлении только файл диска, иначе работы по смене прав прибавится.


Заключение

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

HVS - это первое крупное решение, которое MS предоставила бесплатно.

4 thoughts on “Hyper-V Server настройка и управление”

    1. Андрей

      Большое спасибо, меня полностью устраивает работа через Server Manager 🙂

  1. Ярослав

    Не могу найти информацию по Hyper-v Server:
    1. Как расшарить каталог на чтение для ананимного пользователя из др. домена. Групповые политики сильно ограничены. "Гость" включен, каталог на него расшарен, но при заходе с чужого домена "нет доступа". Пробовал также "Все".
    2. Как подключиться к Брандмауэр Windows. Пробовал через добавление оснастки mmc: Произошла ошибка при открытии брандмауэра Защитника Windows с оснасткой дополнительной безопасности

  2. Насчет удаленного управления, рекомендую WINDOWS ADMIN CENTER, кучу вопросов решает. За статью спасибо. Небольшая поправка, если HVS и AH в разных сетях и не в домене, вот это может облегчить задачу по удаленному управлению:
    Enable-PSRemoting -SkipNetworkProfileCheck -Force

Leave a Comment

Scroll to Top