Windows Server 2008 R2: Server Core and Hyper-V Server

2010-02-10, 15:52 / Argon

В этой статье я порассуждаю о пользе варианта установки Server Core, доступном в Windows Server 2008 R2, расскажу о бесплатном продукте Hyper-V Server 2008 R2 и поделюсь боевым опытом работы с этими вариантами Windows Server 2008 R2.

Субъективное мнение о пользе Server Core

Жалобы и предложения

На протяжении всего моего знакомства с режимом Server Core у Windows Server 2008 R2 меня не покидают ощущения искусственности этого продукта. Явно прослеживается желание Server Core быть как Linux, но при этом постоянно натыкаешься на несвойственные для Linux неприятности.

Приведу небольшое сравнение особенностей Server Core и Linux.

Windows Server Core Linux
Со всех сторон демонстрирует урезанность от полноценной, изначально графической ОС Windows NT. Действительно удобные, ничего не требующие в техническом плане диалоги настроек жестоко вырезаны и заменены на консольные команды, на которые страшно смотреть. Изначально консольный, в этом режиме он абсолютно полноценен. Графическую часть можно легко установить и также безболезненно удалить. Для упрощения конфигурирования есть встроенные диалоговые скрипты.
Для удобного управления и чтения мануалов требуется внешняя полноценная ОС. Конфигурировать удобно и просто и в текстовом режиме, есть встроенные маны.
Предъявляет немалые требования к аппаратуре, потребляет ресурсов больше, чем Windows Server 2003. Действительно легок и универсален в требованиях к железу.
Работает лишь небольшое подмножество ролей полной Windows Server 2008. Весь нормальный серверный софт под Linux работает в консольном режиме.
Первоначальное конфигурирование предполагается из командной строки (ничто, конечно, не мешает создавать пакетные файлы). В реестр, традиционно, лезть не рекомендуется. Основное конфигурирование Linux ведётся в комментированных текстовых файлах, которых можно держать несколько версий.
Удобное удалённое управление из графических консолей MMC. Жалко, что управлять можно не всем и не всегда (проблемы аутентификации вне домена). Здесь Linux в пролёте…

Однако, раньше было еще хуже, со времени первой редакции Server Core в Windows Server 2008 есть значительное развитие:

  • стала доступна роль веб-сервера IIS
  • появился PowerShell
  • встроен скрипт начального конфигурирования

Хотелось бы видеть развитие Server Core в следующих направлениях:

  • Увеличение числа поддерживаемых стандартных ролей. Любые стандартные серверные роли, даже исходя из названия, не требуют для своей работы графического интерфейса. Видимо, для оставшихся за бортом ролей Microsoft пока не успели сделать адекватное удалённое управление.
  • Поддержка дополнительных серверных приложений от Microsoft и сторонних разработчиков (их участие, конечно, тоже потребуется). Таким продуктам, как SQL Server, Exchange, Kerio WinRoute и MailServer (да и любым другим, нормальным серверным) для работы серверной части не нужна графическая оболочка, всё равно управление осуществляется из отдельных консолей.
  • Включение в стандартную поставку диалоговых скриптов для автоматизированного конфигурирования основных параметров. В Linux-е же есть такие, здорово облегчают рутину. Чем Microsoft хуже?

Сценарии для адекватного применения Server Core

Реальное применение Server Core я вижу, например, в следующем сценарии. Для исполнения заранее ограниченного числа встроенных в Windows Server ролей, поддерживаемых Server Core, необходим выделенный сервер. Предполагается однократное конфигурирование перед запуском в среду. Дальнейшие административные вмешательства, диагностика, применение дополнительного ПО и возникновение каких-либо проблем — не предполагаются.

Предполагаю следующие варианты адекватного применения Server Core:

  • Active Directory DC/RODC + DNS + DHCP в удалённом офисе
  • File Server + Print Server + BranchCache Hosted Cache
  • IIS + Media Services
  • Hyper-V — просто идеально!
  • Network Policy and Access Services (RRAS, NAP) + WSUS + Exchange — было бы шикарно, но пока не возможно.

При совместном применении указанных сочетаний ролей, аппаратного шифрования BitLocker, грамотной, нацеленной на безопасность настойки и качественного оборудования может получается довольно надежное и безопасное решение возложенных функций и практически «черный ящик» для нежелательных внешних воздействий.

Hyper-V Server 2008 R2

Hyper-V Server 2008 R2 представляет собой Windows Server 2008 R2 в режиме Server Core с одной единственной предустановленной ролью — Hyper-V. По способу управления они идентичны: командная строка, PowerShell, WinRM, MMC, RDP.

