company_banner

Втискиваем 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:

    application server core server withdesktop experience
    Command prompt available available
    Windows PowerShell/ Microsoft .NET available available
    Perfmon.exe not available available
    Windbg (GUI) supported available
    Resmon.exe not available available
    Regedit available available
    Fsutil.exe available available
    Disksnapshot.exe not available available
    Diskpart.exe available available
    Diskmgmt.msc not available available
    Devmgmt.msc not available available
    Server Manager not available available
    Mmc.exe not available available
    Eventvwr not available available
    Wevtutil (Event queries) available available
    Services.msc not available available
    Control Panel not available available
    Windows Update (GUI) not available available
    Windows Explorer not available available
    Taskbar not available available
    Taskbar notifications not available available
    Taskmgr available available
    Internet Explorer or Edge not available available
    Built-in help system not available available
    Windows 10 Shell not available available
    Windows Media Player not available available
    PowerShell available available
    PowerShell ISE not available available
    PowerShell IME available available
    Mstsc.exe not available available
    Remote Desktop Services available available
    Hyper-V Manager not available available

    Как видно, из 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 надо выбирать вручную:

    image

    Вариантов управления системой, на самом деле, больше, чем один упомянутый 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 Нет Да
    Диспетчер 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 и прочие службы. Даже если на машине нет активного пользователя.



    Вот так выглядит потребление памяти системой на машинах с родным пакетом 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 в свой маркетплейс.

    RUVDS.com
    RUVDS – хостинг VDS/VPS серверов

    Комментарии 29

      0
      А как после установки Windows server core узнать какие драйвера еще требуются доустановить и как этот процесс осуществлять? Антивирус опять же.
      +1
      И как много желающих использовать такое?
        0
        Достаточно :-) Мы даже добавили образ Windows Server Core в свой маркетплейс.
          0
          Можно, например, запихнуть его в виндовый докер-контейнер.
          И там же запускать виндовый агент тимсити и микрософтовский компилятор.
          Как-то даже работает.
            0

            А ресурсов хватит?

              0
              2 гига оперативки контейнера хватает. Нарочно скорость с хостом не сравнивал, но на глазок не сильно медленнее собирается. Радует уже хотя бы шанс получить документированное повторяемое окружение сборки.
              0
              А докер на Windows не аналогичен Linux в том плане, что в контейнере нет своего ядра ОС? Контейнер же работает на хост-ядре, это просто песочница, но не отдельный инстанс ОС.
              0

              Мы используем. Преимущественно на серверах приложений, web,dc, файловых. Вполне довольны. Единственное что напрягает, так это то, что половина инструмента в диспетчере серверов, другая половина в WAC

              +2
              А что именно занимает эти «150-200 мегабайт оперативной памяти» без входа пользователя?
                0
                Да, на памяти и ресурсах можно сэкономить. И безопасность лучше.

                Только насколько больше будет стоить админ, способный это поддерживать и чинить при необходимости? И насколько легко будет такого админа найти/заменить?

                Поэтому компании не парятся — ставят полную систему. А уж безопасность всегда подкрутить можно. И RDP для доступа совсем не обязателен. Взгляните, например, на тот же ScreenConnect, который, правда, уже перекупили и переименовали…
                  +3

                  Автобус из буханки хлеба
                  Винда нужна для виниловых приложений
                  А им нужны ресурсы

                    +2

                    Ну да, ну да, MS SQL или там контроллер домена без gui никак.

                      0
                      Щас бы базу пихать на минимальную виртуалку
                    +1
                    Подскажите пожалуйста по такому вопросу — могу я использовать ваш VPS как аналог seedr.cc?
                      +1
                      Да, конечно.
                        +2
                        Спасибо, я уже с поддержкой пообщался. Взял тестовый, работает отлично.
                      +1

                      Надеюсь, у автора есть подтверждение словам о том, что 95% уязвимостей виндосервера касаются RDP?

                        +2
                        Windows Core даже в обмазке в виде FOD, RSAT и WAC все еще сервер без RDP, то есть не подвержен 95% существующих атак.

                        А FOD, RSAT и WAC через libastral-протокол работают что-ли. По 139, 445 портам в винде дыр было еще больше, чем в самом RDP. WinRM в Metasploit тоже есть.
                          0

                          Скриншоты оперативной памяти с explorer и без него — два одинаковых.
                          Для использования при аренде лицензий Windows core подходит?

                            +1
                            Скрины теперь в порядке :-)
                            Можете пояснить вопрос?
                            0

                            Забыли упомянуть наивный Openssh, который уже давно реализован в Win10, для удалённого управления системой.

                              +1

                              а можете, если вас не затруднит, уточнить что именно не так с безопасностью RDP?

                                +1
                                Скорее не с ним непосредственно, а с пользовательскими действиями. Большая часть вирусов требует пользовательского действия или пользователя в системе. RDP оставляет пользователя в системе, а вот WinRm нет.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  0

                                  При ограниченной памяти нужно смотреть своп. Например у меня есть сервер на Debian, где установлено несколько сервисов. У сервера 256 MB RAM и 800 MB Swap. Прямо сейчас использовано 135 MB RAM и ещё 104 MB ушли в своп. Полагаю, что в свопе лежит неиспользуемый код и тд, т.к. сами сервисы отвечают вполне интерактивно и никакого своппинга при работе на этом сервере не заметно, всё быстро и комфортно.


                                  Т.е. если Windows Server потребляет 1100 MB RAM, но при этом через некоторое время половина этой памяти уйдёт в SWAP, то тут вроде как не всё плохо.

                                    0
                                    Какие-то цифры не правиьные. Например тут просят минимум всего каких-то 48Гб RAM.
                                    0

                                    А можно на этом Core запускать MS Office в headless режиме?

                                      0
                                      В целом Windows Core лишь слегка «жирнее», нежели чем любой стоковый Linux-дистрибутив, но зато куда функциональнее.

                                      Чем функциональнее? Вы же просто поставили сам windows и средства удаленного администрирования к нему. Получился windows ради windows.
                                      Debian стартует на 256 MB памяти и одном ядре с тактом 1 Ghz

                                      Debian работает например на Wirenboard 4. Там imx233 450 MHz и 64 Mb оперативной памяти. Помимо того что он стартует, он там еще и полезную работу выполняет.

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое