Z powodu zasobożerności systemów Windows w środowisku VPS dominują lekkie dystrybucje Linuxa: Mint, Colibri OS, Debian czy Ubuntu, pozbawione zbędnego, w ramach naszych zadań, ciężkiego środowiska graficznego. Jak to się mówi, tylko konsola, tylko hardcore! I to wcale nie jest przesada: ten sam Debian uruchamia się na 256 MB pamięci i jednym rdzeniu o taktowaniu 1 GHz, więc niemal na każdym 'kłodzie'. Do wygodnej pracy potrzebne są minimum 512 MB i nieco szybszy procesor. Ale co jeśli powiemy ci, że podobnie można to zrealizować na VPS z Windows? Że nie trzeba instalować ciężkiego Windows Server, który wymaga od trzech do czterech giga pamięci RAM i minimum dwóch rdzeni o taktowaniu 1,4 GHz? Po prostu skorzystaj z Windows Server Core — pozbądź się GUI i części usług. O tym, jak to zrobić, porozmawiamy w artykule.
Kim jest ten wasz Windows Server Core?
Jasnych informacji, czym jest Windows (server) Core, nie ma nawet na oficjalnej stronie Microsoftu, wręcz przeciwnie, wszystko jest tam tak zagmatwane, że nie łatwo to zrozumieć, ale pierwsze wzmianki sięgają jeszcze epoki Windows Server 2008. W zasadzie, Windows Core to działające jądro Windows Server (niespodzianka!), 'odchudzone' o wielkość własnego GUI i mniej więcej połowę pobocznych usług.
Główną zaletą Windows Core jest niskie zapotrzebowanie na sprzęt oraz całkowite zarządzanie przez konsolę za pomocą PowerShell.
Jeśli odwiedzisz witrynę Microsoft i sprawdzisz wymagania techniczne, do uruchomienia Windows Server 2016/2019 będziesz potrzebować minimum 2 GB pamięci RAM i przynajmniej jednego rdzenia o taktowaniu 1,4 GHz. Wszystkie rozumiemy, że na takiej konfiguracji możemy oczekiwać tylko uruchomienia systemu, ale z pewnością nie komfortowej pracy naszego OS. Z tego powodu do pracy Windows Server zwykle przydziela się więcej pamięci oraz minimum 2 rdzenie/4 wątki od procesora, jeśli nie przydziela się drogiej fizycznej maszyny na jakimś Xeonie, zamiast taniej wirtualki.
Sam rdzeń systemu serwerowego wymaga zaledwie 512 MB pamięci, a zasoby procesora, które były zajmowane przez GUI tylko po to, aby wyświetlać się na ekranie i utrzymywać w działaniu liczne usługi, można przeznaczyć na coś bardziej użytecznego.
Oto porównanie obsługiwanych z pudełka usług Windows Core i pełnoprawnego Windows Server z oficjalnej strony Microsoftu:
application
server core
server withdesktop experience
Command prompt
dostępny
dostępny
Windows PowerShell/Microsoft .NET
dostępny
dostępny
Perfmon.exe
niedostępny
dostępny
Windbg (GUI)
wspierane
dostępny
Resmon.exe
niedostępny
dostępny
Regedit
dostępny
dostępny
Fsutil.exe
dostępny
dostępny
Disksnapshot.exe
niedostępny
dostępny
Diskpart.exe
dostępny
dostępny
Diskmgmt.msc
niedostępny
dostępny
Devmgmt.msc
niedostępny
dostępny
Menedżer serwera
niedostępny
dostępny
Mmc.exe
niedostępny
dostępny
Eventvwr
niedostępny
dostępny
Wevtutil (zapytania o zdarzenia)
dostępny
dostępny
Services.msc
niedostępny
dostępny
Panel sterowania
niedostępny
dostępny
Aktualizacja systemu Windows (GUI)
niedostępny
dostępny
Eksplorator Windows
niedostępny
dostępny
Taskbar
niedostępny
dostępny
Powiadomienia na pasku zadań
niedostępny
dostępny
Taskmgr
dostępny
dostępny
Internet Explorer lub Edge
niedostępny
dostępny
Wbudowany system pomocy
niedostępny
dostępny
Powłoka systemu Windows 10
niedostępny
dostępny
Windows Media Player
niedostępny
dostępny
PowerShell
dostępny
dostępny
PowerShell ISE
niedostępny
dostępny
PowerShell IME
dostępny
dostępny
Mstsc.exe
niedostępny
dostępny
Usługi pulpitu zdalnego
dostępny
dostępny
Menedżer Hyper-V
niedostępny
dostępny
Jak widać, w Windows Core wycięto bardzo wiele. Zdecydowanie usunięto usługi i procesy związane z GUI systemu oraz różnego rodzaju 'śmieci', które nie będą potrzebne w naszej konsolowej maszynie wirtualnej, na przykład Windows Media Player.
Prawie jak Linux, ale to nie to
Windows Server Core bardzo chciałoby być porównywane z dystrybucjami Linuxa, ale w rzeczywistości to nie do końca poprawne. Tak, te systemy są podobne pod względem obniżonego zużycia zasobów dzięki rezygnacji z GUI i wielu usług ubocznych, ale w kwestii eksploatacji i pewnych podejść do budowy, to wciąż Windows, a nie system unixowy.
Najprostszy przykład — przy użyciu ręcznej budowy jądra Linuxa i późniejszej instalacji pakietów i usług, nawet najlżejszą dystrybucję Linuxa można przekształcić w coś ciężkiego i przypominającego scyzoryk szwajcarski (tutaj bardzo kusząco chciałoby się zażartować o Pythonie i wstawić obrazek z serii 'If Programming Languages Were Weapons', ale nie zrobimy tego). W Windows Core jest znacznie mniej takiej swobody, ponieważ mamy do czynienia z produktem Microsoftu.
Windows Server Core dostarczany jest już jako gotowa wersja, a domyślną konfigurację można ocenić według tabeli powyżej. Jeśli potrzebujesz czegoś z listy nieobsługiwanych, to będziesz musiał online przez konsolę dodać brakujące elementy. Jednak nie zapominaj o funkcji Feature on demand oraz możliwości pobrania komponentów w formie plików CAB, które można dodać do pakietu przed instalacją. Ale ten scenariusz nie działa, jeśli już w trakcie pracy odkryjesz, że brakuje ci jakiejś z wyciętych usług.
Ale to, co wyróżnia wersję Core od pełnej — to możliwość aktualizacji systemu i dodawania usług bez zatrzymywania pracy. Windows Core obsługuje instalację pakietów 'na gorąco', bez potrzeby ponownego uruchamiania. W rezultacie, na podstawie praktycznych obserwacji: maszyna działająca na Windows Core musi być resetowana około 6 razy rzadziej niż na Windows Server, to znaczy co pół roku, a nie co miesiąc.
Miłym bonusem dla administratorów jest to, że jeśli system jest używany zgodnie z zamysłem - przez konsolę, bez RDP - i nie jest z niego robiony drugi Windows Server, to staje się on niezwykle bezpieczny w porównaniu do pełnej wersji. Większość podatności Windows Server dotyczy właśnie RDP oraz działań użytkownika, który przez to RDP wykonuje rzeczy, których nie powinien. To trochę jak w historii z Henrym Fordem i jego stosunkiem do koloru samochodu: „Każdy klient może mieć samochód pomalowany na dowolny kolor, o ile jest to czarny». Podobnie jest z systemem: użytkownik może się komunikować z systemem w dowolny sposób, byleby robił to przez konsola.
Instalacja i zarządzanie Windows Server 2019 Core
Wcześniej wspomnieliśmy, że Windows Core to w zasadzie Windows Server bez nakładki GUI. Możesz więc skorzystać z prawie każdej wersji Windows Server jako wersji core, czyli zrezygnować z GUI. W przypadku produktów z rodziny Windows Server 2019 dostępne są 3 z 4 wersji serwerowych: tryb core jest dostępny dla Windows Server 2019 Standard Edition, Windows Server 2019 Datacenter oraz Hyper-V Server 2019, czyli z tej listy wypada tylko Windows Server 2019 Essentials.
Przy tym, pakiet instalacyjny Windows Server Core nie jest szczególnie trudny do znalezienia. W standardowym instalatorze Microsoft core-wersja jest oferowana dosłownie domyślnie, podczas gdy wersję z GUI trzeba wybierać ręcznie:

