Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core

Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core
Через ненажерливість 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 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 (Event queries)
доступний
доступний

Services.msc
недоступний
доступний

панель управління
недоступний
доступний

Windows Update (GUI)
недоступний
доступний

провідник Windows
недоступний
доступний

панель завдань
недоступний
доступний

Сповіщення на панелі завдань
недоступний
доступний

taskmgr
доступний
доступний

Internet Explorer або Edge
недоступний
доступний

Вбудована довідкова система
недоступний
доступний

Windows 10 Shell
недоступний
доступний

Windows Media Player
недоступний
доступний

PowerShell
доступний
доступний

PowerShell ISE
недоступний
доступний

PowerShell IME
доступний
доступний

Mstsc.exe
недоступний
доступний

Послуги віддаленого робочого столу
доступний
доступний

Менеджер Hyper-V
недоступний
доступний

Як видно, з Windows Core вирізано дуже багато. Під ніж пішли служби та процеси, пов'язані з GUI системи, а також всяке «сміття», яке однозначно не знадобиться на нашій консольній віртуалці, наприклад, Windows Media Player.

Майже як Linux, але не він

Windows Server Core дуже хочеться порівнювати з Linux-дистрибутивами, але насправді це зовсім коректно. Так, ці системи схожі між собою в плані зниженого споживання ресурсів за рахунок відмови від GUI та багатьох побічних служб, але в плані експлуатації та деяких підходів до збирання це все ще Windows, а не unix-система.

Найпростіший приклад — за допомогою ручного складання ядра Linux і подальшої установки пакетів і служб, навіть найлегший Linux-дистрибутив можна перетворити на щось важке і схоже на швейцарський ніж (тут дуже хочеться баяно пожартувати про Python і вставити картинку із серії «If Programming Langua 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 робить те, що не варто було б. Це приблизно як в історії з Генрі Фордом і його відношенню до кольору автомобіля: чорний». Так і з системою: користувач може у будь-який спосіб спілкуватися з системою, головне, щоб він робив це через консоль.

Встановлення та керування 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 треба вибирати вручну:

Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core
Варіантів керування системою насправді більше, ніж один згаданий PowerShell, який і пропонується виробником за умовчанням. Керувати віртуальною машиною на Windows Server Core можна щонайменше п'ятьма різними способами:

  • Remote PowerShell;
  • Remote Server Administration Tools (RSAT);
  • Windows Admin Center;
  • Sconfig;
  • Менеджер серверів.

Найбільший інтерес становлять перші три позиції: стандартний 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
Ні
Так

Диспетчер GPO
Ні
Так

Диспетчер IIS
Ні
Так

Тобто вже видно, що при відмові від 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 та інші служби. Навіть якщо на машині немає активного користувача.

Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core
Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core
Ось так виглядає споживання пам'яті системою на машинах із рідним пакетом Explorer і без нього.

Тут виникає закономірне питання: а навіщо всі ці танці з PowerShell, FOD, файловими менеджерами, якщо будь-який крок вліво-вправо призводить до збільшення споживання оперативної пам'яті? Навіщо обмазуватись купою інструментів і кидатися з боку в бік, щоб забезпечити собі комфортну роботу на Windows Server Core, коли можна просто накотити Windows Server 2016/2019 і жити, як біла людина?

Причин використання Server Core кілька. Перша: у струмі майже вдвічі менше споживання пам'яті. Якщо ви пам'ятаєте, ця умова лежала в основі нашої статті ще на її початку. Ось для порівняння, споживання пам'яті Windows Server 2019 порівняйте зі скріншотами трохи вище:

Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core
І ось, 1146 МБ споживаної пам'яті замість 655 МБ на 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 до свого маркетплейс.

Втискаємо Windows Server на малопотужну VPS за допомогою Windows Server Core

Джерело: habr.com

Додати коментар або відгук