From Wikipedia, the free encyclopedia
Server Core is a minimalistic Microsoft Windows Server installation option, debuted in Windows Server 2008. Server Core provides a server environment with functionality scaled back to core server features, and because of limited features, it has reduced servicing and management requirements, attack surface, disk and memory usage.[1][2] Andrew Mason, a program manager on the Windows Server team, noted that a primary motivation for producing a Server Core variant of Windows Server 2008 was to reduce the attack surface of the operating system, and that about 70% of the security vulnerabilities in Microsoft Windows from the prior five years would not have affected Server Core.[3] Most notably, no Windows Explorer shell is installed.[1] All configuration and maintenance is done entirely through command-line interface windows, or by connecting to the machine remotely using Microsoft Management Console (MMC), remote server administration tools, and PowerShell.
Configuration levels
[edit]
As Server Core implementations matured, it has evolved from an installation option to a configuration level.[4] Server Core is less looked down as a stripped version, instead the full GUI version is being thought of having a rarely needed client layer on top of the server layer[5]
Configuration levels in order of increasing complexity[4] for Windows server installations
Install type | Nano Server | Server Core | Minimal Server Interface | Server with a GUI or “Full Server” | Desktop Experience[6] |
---|---|---|---|---|---|
Availability | Server 2016 | Server 2008– | Server 2012–2012 R2[7] | –2012 R2[8] | Server 2008– |
In newer Windows versions there is more granularity in configuration levels:[5]
Windows Server 2008
[edit]
Windows Server 2008 was the first Windows Server with the Server Core option (in all editions, except IA-64[1]). Though no Windows Explorer shell is installed, Notepad and some control panel applets, such as Regional Settings, are available. Server Core on Windows Server 2008 does not include the Internet Explorer or many other features not related to core server features.[1] A Server Core machine can be configured for several basic roles: Active Directory Domain Services, Active Directory Application Mode (ADAM), DNS Server, DHCP server, file server, print server, Windows Media Server, IIS 7 web server and Hyper-V virtual server.[1] Server Core can also be used to create a cluster with high availability using failover clustering or network load balancing.
As Server Core is not a different version of Windows Server 2008, but simply an installation option, it has the same file versions and default configurations as the full server version.[1] In Windows Server 2008 and 2008 R2, if a server was installed as Server Core, it cannot be changed to the full GUI version and vice versa.[2]
To make administration of a Server Core machine easier, a Windows script called «scregedit.wsf» was included to make basic changes like turning Automatic Updates on or off, turning Remote Desktop on or off and change page file settings.[9]
Windows Server 2008 R2
[edit]
In Windows Server 2008 R2, Server Core includes a subset of the .NET Framework, so that some applications (including ASP.NET web sites and Windows PowerShell 2.0) can be used. Having .NET support, it is also the first Server Core version where Microsoft SQL Server can be installed (a supported scenario only with SQL Server 2012+).[10][11] Server Manager has become remoteable.[4] New roles had been enabled to run on Server Core, including Active Directory Certificate Services and the File Server Resource Manager component of the File Services role. WoW64 is available by default, but can be disabled.[12]
In addition to the DISM command, a new command line Server Configuration tool (Sconfig.cmd) has arrived to configure and manage several common aspects of Server Core installations.[13] Server Manager can be used to remotely administer a Server Core machine.
Windows Server 2012
[edit]
Unlike its predecessors, Windows Server 2012 can switch between «Server Core» and server with a DE installation option without reinstallation.[4] Server Core is now the default configuration level.[4] There is also a new installation option, «minimal server interface» that allows some GUI elements such as MMC and Server Manager to run, but without the normal desktop, shell or default programs like File Explorer.[14] The «minimal server interface» is in fact a server role (Server-Gui-Mgmt-Infra), the full GUI version contains the Server-Gui-Shell role as well. Some new roles are available, like Windows Server Update Services (WSUS), Active Directory Rights Management Server, and Routing and Remote Access Server, and many new features as well.[15]
Windows Server 2012 R2
[edit]
In Windows Server 2012 R2, Windows Defender is available in a Server Core installation, and is installed and enabled by default.[16][disputed – discuss]
Windows Server 2016
[edit]
Windows Server 2016 has a minimal footprint installation option (smaller than Server Core) called Nano Server, optimized for Windows Server Containers and Hyper-V Containers, as well as other cloud-optimized scenarios. Microsoft removed the GUI stack, WoW64 and Windows Installer. There is no local logon or Remote Desktop support.[17][18]
On installation, Server 2016 offers two options: Windows Server 2016 (which is Server Core) and Windows Server 2016 Desktop Experience. Switching between these versions, as is available in Server 2012, is not supported (the possibility was removed in Technical Preview 3).[19]
Supported GUI programs
[edit]
Windows Server 2016
[edit]
Some graphical programs supported in Core version
[edit]
Subset of Control Panel
- control.exe intl.cpl — Region
- control.exe timedate.cpl — Date and Time
regedit.exe — Registry Editor
notepad.exe — Notepad
cmd.exe — Command prompt
msinfo32.exe — System Information
msiexec.exe — Windows Installer
taskmgr.exe — Task Manager
powershell.exe — Windows PowerShell
iscsicpl.exe — ISCSI Initiator Properties
subset of Explorer function — all what can be done from File — Open dialog like
- File Copy, Paste, Rename, Delete, make new Folder
- Disk properties including tools on dialog like Error check
Other working programs with GUI
[edit]
adexplorer.exe — Sysinternals Active Directory Explorer
procexp.exe — Sysinternals Process Explorer
procmon.exe — Sysinternals Process Monitor
tcpview.exe — Sysinternals TCPview
vmmap.exe — Sysinternals VMMap
rammap.exe — Sysinternals RamMap 1.50
portqueryui.exe — Microsoft PortQueryUI Version 1.0
- MinWin
- ^ a b c d e f Microsoft Developer Network: What Is Server Core?
- ^ a b Petri IT Knowledgebase: Understanding Windows Server 2008 Server Core
- ^ «Iain McDonald and Andrew Mason show off the new Windows Server OS». Channel 9. Microsoft. May 24, 2006. Retrieved 2008-11-01.
18:55
- ^ a b c d e WindowsITPro: Windows Server 2012 Installation Options
- ^ a b «Our Server Journey». Channel 9. Microsoft. Feb 4, 2015. Archived from the original on 2015-04-09. Retrieved 2015-04-10.
29:20
. - ^ TechNet: Desktop Experience Feature
- ^ «About Windows Server Installation Options». Microsoft. Retrieved 2016-07-06.
This option is only available on Windows Server 2012 and Windows Server 2012 R2.
- ^ «Installation Options for Windows Server 2016 Technical Preview». Microsoft. 2015-11-19. Retrieved 2016-07-06.
The «Minimal Server Interface» and «Server with a GUI» modes present in Windows Server 2012 R2 are not available in this release.
- ^ Windows IT Pro: Scregedit Streamlines Server Core
- ^ SQL Coffee: How to Install SQL Server 2012 on Windows Server Core
- ^ Network Worls: Server Core 2008 – SQL Server not supported
- ^ 4SysOps: Uninstall Windows 32-bit on Windows 64-bit (WoW64) on Windows Server 2008 R2 Server Core
- ^ TechNet: Configuring a Server Core installation of Windows Server 2008 R2 with Sconfig.cmd
- ^ Bisson, Simon (September 14, 2011). «Windows 8 Server Developer Preview». ZDNet. CBS Interactive. Retrieved January 1, 2012.
- ^ TechNet: Install Server Roles and Features on a Server Core Server
- ^ «What’s Changed in Security Technologies in Windows 8.1». 25 June 2014.
- ^ Windows Server Blog: Microsoft Announces Nano Server for Modern Apps and Cloud
- ^ Server & Cloud Blog: Microsoft Announces New Container Technologies for the Next Generation Cloud Archived 2015-04-11 at the Wayback Machine
- ^ Windows Server Blog: Windows Server 2016 Installation Option Changes
- Mitch Tulloch, Windows Server Core Team at Microsoft (2008). Windows Server 2008 Server Core Administrator’s Pocket Consultant. Microsoft Press. ISBN 9780735626263
- John Paul Mueller (2008). Administering Windows Server 2008 Server Core. John Wiley & Sons. ISBN 9780470238400
- Microsoft Developer Network: What Is Server Core?
- Microsoft Developer Network: Server Core for Windows Server 2012 R2 and Windows Server 2012
- Michael Pietroforte: Nano Server – Goodbye Windows Server?
По причине прожорливости Windows-систем в среде VPS доминируют легкие Linux-дистрибутивы: Mint, Colibri OS, Debian или Ubuntu, лишенные ненужного, в рамках наших задач, тяжеловесного окружения рабочего стола. Как говорится, только консоль, только хардкор! И на самом деле, это совершенно не преувеличение: тот же Debian стартует на 256 MB памяти и одном ядре с тактом 1 Ghz, то есть почти на любом «пне». Для комфортной работы понадобятся от 512 MB и процессор чуть пошустрее. Но что если мы скажем вам, что примерно то же можно провернуть на VPS под Windows? Что не нужно накатывать тяжеловесный Windows Server, который требует от трех-четырех гектаров оперативной памяти и минимум пару ядер с тактом в 1,4 GHz? Просто воспользуйтесь Windows Server Core — избавьтесь от GUI и части служб. О том как это сделать и поговорим в статье.
Кто такой этот ваш Windows Server Core?
Внятной информации, что такое Windows (server) Core нет даже на официальном сайте майков, точнее, там все так запутанно, что и не сразу поймешь, но первые упоминания датируются еще эпохой Windows Server 2008. По сути, Windows Core — это работоспособное ядро Windows Server (внезапно!), «похудевшее» на размер собственного GUI и примерно половины побочных служб.
Основная фишка Windows Core — нетребовательность по железу и полностью консольное управление через PowerShell.
Если обратиться к сайту Microsoft и проверить технические требования, то для старта Windows Server 2016/2019 вам понадобится от 2 гигов оперативной памяти и минимум одно ядро с тактом 1,4 GHz. Но все мы понимаем, что на такой конфигурации мы можем ожидать только старта системы, но уж точно не комфортной работы нашей ОС. Именно по этой причине для работы Windows Server обычно выделяют побольше памяти и минимум 2 ядра/4 потока от процессора, если вовсе не предоставляют ей дорогую физическую машину на каком-нибудь Xeon, вместо дешевой виртуалки.
При этом само ядро серверной системы требует всего 512 MB памяти, а те ресурсы процессора, которые отжирались GUI просто для того, чтобы просто отрисовываться на экране и поддерживать запущенными свои многочисленные службы, можно пустить на что-то более полезное.
Вот сравнение поддерживаемых из коробки служб Windows Core и полноценной Windows Server с официального сайта Microsoft:
Как видно, из Windows Core вырезано очень многое. Под нож пошли службы и процессы, связанные с GUI системы, а также всякий «мусор», который однозначно не понадобится на нашей консольной виртуалке, например, Windows Media Player.
Почти как Linux, но не он
Windows Server Core очень хочется сравнивать с Linux-дистрибутивами, но на самом деле это не совсем корректно. Да, эти системы схожи между собой в плане пониженного потребления ресурсов за счет отказа от GUI и многих побочных служб, но в плане эксплуатации и некоторых подходов к сборке, это все еще Windows, а не unix-система.
Самый простой пример — с помощью ручной сборки ядра Linux и последующей установки пакетов и служб, даже легчаший Linux-дистрибутив можно превратить в нечто тяжеловесное и похожее на швейцарский нож (тут очень хочется баянисто пошутить про Python и вставить картинку из серии «If Programming Languages Were Weapons», но мы не будем). В Windows Core такой свободы намного меньше, ведь мы, все же, имеем дело с продуктом Microsoft.
Windows Server Core поставляется уже готовой сборкой, дефолтную комплектацию которой можно оценить по таблице выше. Если вам понадобится что-нибудь из списка неподдерживаемого, то придется онлайн через консоль добавлять недостающие элементы. Правда, не стоит забывать про Feature on demand и возможность выкачать компоненты в качестве CAB-файлов, которые потом можно добавить в сборку перед установкой. Но этот сценарий не работает, если вы уже в процессе работы обнаружили, что вам не хватает какой-либо из вырезанных служб.
Но что выгодно отличает Core-версию от полной — это возможность обновления системы и добавления служб без остановки работы. Windows Core поддерживает раскатку пакетов «на горячую», без ребута. Как итог исходя из практических наблюдений: машину под управлением Windows Core нужно перезагружать в ~6 раз реже, нежели под управлением Windows Server, то есть раз в полгода, а не раз в месяц.
Приятным бонусом для администраторов будет то, что если системой пользоваться, как было задумано — через консоль, без RDP — и не делать из нее второй Windows Server, то она становится крайне секьюрной по сравнению с полной версией. Ведь большинство уязвимостей Windows Server приходится именно на RDP и действия пользователя, который через этот самый RDP делает то, что не следовало бы. Это примерно как в истории с Генри Фордом и его отношению к цвету автомобиля: «Any customer can have a car painted any color that he wants so long as it is black». Так и с системой: пользователь может каким угодно способом общаться с системой, главное, чтобы он делал это через консоль.
Установка и управление Windows Server 2019 Core
Ранее мы упоминали, что Windows Core — это фактически Windows Server без обертки GUI. То есть вы можете воспользоваться почти любой версией Windows Server в качестве core-версии, то есть отказаться от GUI. Для продуктов семейства Windows Server 2019 это 3 из 4 серверных билда: core-режим доступен для Windows Server 2019 Standard Edition, Windows Server 2019 Datacenter и Hyper-V Server 2019, то есть из этого списка выпадает только Windows Server 2019 Essentials.
При этом установочный пакет Windows Server Core особо не нужно искать. В стандартном инсталляторе от Microsoft core-версия предлагается буквально по умолчанию, когда как версию с GUI надо выбирать вручную:
Вариантов управления системой, на самом деле, больше, чем один упомянутый PowerShell, который и предлагается производителем по умолчанию. Управлять виртуальной машиной на Windows Server Core можно минимум пятью разными способами:
- Remote PowerShell;
- Remote Server Administration Tools (RSAT);
- Windows Admin Center;
- Sconfig;
- Server Manager.
Наибольший интерес представляют первые три позиции: стандартный PowerShell, RSAT и Windows Admin Center. Однако важно понимать, что получая преимущества одного из инструментов, мы получаем и накладываемые им ограничения.
Расписывать возможности консоли мы не будем, PowerShell — это PowerShell, со своими очевидными плюсами и минусами. Вот с RSAT и WAC все немного сложнее.
WAC дает доступ к таким важным элементам управления системой, как редактирование реестра и управление дисками и устройствами. RSAT в первом случае работает только в режиме просмотра и не позволит внести какие-либо изменения, а для управления дисками и физическими устройствами Remote Server Administration Tools нужен GUI, что не про наш случай. Вообще, RSAT не может в работу с файлами и, соответственно, обновлениями, установкой/удалением программ в редактирование реестра.
▍Управление системой
С другой стороны, RSAT дает нам полный контроль за ролями на машине, когда как Windows Admin Center не может в этом плане буквально ничего. Вот сравнение возможностей RSAT и WAC в этом аспекте, для наглядности:
▍Управление ролями
То есть уже видно, что при отказе от GUI и PowerShell в пользу других элементов управления, отделаться использованием какого-то моноинструмента не выйдет: для полноценного администрирования по всем фронтам нам понадобится как минимум связка из RSAT и WAC.
При этом нужно помнить, что за использование WAC придется заплатить 150-180 мегабайтами оперативной памяти. Windows Admin Center при подключении создает 3-4 сессии на стороне сервера, которые не убиваются даже при отключении инструмента от виртуальной машины. Еще WAC не работает со старыми версиями PowerShell, так что вам понадобится минимум PowerShell 5.0. Все это идет вразрез с нашей парадигмой жесткой экономии ресурсов, но за комфорт нужно платить. В нашем случае — оперативной памятью.
Еще один вариант управления Server Core — установка GUI сторонними средствами, чтобы не тащить те тонны мусора, которые идут в полноценной сборке вместе с интерфейсом.
В этом случае у нас есть два варианта: раскатать на систему оригинальный Explorer или воспользоваться Explorer++. Как альтернатива последнему подойдет любой файловый менеджер: Total Commander, FAR Manager, Double Commander и так далее. Последнее предпочтительнее, если для вас критична экономия оперативной памяти. Добавить Explorer++ или любой другой файловый менеджер можно через создание сетевой папки и запуск через консоль или планировщик.
Установка полноценного Explorer даст нам больше возможностей, в плане работы с программным обеспечением, оснащенным UI. Для этого нам придется обратиться к Server Core App Compatibility Feature on Demand (FOD) который вернет в систему MMC, Eventvwr, PerfMon, Resmon, Explorer.exe и даже Powershell ISE. Однако за это придется заплатить, как в случае и с WAC: мы безвозвратно потеряем около 150-200 мегабайт оперативной памяти, которые безжалостно сожрет explorer.exe и прочие службы. Даже если на машине нет активного пользователя.
Вот так выглядит потребление памяти системой на машинах с родным пакетом Explorer и без оного.
Тут возникает закономерный вопрос: а зачем все эти пляски с PowerShell, FOD, файловыми менеджерами, если любой шаг влево-вправо приводит к увеличению потребления оперативной памяти? Зачем обмазываться кучей инструментов и шарахаться из стороны в сторону, чтобы обеспечить себе комфортную работу на Windows Server Core, когда можно просто накатить Windows Server 2016/2019 и жить, как белый человек?
Причин для использования Server Core несколько. Первая: в токе почти вдвое меньшее потребление памяти. Если вы помните, это условие лежало в основе нашей статьи еще в самом ее начале. Вот для сравнения, потребление памяти Windows Server 2019, сравните со скриншотами чуть выше:
И вот, 1146 MB потребляемой памяти вместо 655 MB на Core.
Если предположить, что WAC вам не потребуется и вы будете использовать Explorer++ вместо оригинального Explorer, то вы все еще будете выигрывать почти полгектара на каждой виртуальной машине под управлением Windows Server. Если виртуалка одна, то прирост незначительный, но если их пять? Вот тут уже наличие GUI имеет значение, особенно если он вам не нужен.
Второе — любые пляски вокруг Windows Server Core не приведут вас к борьбе с главной проблемой эксплуатации Windows Server — RDP и его безопасность (точнее, полное ее отсутствие). Windows Core даже в обмазке в виде FOD, RSAT и WAC все еще сервер без RDP, то есть не подвержен 95% существующих атак.
В остатке
В целом Windows Core лишь слегка «жирнее», нежели чем любой стоковый Linux-дистрибутив, но зато куда функциональнее. Если вам нужно высвобождение ресурсов и вы готовы работать с консолью, WAC и RSAT, использовать файловые менеджеры вместо полноценного GUI — то на Core стоит обратить внимание. Тем более что с ней получится не доплачивать за полноценную Windows, а сэкономленные деньги потратить на апсет своего VPS, добавив туда, например, ОЗУ. Для удобства, мы добавили Windows Server Core в свой маркетплейс.
Кроме того, поскольку для него не требуются все компоненты версии, включающей графический интерфейс, он требует меньше ресурсов. Server Core можно установить с установочного носителя Windows Server 2019 или развернуть различными способами из файла install.wim, расположенного на установочном носителе.
Server Core interface
Весь интерфейс Server Core представляет собой командную строку. Как показано на рисунке, для взаимодействия с командной строкой необходимо нажать Ctrl + Alt + Del, чтобы разблокировать ее. Затем вы можете войти в систему с учетной записью администратора домена или локального администратора (предварительно создав для него пароль).
Переименовать сервер, ввести в домен, настроить Windows Update, сконфигурировать подключение через RDP и выполнить другие настройки можно используя программу sconfig.exe.
После выполненных настроек можно запустить сеанс PowerShell, набрав PowerShell.exe. Хотя Server Core — это в первую очередь среда командной строки, но есть некоторые графические инструменты, которые можно запустить из командной строки или диспетчера задач. Они включают:
Диспетчер задач. Он работает так же, как и на сервере с возможностями рабочего стола или Windows 10, и его можно использовать для запуска задач, выбрав пункт «Выполнить новую задачу» в меню «Файл».
Notepad.exe. Можете запустить Блокнот для редактирования и просмотра содержимого текстовых файлов.
- MSInfo32.exe — просмотр сведений о системе, программных и аппаратных ресурсах.
- Regedit.exe and Regedt32.exe — редактирование реестра на Server Core.
- TimeDate.cpl — панель управления временем и датой.
- Intl.cpl — панель управления региональными настройками.
- Iscsicpl.exe — панель управления «Свойства: инициатор iSCSI«, для возможности подключаться к общему хранилищу через iSCSI.
Установка компонентов совместимости приложений позволяет получить доступ к еще большему количеству инструментов графического интерфейса при входе непосредственно на «рабочий стол» Server Core.
Подсказка.
Если вы введете Exit в командной строке Server Core, командная строка закроется. Чтобы вернуть командную строку назад, не обязательно перезагружать сервер, есть более простой способ. Нажмите Ctrl-Alt-Del, выберите «Диспетчер задач», нажмите «Файл» — «Выполнить новую задачу» и введите cmd.exe. Это откроет командную строку без необходимости выхода из системы или перезагрузки компьютера.
Роли Server Core
Server Core поддерживает следующие роли, которые можно установить с помощью командлета PowerShell Add-WindowsFeature
, или мастера добавления ролей и компонентов, доступного в консоли Server Manager, или с помощью Windows Admin Center с удаленного компьютера, как показано на рисунке ниже.
Microsoft рекомендует управлять всеми серверами удаленно. На самом деле не имеет значения, что Server Core не имеет графического интерфейса, потому что в этом случае не нужно входить в систему локально. Вместо этого происходит подключение с помощью инструментов удаленного администрирования.
Windows Server 2012 и Windows Server 2012 R2 позволяют переключаться между вариантами Server Core и Server with Desktop Experience (Рабочим столом). Это дает возможность развернуть Server with Desktop Experience, а затем сократить его до Server Core, если обнаружится, что компоненты рабочего стола будут больше не нужны. Если не удается запустить определенное приложение на Server Core, всегда можно установить Desktop Experience. Windows Server 2019 не предоставляет такой возможности, поэтому выбирать версию нужно еще на этапе планирования, в противном случае придется выполнять повторную установку OS.
Совместимость приложений с Server Core
Одна из проблем использования приложений в Windows Server Core в том, что многие приложения так или иначе зависят от графического интерфейса. И развернув редакцию Core можно получить неработоспособное приложение.
Функции совместимости приложений по требованию (App Compatibility Features on Demand, FOD) повышают совместимость Server Core для большого количества приложений. Также устанавливаются дополнительные диагностические инструменты для устранения неполадок и отладки операций, включая:
Консоль управления (mmc.exe), просмотр событий (Eventvwr.msc), монитор производительности (PerfMon.exe) и ресурсов (Resmon.exe), диспетчер устройств (Devmgmt.msc), управление дисками (diskmgmt.msc), управление кластером (CluAdmin.msc).
Если сервер имеет доступ к Windows Update, можно выполнить онлайн-установку FOD, выполнив следующую команду из сеанса PowerShell и перезагрузить сервер:
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0
Если доступа к интернету нет, то вначале нужно заранее загрузить iso образ «Features on Demand» с веб-сайта Microsoft и установить, выполнив две команды. Первая монтирует iso образ, а вторая устанавливает компоненты.
Mount-DiskImage -ImagePath X:ISO_FolderISO_filename.iso Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0 -Source Mounted_Server_FOD_Drive -LimitAccess
В каких случаях устанавливать Server Core
Нужно заранее определить, подойдет ли Server Core для конкретной рабочей ситуации. Он идеально подходит для ролей инфраструктурного типа, таких как контроллер домена, DNS-сервер, DHCP-сервер и файловый сервер. Server Core является менее подходящим, в приложениях, имеющих сложные зависимости. При установке такой программы нужно заранее убедиться в ее работоспособности в режиме Windows Core.
Server Core можно рассматривать как ответ на современную ситуацию, когда администратор управляет большим количеством серверов (с внедрением виртуализации количество ОС значительно увеличилось), а сервера эти могут находится как в частном, так и в публичном облаке, и, как следствие, должны быть как можно меньше.
Режим Server Core стал доступен начиная с Windows Server 2008 стал доступен режим Server Core, преимуществами которого являются снижение времени простоя сервиса (например, по причине установки Windows Updates и последующей перезагрузки) а также снижение площади потенциальных атак (львиная доля которых приходится на Explorer и т.п).
Идея здравая – зачем на сервере Internet Explorer, Windows Media Player и т.п. понять было сложно.
Кроме того, все это счастье потребляет дисковое пространство – размер ОС, обслуживающей сервис мог на порядок превосходить размер сервиса (например AD DS, AD CS, RRAS, etc). Это приводило не только к перерасходам на закупке накопителей, но и увеличивало время простоя при миграциях виртуальных машин, восстановлении из резервных копий и т.п.
С растущей популярностью IaaS провайдеров которые взывают плату в зависимости от количества потребленных ресурсов, актуальность Core тоже возрастает.
В Windows Server 2008 в режиме Server Core было доступно совсем немного ролей: AD DS, AD LDS, DNS, DHCP, File Server, Print Server, IIS, Hyper-V.
Основной проблемой являлось отсутствие .NET, а значит установка Exchange, SharePoint, Dynamics и пр. на Core-сервера была невозможной.
И вот, в Windows Server 2012 Core mode был значительно улучшен и теперь является рекомендованным режимом эксплуатации. Тем не менее, еще остались еще роли, управлять которыми через GUI невозможно через RSAT – например, AD FS.
В этой статье я расскажу о Server Core на примере Windows Server 10, но материал применим и к предыдущим версиям.
При новой установке Server Core Installation будет вариантом по-умолчанию:
После установки, запустим sconfig и зададим базовые настройки:
После этого, посмотрим какие роли и фичи установлены по-умолчанию:
Get-WindowsFeature | Where-Object {$_.Installed -eq $True}
Если на сервере не планируется установка 32-х битного ПО, разумно удалить фичу WoW64 Support:
Uninstall-WindowsFeature WoW64-Support
Удаление этой фичи положительно сказывается на безопасности (зловредное ПО как правило 32х битное) и производительности сервера.
Но если на сервере будет установлен GUI (даже минимальный, который Graphical Management Tools and Infrastructure), WoW64-Support будет нужна.
Теперь, давайте убедимся что сервер занимает около 7Гб дискового пространства:
Get-WmiObject Win32_logicaldisk | ft DeviceId, Size, FreeSpace
.. а объем потребляемой оперативной памяти около 0.5Гб:
Get-Counter 'MemoryCommitted Bytes'
Установка современного сервера подразумевает удаленное администрирование и отсутствие физического доступа (или необходимости такого доступа) с дисплеем, клавиатурой и мышкой.
Администрирование может выполняться как со специального сервера на котором включены необходимые компоненты RSAT, так и с ПК под управлением Windows, на которую RSAT установлены (об этом ниже).
Но в ряде случаев необходимо обеспечить возможность непосредственного администрирования не только с помощью PowerShell, но и с помощью Server Manager (Graphical Management Tools and Infrastructure) или даже “полновесного” GUI (Graphical Management Tools and Infrastructure + Server Graphical Shell).
Пример зачем может быть нужен GUI – на bare-metal сервере Device Manager может быть использован для специфичных настроек оборудования, а доступен он только после установки Graphical Management Tools and Infrastructure.
Чтобы включить GUI нужны будут исходники, которые находятся на установочном дистрибутиве, для этого придется подмонтировать дистрибутив к серверу. В большинстве случаев гораздо удобнее создать общую папку с исходниками, чем монтировать .iso к каждому серверу.
Установим “минималистичный” GUI:
Install-WindowsFeature Server-Gui-Mgmt-Infra -Source wim:%path%install.wim:4
.. или “полновесный” GUI с Internet Explorer и прочим:
Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell -Source wim:%path%install.wim:4
Обратите внимание, суффикс :4 обозначает что в исходниках находятся файлы для всех 4х редакций:
- :1 – Standard Edition Server Core
- :2 – Standard Edition
- :3 – Datacenter Edition Server Core
- :4 – Datacenter Edition
“Минималистичный” GUI выглядит следующим образом:
После установки “минималистичного” GUI размер диска вырастет на ~3Гб, а портребление оперативной памяти практически не изменится:
В случае установки “полновесного” GUI размер диска вырастет на те же ~3Гб, а портребление оперативной памяти также практически не изменится.
Обратите внимание, после удаления GUI:
Remove-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell
.. размер диска не уменьшится:
Зато теперь можно устанавливать и удалять GUI без указания исходников:
Разумеется, исходники для GUI можно удалить:
Uninstall-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell -Remove
.. это уменьшит размер диска:
Если есть желание еще больше уменьшить дисковое пространство, можно удалить исходники для всех ролей и фич которые не установлены:
Get-WindowsFeature | Where-Object installstate -eq "available" | Uninstall-WindowsFeature -Remove
Это освободит еще немного дискового пространства:
Разумеется, делать это нужно после установки ролей и фич под которые сервер вводится в эксплуатацию.
Если вы обращали внимание, папка WinSxS занимает не просто много места, но еще и некорректно показывает реально занятое место (за счет хардлинков).
Посмотрим, что покажет анализ содержимого этот папки:
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
Попробуем запустить очистку (она занимает определенное время):
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
.. и проверим результат:
Задача очистки по-умолчанию уже присутствует в Task Scheduller, все что нужно это настроить адекватный график запуска для нее:
Если Вы используете виртуальные машины, не забудьте выполнить Compact .vhdx-файла.
В итоге, Windows Server 10 в Server Core занимает в два раза меньше места чем полная установка популярного Windows Server 2008R2 (напомню, 2008R2 в Core возможен, но очень ограничен).
Что касается количества обновлений, для Core-варианта их нужно предсказуемо меньше:
В случае когда после удаления исходников все-таки потребуется установить роль или фичу, нужно будет указывать путь к шаре с исходниками или монтировать диск с дистрибутивом:
Для упрощения, можно использовать групповую политику:
Для того, чтобы при применении таких политик не пришлось перестраивать структуру OU в соответствии с версиями ОС, можно применить WMI-фильтр:
Подведем итоги:
Очевидно, что “полновесный” GUI ухудшает метрики SLA сервисов которые развернуты на этом сервере, хоть и частично упрощает управление.
Кроме того, уменьшение утилизируемого дискового пространства важно при размещении серверов в публичных облаках, например Microsoft Azure или Amazon.
“Минималистичный” GUI является хорошим вариантом для bare-metal хостов, а “Core” является рекомендованным вариантом для большинства установок.
Сценарий: “Установить сервер с GUI – Развернуть на сервере сервис – Выключить GUI” является распространенным, но я рекомендую изначально планировать установку так, чтобы в ее процессе не приходилось ничего включать-выключать (например, с использованием App Controller).
Что касается управления парком серверов, разумно установить RSAT на ПК администраторов для выполнения ежедневных задач, для редких и ответственных задач, а также на случай аварии использовать высокодоступную виртуальную машину в Azure, и кроме того иметь запасной вариант в виде Power Shell Web Access.
Надеюсь озвученная информация будет полезной, а если нужна будет помощь — используйте форму на главной странице моего сайта.
В этой статье я постарался собрать в одном месте основные команды cmd и PowerShell, которые полезны при настройке и управлении Windows Server Core. Думаю, этот гайд будет полезен как новичкам, так и опытным системным администраторам, как справочник по базовым командам Server Core.
Содержание:
- Настройка Windows Server Core с помощью SCONFIG
- Основные команды PowerShell для настройки Server Core
- Установка обновлений в Server Core
- Часто используемые команды в Server Core
Напомним, что Server Core это особый режим установки Windows Server без большинства графических инструментов и оболочек. Управление таким сервером выполняется из командной строки или удаленно.
Преимущества Windows Serve Core:
- Меньшие требования к ресурсам;
- Повышенная стабильность, безопасность, требует установки меньшего количества обновлений (за счет меньшего количества кода и используемых компонентов);
- Идеально подходит для использования в качестве сервера для инфраструктурных ролей (контроллер домена Active Directory, DHCP сервер, Hyper-V сервер, файловый сервер и т.д.).
Server Core лицензируется как обычный физический или виртуальный экземпляр Windows Server (в отличии от Hyper-V Server, который полностью бесплатен).
Для установки Windows Server 2016/2019 в режиме Core нужно выбрать обычную установку. Если вы выберите Windows Server (Desktop Experience), будет установлен GUI версия операционной системы (в предыдущих версиях Windows Server она называлась Server with a GUI).
После установки Windows Server Core перед вами появляется командная строка, где нужно задать пароль локального администратора.
При входе на Server Core открывается командная строка (cmd.exe). Чтобы вместо командной строки у вас всегда открывалась консоль PowerShell.exe, нужно внести изменения в реестр. Выполните команды:
Powershell.exe
Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\WinLogon' -Name Shell -Value 'PowerShell.exe'
И перезагрузите сервер:
Restart-Computer -Force
Если вы случайно закрыли окно командной строки, нажмите сочетание клавиш Ctrl+Alt+Delete, запустите Task Manager -> File -> Run -> выполните
cmd.exe
(или
PowerShell.exe
).
Настройка Windows Server Core с помощью SCONFIG
Для базовой настройки Server Core можно использовать встроенный скрипт sconfig. Просто выполните команду sconfig в консоли. Перед вами появиться меню с несколькими пунктами:
С помощью меню Server Configuration можно настроить:
- Добавить компьютер в домен или рабочую группу;
- Изменить имя компьютера (hostname);
- Добавить локального администратора;
- Разрешить/запретить удаленное управления и ответы на icmp;
- Настроить параметры обновления через Windows Update;
- Установить обновления Windows;
- Включить/отключить RDP;
- Настроить параметры сетевых адаптеров (IP адрес, шлюз, DNS сервера);
- Настроить дату и время;
- Изменить параметры телеметрии;
- Выполнить logoff, перезагрузить или выключить сервер.
Все пункт в меню
sconfig
пронумерованы. Чтобы перейти в определенное меню наберите его номер и Enter.
В некоторых пунктах меню настройки sconfig есть вложенные пункты. Там также, чтобы перейти к определенной настройке, нужно сделать выбор цифры пункта меню.
Не будем подробно рассматривать все пункты настройки sconfig, т.к. там все достаточно просто и очевидно. Однако в большинстве случаев администраторы предпочитают использовать для настройки новых хостов с Server Core различные PowerShell скрипты. Это намного проще и быстрее, особенно при массовых развёртываниях.
Основные команды PowerShell для настройки Server Core
Рассмотрим основные команды PowerShell, которые можно использовать для настройки Server Core.
Узнать информацию о версии Windows Server и версии PowerShell:
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$PSVersionTable
Для перезагрузки Server Core нужно выполнить команду PowerShell :
Restart-Computer
Чтобы выполнить выход из консоли Server Core, наберите:
logoff
Настройка параметров сети
Теперь нужно из PowerShell нужно настроить параметры сети (по умолчанию Windows настроена на получение адреса от DHCP). Выведите список сетевых подключений:
Get-NetIPConfiguration
Теперь укажите индекс интерфейса сетевого адаптера (InterfaceIndex), который нужно изменить и задайте новый IP адрес:
New-NetIPaddress -InterfaceIndex 4 -IPAddress 192.168.13.100 -PrefixLength 24 -DefaultGateway 192.168.13.1
Set-DNSClientServerAddress –InterfaceIndex 4 -ServerAddresses 192.168.13.11,192.168.13.
111
Проверьте текущие настройки:
Get-NetIPConfiguration
Если нужно сбросить IP адрес и вернуться к получению адреса от DHCP, выполните:
Set-DnsClientServerAddress –InterfaceIndex 4 –ResetServerAddresses
Set-NetIPInterface –InterfaceIndex 4 -Dhcp Enabled
Включить/отключить сетевой адаптер:
Disable-NetAdapter -Name “Ethernet0”
Enable-NetAdapter -Name “Ethernet 0”
Включить, отключить, проверить статус поддержки IPv6 для сетевого адаптера:
Disable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Enable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Get-NetAdapterBinding -ComponentID ms_tcpip6
Настроить winhttp прокси сервер для PowerShell и системных подключений:
netsh Winhttp set proxy <servername>:<port number>
Настройка времени/даты
Вы можете настроить дату, время, часовой пояс с помощью графической утилиты
intl.cpl
или с помощью PowerShell:
Set-Date -Date "09/03/2022 09:00"
Set-TimeZone "Russia Time Zone 3
Задать имя компьютера, добавить в домен, активация
Чтобы изменить имя компьютера:
Rename-Computer -NewName win-srv01 -PassThru
Добавить сервер в домен Active Directory:
Add-Computer -DomainName "corp.winitpro.ru " -Restart
Если нужно добавить дополнительных пользователей в администраторы, можно настроить групповую политику или добавить вручную:
Add-LocalGroupMember -Group "Administrators" -Member "corp\anovikov"
Для активации Windows Server нужно указать ваш ключ:
slmgr.vbs –ipk <productkey>
slmgr.vbs –ato
Или можно активировать хост на KMS сервере (например, для Windows Server 2019):
slmgr /ipk N69G4-B89J2-4G8F4-WWYCC-J464C
slmgr /skms kms-server.winitpro.ru:1688
slmgr /ato
Разрешить удаленный доступ
Разрешить удаленный доступ к Server Core через RDP:
cscript C:\Windows\System32\Scregedit.wsf /ar 0
Разрешить удаленное управление:
Configure-SMRemoting.exe –Enable
Enable-NetFirewallRule -DisplayGroup “Windows Remote Management”
Текущие настройки:
Configure-SMRemoting.exe -Get
Разрешить Win-Rm PowerShell Remoting:
Enable-PSRemoting –force
Сервером с Windows Server можно управлять удаленно c другого сервера (с помощью ServerManager.exe), через браузер с помощью Windows Admin Center (WAC), с любой рабочей станции с помощью инструментов администрирования RSAT, подключаться к нему по RDP, PowerShell Remoting или SSH (в современных версиях Windows есть встроенный SSH сервер).
Настройка Windows Firewall
Информация о настройке Windows Firewall есть в статье по ссылке. Здесь оставлю несколько базовых команд.
Включить Windows Defender Firewall для всех профилей:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Изменить тип сети с Public на Private:
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
Полностью отключить Windows Firewall (не рекомендуется):
Get-NetFirewallProfile | Set-NetFirewallProfile -enabled false
Разрешить подключение через инструменты удаленного управления:
Enable-NetFireWallRule -DisplayName “Windows Management Instrumentation (DCOM-In)”
Enable-NetFireWallRule -DisplayGroup “Remote Event Log Management”
Enable-NetFireWallRule -DisplayGroup “Remote Service Management”
Enable-NetFireWallRule -DisplayGroup “Remote Volume Management”
Enable-NetFireWallRule -DisplayGroup “Remote Scheduled Tasks Management”
Enable-NetFireWallRule -DisplayGroup “Windows Firewall Remote Management”
Enable-NetFirewallRule -DisplayGroup "Remote Administration"
Установка обновлений в Server Core
Для управления параметрами обновлений предпочтительно использовать групповые политики Windows Update, но можно задать параметры и вручную.
Отключить автоматическое обновление:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 1
Автоматически скачивать доступные обновления:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 3
Получить список установленных обновлений:
Get-Hotfix
Или
wmic qfe list
Для ручной установки обновлений Windows можно использовать утилиту wusa:
Wusa update_name.msu /quiet
Также для установки и управления обновлениями из командной строки удобно использовать PowerShell модуль PSWindowsUpdate.
Управление ролями, службами и процессами Windows
Для получения списка всех доступных ролей в Windows Server Core выполните команду PowerShell:
Get-WindowsFeature
Получить список всех установленных ролей и компонентов в Windows Server(можно быстро понять, для чего используется сервер):
Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate
Например, для установки службы DNS воспользуйтесь такой командой:
Install-WindowsFeature DNS -IncludeManagementTools
Список всех служб в Windows:
Get-Service
Список остановленных служб:
Get-Service | Where-Object {$_.status -eq “stopped”}
Перезапустить службу:
Restart-Service -Name spooler
Для управление процессами можно использовать стандартный диспетчер задач (taskmgr.exe) или PowerShell модуль Processes:
Get-Process cmd, proc1* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft
Часто используемые команды в Server Core
Ну и наконец, приведу список различных полезных мне команд, которые я периодически использую в Server Core.
Информация о статусе и здоровье физических дисков (используется стандартный модуль управления дисками Storage):
Get-PhysicalDisk | Sort Size | FT FriendlyName, Size, MediaType, SpindleSpeed, HealthStatus, OperationalStatus -AutoSize
Информация о свободном месте на диске:
Get-WmiObject -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft
Информация о времени последних 10 перезагрузок сервера:
Get-EventLog system | where-object {$_.eventid -eq 6006} | select -last 10
Список установленных программ:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
Скачать и распаковать zip файл с внешнего сайта:
Invoke-WebRequest https://contoso/test.zip -outfile test.zip
Expand-Archive -path '.\test.zip' -DestinationPath C:\Users\Administrator\Documents\
Чтобы скопировать все файлы из каталога на удаленный компьютер по сети можно использовать Copy-Item:
$session = New-PSSession -ComputerName remotsnode1
Copy-Item -Path "C:\Logs\*" -ToSession $session -Destination "C:\Logs\" -Recurse -Force
Для установки драйвера можно использовать стандартную утилиту:
Pnputil –i –a c:\distr\hpdp.inf
Также Microsoft предлагает специальный пакет Server Core App Compatibility Feature on Demand (FOD), который позволяет установить в Windows Server 2019 некоторые графические инструменты и консоли (MMC, Eventvwr, Hyper-V Manager, PerfMon, Resmon, Explorer.exe, Device Manager, Powershell ISE). Этот FOD доступен для загрузки в виде ISO при наличии активной подписки. Установка выполняется командой:
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0
Установка Server Core App Compatibility Feature on Demand будет использовать дополнительно около 200 Мб оперативной памяти в Server Core.
В этой статье я постарался собрать самые нужные команды, которые нужно постоянно держать под рукой при работе с Windows Server Core. Время от времени я буду обновлять статью и добавлять новые команды, которые покажутся мне нужными для повседневной работы.