Продолжаем выжимать все соки из Windows-сервера. В этот раз я расскажу про настройку сервера удаленных рабочих столов, более известного как терминальный сервер. В качестве «вишенки на торте» остановимся еще на тюнинге системы дедупликации томов Windows. В инфраструктуре удаленных рабочих столов основной ролью является узел сеансов Remote Desktop Session Host (далее – RDSH). Начну с подбора аппаратной части для этой роли. С процессором и памятью все довольно просто: больше памяти, больше процессоров высокой частоты и с большим кэшем – лучше. Чуть больше внимания стоит уделить дисковой подсистеме, ведь именно она часто является узким местом. Основную нагрузку на диски можно условно разделить на три группы: системные файлы и приложения; файл подкачки; В целях увеличения быстродействия имеет смысл разнести эти группы по разным физическим дискам. Про файл подкачки уже упоминалось в предыдущей статье, а вот пользовательские профили потребуют некоторых манипуляций с реестром. Для смены места хранения профилей нужно изменить следующий параметр реестра: путь: HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList; параметр: REG_EXPAND_SZ с именем ProfilesDirectory; Тогда профили всех пользователей будут создаваться уже в другом месте. Помимо изменения места хранения профилей бывает полезно перенаправить ряд пользовательских папок в другое место. Как правило, это практикуется для быстродействия и настройки бэкапов – ведь «мои документы» и «рабочий стол» могут содержать важную информацию, но и не требуют повышенного быстродействия. Перенаправление удобно настраивается с помощью групповой политики. Сама групповая политика настраивается в Конфигурация пользователя – Конфигурация Windows – Перенаправление папки, и для большинства папок пользовательского профиля можно указать альтернативное расположение.  Настройка политики перенаправления папок Чтобы не было проблем с созданием папок и доступом в них, я обычно делаю следующие разрешения на ресурс с перенаправленными папками: группа «Все» может создавать папки и читать. Разрешения применяются только для корневой папки; создатель-владелец (owner) имеет полный доступ, но только к подпапкам и файлам;  Разрешения на сетевой ресурс с перенаправленными папками пользователей. Одна из основных нагрузок на диск на сервере с ролью RDSH – синхронная запись. Причиной опять же являются пользователи: ведь при штатной работе идет регулярное обращение к профилю, а также загрузка-выгрузка пользовательских веток реестра (%userprofile%\ntuser.dat). Помимо создания разного рода производительных массивов оптимизировать производительность поможет кэш на запись.  Если у вас нет батарейки для RAID-контроллера, стоит подумать о ее приобретении или же безгранично верить бесперебойникам. Надо сказать, что кэш можно настраивать и через Windows – на вкладке «Политика» в свойствах диска в оснастке «Управление дисками».  Настройка кэша жесткого диска Windows. Вторым потенциально узким местом является сетевая подсистема. В целях оптимизации не лишним будет по возможности разделить сеть на условный frontend и backend. Через frontend пустить пользовательские подключения, а через backend – подключения к другим серверам, в том числе и к хранилищам для перенаправленных папок и перемещаемых профилей.  Загрузка сети пользовательскими подключениями, как правило, минимальна, а для повышения производительности backend можно использовать объединение адаптеров (LACP) или установить в сервер десятигигабитные адаптеры. В настройке самой операционной системы можно выделить следующие моменты: по возможности стоит отключить фоновые процессы: такие как проверка орфографии, автосохранения, индексирование для поиска. Или хотя бы уменьшить их частоту; также лучше уменьшить частоту проверок статуса приложений, обновлений и прочих синхронизаций; меньше ненужных процессов и модулей – больше простора всему остальному. Проверить процессы и загружаемые модули можно с помощью встроенной утилиты msinfo32.exe и незабвенной Autoruns; антивирус на терминальном сервере – не самая лучшая идея, достаточно ограничиться защитой периметра, SRP и регулярными обновлениями. Если же Пети и Не-Пети тревожат паранойю, то стоит хотя бы исключить из проверки часть временных папок: например, с файлами, которые создают системные сервисы и доверенные приложения; если перенаправленные устройства, такие как воспроизведение звука, микрофон и прочие диски не используются – лучше их отключить. отдельного упоминания заслуживают перенаправленные принтеры. По возможности лучше не использовать перенаправление принтеров, подключать уже с локального принтсервера. Если подключить не удается – используйте проброс принтеров с помощью штатного средства EasyPrint, без установки драйвера принтера. Ставить драйвер принтера стоит при крайней необходимости, и аккуратно – многие драйвера, особенно для старых принтеров, тянут с собой свои приложения, которые запросто могут и «уронить» службу печати;  129 – именно столько назначенных заданий в свежеустановленной Windows 2016 + Office 2016. Нельзя не упомянуть возможность терминального сервера под названием RemoteFX, настройка его поведения также влияет на быстродействие. Полезной настройкой является сжатие RemoteFX. Искать ее можно в групповых политиках по адресу Конфигурация компьютера – Административные шаблоны – Компоненты Windows – Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов – Среда удаленных сеансов – Настройка сжатия RemoteFX.  Настройка сжатия RemoteFX через групповые политики. Настройка имеет следующие варианты: оптимизация использования памяти. Нагрузка на сервер небольшая, но повышаются требования к пропускной способности сети; оптимизация использования полосы пропускания сети. Сеть загружена слабо, но расход памяти составляет около 2 МБ на сессию; баланс памяти и полосы пропускания сети. Расход памяти составляет около 200 КБ на сессию; При небольшом количестве пользователей изнутри локальной сети настройка мало влияет на быстродействие. Но когда пользователей много или если они удаленные, стоит задуматься о ее применении. Рядом с этой настройкой находятся и другие опции, влияющие на быстродействие – тут и настройка кодировки, и настройка максимального разрешения экрана. Особенно интересной является настройка использования графического адаптера для отрисовки изображения – для всех сеансов службы удаленных рабочих столов используйте аппаратный графический адаптер по умолчанию. Начиная с Windows 2016, RemoteFX научился работать не только с виртуальными видеокартами в виртуальных машинах, но и с видеокартой напрямую. Да, теперь видеокарту для ускорения работы можно устанавливать даже в обычный сервер сеансов удаленных рабочих столов. Другие настройки отображения можно производить на клиентской стороне, в файлах .rdp. Большинство опций находится на вкладке «Взаимодействие».  Настройки отображения, влияющие на быстродействие. Можно настроить вручную, можно использовать предустановки в зависимости от ориентировочной скорости соединения или же отдать управление автоматике. Самое главное – не стоит отключать «Постоянное кэширование точечных рисунков». При включенной опции клиент будет держать у себя кэш изображения и загружать только изменения рисунка.  Перейду к быстродействию другой роли терминального сервера – шлюза удаленных рабочих столов. Шлюз удаленных рабочих столов (Remote Desktop Gateway, далее – RDG) удобно использовать для подключения внешних клиентов без VPN – в частности, он позволяет настроить проверку подлинности по сертификату. С примером настройки можно ознакомиться в соответствующей статье, я же ограничусь вопросами быстродействия. RDG может использовать транспорт TCP и UDP, но в большинстве случаев используется стандартный RPC поверх HTTP. Именно его и касаются следующие настройки в реестре: Понять, где есть проблемы, помогут счетчики производительности: шлюз служб терминалов; RPC/HTTP Proxy Per Server; RPC/HTTP Proxy; W3SVC_W3WP; IPv4; память; сетевой интерфейс; система; синхронизация; TCPv4; процесс; прокси RPC/HTTP сведения о процессоре; Скажу и пару слов про третью роль – узел виртуализации удаленных рабочих столов. Он необходим для развертывания инфраструктуры виртуальных рабочих столов (Virtual Desktop Infrastructure – VDI), чуть менее популярной, чем обычные терминальные сервера. Помимо общих рекомендаций для гипервизоров – быстрее, выше, сильнее – в инфраструктуре VDI в режиме пула виртуальных рабочих столов имеет смысл обратить внимание на ненужные службы и возможности в клиентских операционных системах: обновление WIndows. Все равно машина при подключении разворачивается из шаблона; автономные файлы. VDI не уходят в оффлайн; фоновая дефрагментация. Изменения файловой системы откатываются при отключении; сон или гибернация. Не поддерживается в VDI; аварийный дамп. При повторном включении машина будет развернута из шаблона; автоконфигурация WLAN. На VDI нет Wi-Fi; служба общих сетевых ресурсов проигрывателя Windows Media; поставщик домашней группы; общий доступ подключения к интернету; служба поддержки Bluetooth; Помимо отключения служб в шаблонной виртуальной машине, для оптимизации хранения не лишним будет включить дедупликацию в любом варианте развертывания VDI. Сделать это можно при помощи команды PowerShell: Использование дедупликации изрядно поможет сберечь место не только при использовании виртуальных рабочих столов. Дедупликация – это метод сжатия массива, когда повторяющиеся данные не дублируются.  Microsoft советует включать дедупликацию в следующих случаях: файловые серверы общего назначения – общие папки пользователей, перенаправленные папки профилей и т.п.; серверы инфраструктуры удаленных рабочих столов (VDI); Во всех прочих случаях выгоды дедупликации стоит предварительно оценить. В этом поможет утилита DDPEval.exe, которая появится после установки роли дедупликации на сервер.  На диске с большим количеством файловых баз 1С дедупликация поможет сэкономить до 70% места. Установка компоненты дедупликации производится через графический режим или командлетом PowerShell: Install-WindowsFeature -Name FS-Data-Deduplication Включить удобно командлетом Enable-DedupVolume с параметром – UsageType, который может принимать значения: HyperV – для дисков хранения виртуальных машин и VDI; Backup – для виртуализированных приложений резервного копирования; Подробнее прочитать про дедупликацию и чем отличаются ее виды, предлагаю в документации Microsoft. Для оптимизации баланса хранения и производительности следует уделить внимание назначенным заданиям дедупликации и тонким ее настройкам. Механизм дедупликации использует три вида назначенных заданий: Посмотреть назначенные задания можно командлетом Get-DedupSchedule.  Запланированные задания дедупликации по умолчанию. Разумеется такое расписание может быть неприемлемо, особенно на серверах с высокой загрузкой. В таком случае удобно будет запускать задания только в часы простоя. Отключим задания командой PowerShell: Добавим новое задание оптимизации в нерабочее время: И задания сборка мусора и проверки по нерабочим дням: Подробнее про синтаксис командлета New-DedupSchedule можно почитать в документации. Большинство тонких настроек дедупликации – то есть большинство параметров для тома – настраивается с помощью командлета Set-DedupVolume. Пример использования: Помимо настроек для тома существуют и общие настройки службы дедупликации. В частности, нас интересует два параметра, находящихся в реестре по следующему адресу: Теперь, когда дедупликация настроена, можно попробовать выговорить «дедуплицировали, дедуплицировали, да не выдедуплицировали», а потом потратить бюджет не на диски, а на новые серверы в ферму удаленных рабочих столов. И начать тюнить уже их. А вам приходилось заниматься подобным тюнингом быстродействия терминальных серверов или все «по дефолту»? Был какой-то ощутимый результат?