Поради ненаситността на Windows системи в средата на VPS, доминират по-леките Linux дистрибуции: Mint, Colibri OS, Debian или Ubuntu, лишени от ненужната за нашите цели тежка работна среда. Както се казва, само конзолата, само хардкор! И наистина, това не е никакво преувеличение: същият Debian стартира на 256 MB памет и едно ядро с такт 1 GHz, тоест почти на който и да е 'пън'. За комфортна работа са необходими минимум 512 MB и немного по-бързо CPU. Но какво ако ви кажем, че подобно нещо може да се направи и на VPS под Windows? Не е нужно да инсталирате тежкия Windows Server, който изисква от три до четири гигабайта оперативна памет и минимум две ядра с такт 1,4 GHz? Просто използвайте Windows Server Core — избавете се от GUI и част от услугите. За това как да го направите, ще говорим в статията.
Кой е този ваш Windows Server Core?
Ясна информация за това какво е Windows (server) Core няма дори на официалния сайт на Microsoft, по-скоро там всичко е толкова объркано, че не е веднага ясно, но първите споменавания датират още от епохата на 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:
application
server core
server withдесктопно преживяване
Команден интерпретатор
на разположение
на разположение
Windows PowerShell/ Microsoft .NET
на разположение
на разположение
Perfmon.exe
не е на разположение
на разположение
Windbg (GUI)
поддържан
на разположение
Resmon.exe
не е на разположение
на разположение
Regedit
на разположение
на разположение
Fsutil.exe
на разположение
на разположение
Disksnapshot.exe
не е на разположение
на разположение
Diskpart.exe
на разположение
на разположение
Diskmgmt.msc
не е на разположение
на разположение
Devmgmt.msc
не е на разположение
на разположение
Server Manager
не е на разположение
на разположение
Mmc.exe
не е на разположение
на разположение
Eventvwr
не е на разположение
на разположение
Wevtutil (Запитвания на събития)
на разположение
на разположение
Services.msc
не е на разположение
на разположение
Контролен панел
не е на разположение
на разположение
Windows Update (GUI)
не е на разположение
на разположение
Windows Explorer
не е на разположение
на разположение
Задачи
не е на разположение
на разположение
Уведомления за задачи
не е на разположение
на разположение
Taskmgr
на разположение
на разположение
Internet Explorer или Edge
не е на разположение
на разположение
Вградена помощна система
не е на разположение
на разположение
Windows 10 Shell
не е на разположение
на разположение
Windows Media Player
не е на разположение
на разположение
PowerShell
на разположение
на разположение
PowerShell ISE
не е на разположение
на разположение
PowerShell IME
на разположение
на разположение
Mstsc.exe
не е на разположение
на разположение
Remote Desktop Services
на разположение
на разположение
Hyper-V Manager
не е на разположение
на разположение
Както виждате, от Windows Core е изрязано много. Под ножа отидоха услуги и процеси, свързани с графичния интерфейс на системата, както и всичко ненужно, което със сигурност няма да е необходимо на нашия конзолен виртуален машина, например, Windows Media Player.
Почти като Linux, но не е той
Windows Server Core много иска да се сравнява с Linux дистрибуции, но всъщност това не е съвсем коректно. Да, системите са сходни по отношение на понижено потребление на ресурси благодарение на отказа от GUI и много странични услуги, но по отношение на експлоатацията и някои подходи към компилацията, все още е Windows, а не unix система.
Най-простият пример — с помощта на ръчна компилация на ядрото на Linux и последваща инсталация на пакети и услуги, дори най-леката Linux дистрибуция може да се превърне в нещо обемисто и подобно на швейцарски нож (тук много искаме баянисто да шегуваме за Python и да вмъкнем изображение от серията «Ако програмиращите езици бяха оръжия», но няма да го направим). В 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 прави неща, които не бива. Това е подобно на историята с Хенри Форд и отношението му към цвета на автомобила: «Всеки клиент може да има кола, боядисана в цвят, който желае, стига да е черен». Така е и със системата: потребителят може да взаимодейства със системата по всякакъв начин, важно е само да го прави през конзолата.
Инсталиране и управление на 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 не може да работи с файлове и съответно с актуализации, инсталиране/деинсталиране на програми в редактирането на регистъра.
▍Системно управление
WAC
RSAT
Управление на компонентите
Да
Да
Редактор на регистъра
Да
Не
Управление на мрежата
Да
Да
Преглед на събития
Да
Да
Общи папки
Да
Да
Управление на дискове
Да
Само за сървъри с GUI
Планировчик на задачи
Да
Да
Управление на устройства
Да
Само за сървъри с GUI
Управление файловете
Да
Не
Управление на потребители
Да
Да
Управление на групи
Да
Да
Управление на сертификати
Да
Да
Актуализации
Да
Не
Деинсталиране на програми
Да
Не
Системен монитор
Да
Да
От друга страна, RSAT ни дава пълен контрол над ролите на машината, докато Windows Admin Center не може да направи нищо съществено в това отношение. Ето сравнение на възможностите на RSAT и WAC в този аспект, за яснота:
▍Управление на роли
WAC
RSAT
Advanced Thread Protection
ПРЕВЮ
Не
Windows Defender
ПРЕВЮ
Да
Контейнери
ПРЕВЮ
Да
AD Administrative Center
ПРЕВЮ
Да
AD Domain and Trusts
Не
Да
AD sites and services
Не
Да
DHCP
ПРЕВЮ
Да
DNS
ПРЕВЮ
Да
DFS Manager
Не
Да
GPO Manager
Не
Да
IIS Manager
Не
Да
Тоест вече е ясно, че при отказ от 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 и спестените пари да вложите в увеличаване на ресурси, , добавяйки например RAM. За удобство, добавихме Windows Server Core в нашия .
Източник: habr.com