Istnieje tak naprawdę więcej niż jeden sposób zarządzania systemem, który jest wspomniany PowerShell, który jest oferowany przez producenta domyślnie. Można zarządzać maszyną wirtualną na Windows Server Core minimum pięcioma różnymi sposobami:
- Remote PowerShell;
- Remote Server Administration Tools (RSAT);
- Windows Admin Center;
- Sconfig;
- Server Manager.
Największe zainteresowanie budzą pierwsze trzy pozycje: standardowy PowerShell, RSAT i Windows Admin Center. Ważne jest jednak, aby rozumieć, że uzyskując korzyści z jednego z narzędzi, jednocześnie nakładamy na siebie jego ograniczenia.
Nie będziemy szczegółowo opisywać możliwości konsoli, PowerShell to PowerShell, ze swoimi oczywistymi plusami i minusami. Jednak z RSAT i WAC wszystko jest nieco bardziej skomplikowane.
WAC zapewnia dostęp do istotnych elementów zarządzania systemem, takich jak edytor rejestru oraz zarządzanie dyskami i urządzeniami. RSAT w pierwszym przypadku działa tylko w trybie podglądu i nie pozwala na wprowadzenie jakichkolwiek zmian, natomiast do zarządzania dyskami i fizycznymi urządzeniami narzędzia do zdalnej administracji serwerami wymagają GUI, co nie dotyczy naszego przypadku. W ogóle, RSAT nie ma możliwości pracy z plikami i w związku z tym aktualizacjami, instalacją/usuwaniem programów w edytorze rejestru.
▍Zarządzanie systemem
WAC
RSAT
Zarządzanie komponentami
Tak
Tak
Edytor rejestru
Tak
Nie
Zarządzanie siecią
Tak
Tak
Podgląd zdarzeń
Tak
Tak
Foldery ogólne
Tak
Tak
Zarządzanie dyskami
Tak
Tylko dla serwerów z GUI
Harmonogram zadań
Tak
Tak
Zarządzanie urządzeniami
Tak
Tylko dla serwerów z GUI
Zarządzanie plikami
Tak
Nie
Zarządzanie użytkownikami
Tak
Tak
Zarządzanie grupami
Tak
Tak
Zarządzanie certyfikatami
Tak
Tak
Aktualizacje
Tak
Nie
Usuwanie programów
Tak
Nie
Monitor systemu
Tak
Tak
Z drugiej strony, RSAT daje nam pełną kontrolę nad rolami na maszynie, podczas gdy Windows Admin Center nie może w tej kwestii dosłownie nic. Oto porównanie możliwości RSAT i WAC w tym aspekcie dla lepszej ilustracji:
▍Zarządzanie rolami
WAC
RSAT
Advanced Thread Protection
PODGLĄD
Nie
Windows Defender
PODGLĄD
Tak
Kontenery
PODGLĄD
Tak
AD Administrative Center
PODGLĄD
Tak
AD Domain and Trusts
Nie
Tak
AD sites and services
Nie
Tak
DHCP
PODGLĄD
Tak
DNS
PODGLĄD
Tak
Menedżer DFS
Nie
Tak
Menedżer GPO
Nie
Tak
Menedżer IIS
Nie
Tak
Już widać, że rezygnując z GUI i PowerShell na rzecz innych narzędzi zarządzania, nie da się wyjść z używaniem jednego narzędzia: do pełnej administracji z wszystkich perspektyw będziemy potrzebować przynajmniej zestawu z RSAT i WAC.
Należy pamiętać, że korzystanie z WAC wiąże się z potrzebą użycia 150-180 megabajtów pamięci RAM. Windows Admin Center przy połączeniu tworzy 3-4 sesje po stronie serwera, które nie są kończone nawet po rozłączeniu narzędzia z maszyną wirtualną. Dodatkowo, WAC nie działa ze starszymi wersjami PowerShell, więc będziesz potrzebować co najmniej PowerShell 5.0. Wszystko to jest sprzeczne z naszą filozofią oszczędności zasobów, ale za komfort trzeba płacić. W tym przypadku — pamięcią RAM.
Inną opcją zarządzania Server Core jest zainstalowanie GUI za pomocą zewnętrznych środków, aby nie zaciągać tych ton śmieci, które idą w pełnej wersji wraz z interfejsem.
W takim przypadku mamy dwie opcje: zainstalować oryginalnego Explorera lub skorzystać z Explorer++. Jako alternatywę dla tego ostatniego możemy wykorzystać dowolny menedżer plików: Total Commander, FAR Manager, Double Commander i tak dalej. Ostatnia opcja jest preferowana, jeśli oszczędność pamięci operacyjnej jest dla Ciebie kluczowa. Można dodać Explorer++ lub inny menedżer plików poprzez utworzenie folderu sieciowego i uruchomienie go przez konsolę lub harmonogram zadań.
Zainstalowanie pełnej wersji Explorera da nam więcej możliwości, jeśli chodzi o pracę z oprogramowaniem z interfejsem użytkownika. W tym celu z funkcji Server Core App Compatibility Feature on Demand (FOD), która przywróci do systemu MMC, Eventvwr, PerfMon, Resmon, Explorer.exe, a nawet Powershell ISE. Jednak za to będziemy musieli zapłacić, podobnie jak w przypadku WAC: bezpowrotnie stracimy około 150-200 megabajtów pamięci operacyjnej, które bezlitośnie wykorzysta explorer.exe i inne usługi. Nawet jeśli na maszynie nie ma aktywnego użytkownika.