Как я писал выше, именно роль Hyper-V является идеальной для использования Windows Server 2008 R2 в режиме Server Core, и счастье, что Microsoft тоже это понимает. Но особая радость состоит в том, что Hyper-V Server 2008 R2 абсолютно бесплатен и практически не ограничен по функциональности в рамках роли Hyper-V.

Поддерживается 1 терабайт памяти, 64 логических процессора, 386 виртуальных машин, современные серверные хранилища информации, непосредственно подключаемое и сетевые. Сохранена совместимость виртуальных машин с «обычным» Hyper-V, поддерживаются снапшоты, отказоустойчивая кластеризация, Live Migration, управление через System Center Virtual Machine Manager, работает PowerShell.

Это несомненный Epic Win со стороны Microsoft и «Кузькина Мать» для vmWare.

Боевой опыт работы с Server Core

Режим Server Core рассчитан на однократную настройку из консоли, а все дальнейшее управление предполагается удаленно по сети, из различных MMC консолей, WinRM и прочих радостей. Полный набор для удаленного управления Windows Server 2008 R2 (не только Server Core) можно установить на Windows 7. Однако, ограниченно работают и наборы удаленного администрирования серверных ОС и для Windows Vista, и для Windows XP.

Первоначальная настройка

С версии R2 появилась так недостающая ранее утилита автоматизированной первоначальной настройки sconfig. Она позволяет:

  • задать имя компьютера, включить его в домен
  • добавить локального администратора
  • настроить сетевые параметры
  • активировать PowerShell
  • включить удаленное управление через WinRM, MMC, RDP, Server Manager

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

  • intl.cpl — элемент панели управления для настройки языковых параметров
  • timedate.cpl —элемент панели управления для настройки параметров времени
  • taskmgr —диспетчер задач
  • notepad никуда не делся
  • regedit всё тот же
  • msinfo32 — вот уж «необходимая» вещь!
  • но самое приятное — работает Total Commander (и, возможно, другой незаменимый софт)!

CoreConfig

Энтузиастами была разработана более продвинутая графическая утилита для конфигурирования Server Core — Core Configurator, настоятельно рекомендую опробовать, так как на позволяет выполнить мышкой почти все действия, описанные ниже. Перед запуском CoreConfig необходимо включить PowerShell в SCONFIG, а саму программу можно закинуть на сервер по сети (\\server\c$) сразу после установки и конфигурации сетевых параметров.

Настройка железа

Несмотря на богатый набор встроенных в стандартную поставку Server Core драйверов для сетевых карт, может понадобиться установить эти драйвера вручную. За работу с драйверами устройств в Server Core отвечает утилита pnputil. Например, для установки драйвера для сетевой карты нужно выполнить следующую команду

pnputil -i -a drivername.inf

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

Как уже упоминалось выше, возможности удаленного управления активируются с помощью программы sconfig, советую включить их все. Затем настроите брандмауэр, используя консоль Windows Firewall with Advanced Security в режиме удаленного управления (mmc → добавить консоль Windows Firewall with Advanced Security → указать адрес управляемого сервера в качестве цели). Возможно, перед этим понадобится разрешить в брандмауэре входящие управляющие соединения, сделать это можно с помощью CoreConfig, либо следующей командой:

netsh advfirewall set currentprofile settings remotemanagement enable

Меньше всего проблем с управлением свежеустановленным Server Core возникает, если его ввести в домен. По умолчанию в брандмауэре включится профиль Domain, будет работать прозрачная аутентификация в консолях MMC и WinRM. Ну и, конечно, групповые политики будут применены ко всему, что найдут.

Если ли же вы хотите управлять Server Core без использования доменной аутентификации, для использования альтернативных учетных данных при подключении к управляемому компьютеры выполните следующую команду на управляющем компьютере.

cmdkey /add:server.argon.com.ru /user:server\admin /pass:argonforever

Это здорово облегчит подключение по WinRM и сделает возможным в принципе управление по MMC.

Как настроить WinRM на клиенте и подключиться им к вашему серверу, читайте в моей статье «Выполнение консольных команд на удаленных компьютерах по сети».

Для управления Server Core с помощью консоли Server Manager, нужно открыть его на локальной машине, правый клик на корне Server Manager → Connect To… Будут доступны:

  • Task Scheduler
  • Event Viewer
  • Shared Folders
  • Services
  • Disk Management (если сначала запустить службу Virtual Disk)

Для доступа к следующим управляющим возможностям нужно запустить MMC, выбрать File → Add Snap-in… и указать в качестве цели адрес управляемого компьютера:

  • Group Policy Object Editor
  • Windows Firewall with Advanced Security

Device Manager

По умолчанию, управление устройствами не доступно, чтобы включить его (да и то только в режим чтения), в консоли Group Policy Object Editor идём в Computer Configuration → Administrative Templates → System → Device Installation и включаем Allow remote access to the PnP interface. Для вступления изменений в силу нужно перезагрузить компьютер. Для этого можно выполнить команду

winrs -r:servername shutdown /r /t 0

…если у вас все в порядке с учетными записями, в противном случае можно воспользоваться ключами -u:user -p:pass.

Конфигурирование сетевых интерфейсов

В стандартной поставке нет графического элемента панели управления ncpl.cpl, который позволяет настраивать параметры сетевых интерфейсов. Имеется текстовое средство netsh, которое помимо всей своей неудобности не позволяет настраивать привязки сетевых протоколов.

Со мной несколько раз происходила неприятная ситуация: при создании внешних виртуальных сетей в менеджере Hyper-V что-то может пойти не так, и ваша сетевая карта оставалась привязана только к протоколу Microsoft Virtual Network Switch Protocol. Но ни основная ОС, ни виртуальные машины к этому сетевому интерфейсу доступа не имели. А при попытке привязать виртуальную сеть к этому сетевому адаптеру выдавалась ошибка:

Не удается привязать ... так как уже выполнена привязка к другой виртуальной сети.
The switch could not bind to ... because it is already bound to another switch.
Binding to the external ethernet NIC_Name failed.
Cannot bind to NIC_Name because it is already bound to another virtual network.

В графической среде эта проблема решалась отключением привязки протокола Microsoft Virtual Network Switch Protocol от физического сетевого интерфейса, а затем включением на нем традиционных протоколов (IP, IPv6, Клиент для сети Microsoft).

Однако, в Server Core такая задача была не выполнима стандартными средствами, что вводило в бешенство. Даже Microsoft признали эту проблему и, наконец, выпустили утилиту NVSPBind, которая позволяет настраивать привязку протоколов к сетевым интерфейсам в среде Server Core.

Полезные ссылки



9 комментариев

dimokkk
# Комментарий от 2010-03-12, 22:10

Все равно тяжело себя приучить работать в коммандной строке Core, кто бы что ни говорил гуйни не хватает!

am1goo
# Комментарий от 2010-04-29, 15:24

Рад что у нас в Кирове есть еще MCITP:)
И статьи интересные, могу помочь в написании если что) Конечно до EA дорасти не удалось (всего лишь MCTS), но я думаю оно не за горами, только экзамены сдать)))
А так я тебя в аську добавил, там и про ПоЕ свичи договоримся, да и так)

EDWS
# Комментарий от 2010-09-10, 16:37

Сенки за статью. Но имхо core вещь все равно бесполезная. Я R2 core не юзал но R1 троху погонял. Признаюсь сразу у меня загорелись глаза, во первых, что core просто летает по сравнению с полной версией, можно ставить на старенькие системы. Первая идея которая взбрела в голову — так это жe можно накодить интерфейсик на dotnet, соответственно сделать на базе core ось заточенную под собственные нужды! Но пыл мой охладило отсутствие того самого dotnet в core R1, а кодить интерфейс на C++ желания и смысла нет никакого. Имхо в M$ спецом не включили dotnet в R1, чтобы присечь таких умников как я, потому как если бы дотнетчики загорелись такой идеей то подвинули бы и висту и семерку! В core R2 dotnet включили но x32 не поддержали соответственно — попа. Нарываешься на непреодолимый гемор с совместимостью. Жалко конечно, ядро то само ниче так.

Argon
# Комментарий от 2010-09-10, 20:09

Про R1 согласен, без фреймворка и других ролей — шарманка еще та была. А вот R2 уже вполне хороша, для выполнения функций, описанных в статье — вполне годится.

Aleksa106
# Комментарий от 2011-08-10, 17:29

Спасибо за NVSPBind…выручило.

lujana
# Комментарий от 2013-02-13, 13:11

Для 2012 сервера есть своя тула. Брать тут http://corefig.codeplex.com/

Argon
# Комментарий от 2013-02-19, 00:51

Спасиба, попробуем!

МЭСМ
# Комментарий от 2014-08-21, 18:16

Спасибо
NVSPBind.exe — r {NIC} — восстанавливает параметры, и решает проблему

Не удается выполнить привязку «», так как уже выполнена привязка к другой виртуальной сети»

Иван
# Комментарий от 2014-10-18, 23:56

Спасибо за NVSPBind…выручило

Добавить комментарий