Oto jak wygląda zużycie pamięci przez system na maszynach z oryginalnym pakietem Explorer i bez niego.
Rodzi się tu zasadne pytanie: po co te wszystkie zabiegi z PowerShellem, FOD, menedżerami plików, skoro każdy krok w lewo czy prawo zwiększa zużycie pamięci operacyjnej? Po co obciążać się mnóstwem narzędzi i skakać z jednej strony na drugą, żeby zapewnić sobie komfortową pracę na Windows Server Core, gdy można po prostu zainstalować Windows Server 2016/2019 i żyć jak normalny człowiek?
Jest kilka powodów, dla których warto używać Server Core. Pierwszy: prawie dwukrotnie mniejsze zużycie pamięci. Jeśli pamiętasz, ten warunek leżał u podstaw naszego artykułu na samym początku. Oto porównanie: zużycie pamięci Windows Server 2019, porównaj ze zrzutami ekranu nieco wyżej:

I oto, 1146 MB zużywanej pamięci zamiast 655 MB na Core.
Jeśli założymy, że WAC nie będzie Ci potrzebne i będziesz używać Explorer++ zamiast oryginalnego Explorera, to nadal zyskasz prawie pół hektara na każdej maszynie wirtualnej działającej na Windows Server. Jeśli maszyna wirtualna jest jedna, zysk jest nieznaczny, ale jeśli jest ich pięć? Wtedy posiadanie GUI ma znaczenie, zwłaszcza jeśli nie jest Ci potrzebne.
Drugie - wszelkie taneczne zabiegi wokół Windows Server Core nie rozwiążą głównego problemu eksploatacji Windows Server - RDP i jego bezpieczeństwa (a dokładniej, całkowitego jego braku). Windows Core, nawet w przebraniu FOD, RSAT i WAC, wciąż jest serwerem bez RDP, co oznacza, że nie jest narażony na 95% istniejących ataków.
W pozostałości
Ogólnie Windows Core jest tylko nieco 'grubszy' niż jakikolwiek standardowy dystrybucja Linuxa, ale jest znacznie bardziej funkcjonalny. Jeśli potrzebujesz zwolnienia zasobów i jesteś gotów pracować z konsolą, WAC i RSAT, używać menedżerów plików zamiast pełnoprawnego GUI - warto zwrócić uwagę na Core. Tym bardziej, że pozwala to uniknąć dodatkowych opłat za pełną wersję Windows, a zaoszczędzone pieniądze można przeznaczyć na zwiększenie , na przykład RAM-u. Dla wygody dodaliśmy Windows Server Core do naszego .
Źródło: habr.com
