Windows Server и NVMe

Go flash

Рынок флэш-памяти меняется, совершенствуются технологии и операционные  системы. Уже два года как в мире продается больше NVMe SSD, чем SATA SSD, при совсем скромной доле SAS SSD. Цены NVMe SSD и SATA SSD сопоставимы (SAS SSD вдвое дороже). За явным превосходством в производительности NVMe становится доминирующим протоколом передачи данных в серверах и системах хранения.

SNIA SSD market shares. Entry - производитель серверов

Источник: SNIA

Пока хранение данных обслуживала экосистема SAS/SATA, построенная на SAS RAID-контроллерах и расширителях (экспандерах), серверы не слишком отличались от собратьев механических времен. Но NVMe не нужны посредники между CPU и флэш-памятью, это сказывается на конструктиве серверов. Дело даже не в новых форматах NVMe SSD, что идут на смену нынешним M.2/U.2. Серверы приложений и серверы хранения данных, критичные к продуктивности дискового ввода/вывода, строятся на распараллеливании потоков данных от CPU по шинам, вместо их консолидации на автономных контроллерах.

Цели остаются прежними: производительность, управляемость, доступность данных.

RAID и NVMe

Для непрерывной доступности данных нужны системы хранения с дублированными контроллерами или кластеры серверов с распределением блоков данных по узлам, кодированием со стиранием (erasure coding) или репликацией.

В автономном сервере не обойтись без RAID. Для NVMe SSD есть три варианта: программный, аппаратный, RAID on CPU (Intel VROC).

SNIA data protection for NVMe. Entry - производитель серверов

Источник: SNIA

Аппаратные RAID-контроллеры понемногу утрачивают роль центра управления данными сервера. Во времена HDD они кроме прочего позволяли подтянуть производительность ввода/вывода. С переводом серверов на SATA/SAS SSD  продуктивность определяется флэш-памятью, на долю контроллеров осталось «прочее»: обработка отказов и восстановление данных. Приход NVMe и развитых ОС ускорил процесс их вытеснения из серверов. Еще теплится спрос на Tri-mode (SAS/SATA/NVMe) RAID-контроллеры с привычным интерфейсом и функциональностью (прогоняющие все данные через узкое горлышко 8-16 линий PCIe и стек SAS). Но не для того придумывали NVMe, чтобы содержать посредников.

Интеловский VROC – программно-аппаратная реализация RAID силами блока Intel Volume Management Device (VMD), интегрированного в процессоры Intel Xeon Scalable. Даже если не придираться к невыдающейся производительности, его не назовешь универсальным решением. Активируется VROC физическим ключом на материнской плате (если та поддерживает VROC). Пока Intel была производителем SATA и NVMe SSD, ключи для «своих» SSD стоили дешево, для «чужих» - дорого. Спроса на VROC не было с его рождения, а теперь, после продажи флэш-производства Hynix, видимо уже и не будет.

Программный NVMe RAID строят средствами ОС или специализированных виртуальных систем хранения. Например, утилитой Linux mdadm или Windows Storage Spaces. Основное преимущество такого способа - отсутствие затрат на оборудование, пусть и ценой процессорного ресурса.

Какой программный RAID?

Сборка программных массивов из NVMe SSD является горячей темой уже много лет. Все программные RAID так или иначе основаны на избыточности - источнике жизненной силы управления данными.

Поле для спора есть: производительность имеющихся программных продуктов не соотносится с потенциалом скорости NVMe. Разочарование приходит на массивах с четностью: такие уровни RAID более экономно расходуют пространство, но менее производительны и требуют больше вычислений. 

Когда речь идет о рядовых серверах, спор о низкой производительности программных RAID остроту утрачивает. При емкости NVMe SSD от 960GB до 15.36TB серверу не нужно так уж много SSD. Это HDD объединяли в длинные дисковые группы в погоне за IOPs’ами. Большие пулы и уровни RAID c четностью для серверов на NVMe SSD не слишком актуальны – такие задачи решаются внешними дисковыми массивами или виртуальными системами хранения, обслуживающими приложения из соседних виртуальных машин.

Как только мы ограничиваемся простым или двойным зеркалированием, программные массивы, собранные ZFS, Linux mdadm или Windows Storage Spaces, будут равносильны. Не так экономно по емкости, как RAID с четностью, зато производительно и щадяще по ресурсам. Просто и результативно.

Центр управления данными (RAS delivery point)

Без RAID-контроллера уходит привычный комфорт единого сервисного окна к данным:

SNIA RAS delivery point. Entry - производитель серверов

Кто в программных реализациях RAID отвечает за управление массивом NVMe-накопителей, его расширение и резервирование, подключение SSD на горячую? Как работает индикация, кто следит за состоянием флэш-памяти и рассылает уведомления о сбоях?

Справляются сообща: серверная платформа, ОС, сторонние программные утилиты.

Горячая замена, индикация, диагностика, уведомления

Задача горячей замены NVMe SSD решается при помощи драйверов, встроенных в ОС или поставляемых производителем устройств. Корректную индикацию обеспечивает серверная платформа. В состав пула дисков заранее можно ввести диск горячего резерва (hot spare) или, как в Windows, зарезервировать при создании пула избыточный (на емкость диска) объем – процесс восстановления данных RAID пройдет быстрее.

Есть интерфейс управления NVMe (NVMe MI) для корпоративных и гипермасштабируемых приложений. Сценарии использования включают в себя: инвентаризацию, мониторинг работоспособности (определение неисправных дисков), мониторинг износа, температуры, питания, настройку, управление изменениями и т.д. Реализации отличаются от вендора к вендору. К примеру, вот что может iDRAC в серверах Dell.

Контролируют состояние NVMe SSD пакетом smartmontools, утилиты которого вычитывают S.M.A.R.T. дисков. Например, так.

В корпоративной среде принято мониторить не автономные серверы, а инфраструктуру в целом. Хороший пример – система мониторинга Zabbix. Ее клиентская часть ставится на серверы предприятия, позволяет оперативно собирать необходимую информацию и оповещать администраторов о событиях по различным каналам: e-mail, SMS, Jabber, EZ texting, пользовательскими скриптами. Опрос smartmontools «здоровья SSD» настраивается как автоматическая процедура.

Разберемся, что может Windows Server.

Windows Storage Spaces

Cредством защиты данных под Windows служит технология Storage Spaces.

Microsoft описывает три варианта серверных реализаций технологии:

  • На локальных дисках отдельного сервера c Windows Server Standard
  • В кластере серверов с локальными дисками под управлением Storage Spaces Direct (S2D) и Windows Server Datacenter
  • В кластере серверов с разделяемыми SAS JBOD

Нас интересует вариант автономного продуктивного сервера под управлением  стандартной ОС. С помощью Storage Spaces группируют накопители в унифицированные пулы хранения, cоздают и хранят дополнительные копии данных. Если нужна большая емкость, в пул хранения добавляют  диски. Пространства для хранения гибкие, а пулов хранения может быть несколько. Из пула можно создать несколько виртуальных дисков. Windows распознает их как традиционные диски, которые можно форматировать. Виртуальные диски создаются и управляются через интерфейс File and Storage Services или командами PowerShell.

У Storage Spaces есть три режима объединения дисков: simple, mirror, parity. Simple похож на RAID 0 и не защищает от сбоя диска. Зеркалирование (mirror) обеспечивает избыточность данных и может повысить производительность чтения, подобно RAID 1. Двойное зеркалирование (two-way mirror) защищает от сбоев двух дисков. Избыточность с четностью (parity) эффективна по использованию емкости, но подсаживает производительность. Когда речь об NVMe SSD, программными аналогами RAID 5 и 6 под Windows лучше не пользоваться. Выбирают между  two-way mirror и three-way-mirror.

Storage Space Mode

Minimum # of Drives

Failure Safety

Capacity Loss

Simple

2

None

None

Two-way Mirror

2

1 Drive

50%

Three-way Mirror

5

2 Drives

67%

Parity with Single Drive Redundancy

3

1 Drive

1 Drive

Parity with Dual Drive Redundancy

7

2 Drives

2 Drives

Все это подробно описано в руководстве Microsoft по Storage Spaces для автономных серверов. Вот только слова NVMe в нем нет. Создается ложное впечатление, что с точки зрения Microsoft NVMe SSD уместны  только в S2D - гиперконвергентных системах с распределенным хранилищем. Это не так.

Собрать NVMe SSD в RAID с помощью Storage Spaces можно двумя способами:

  • GUI
  • CLI (PowerShell)

Опишем пошаговую процедуру создания хранилища в среде Windows Server 2019.

Если SSD использовались, их первым делом надо очистить от предыдущей информации – через Server Manager или консольную утилиту diskpart.

Путь GUI

Создаем новый пул из доступных дисков:

Windows NVMe 1. Entry Ltd. - украинский производитель серверов

Проверяем результат:

Windows NVMe 2. Entry Ltd. - украинский производитель серверов

Пул Pool_NVMe создан, указаны диски, которые входят него входят

Формируем программный RAID (т.е. Storage Spaces):


Windows NVMe 3.Entry Ltd. - производитель серверов

Выбираем тип RAID:

Windows NVMe 4.  Entry Ltd.- украинский производитель серверов

Устанавливаем объем:

Windows NVMe 5.  Entry Ltd.- украинский производитель серверов

В системе появился новый виртуальный диск:

Windows NVMe 6.  Entry Ltd.- украинский производитель серверов

 

Создаем том:

Windows NVMe 7.  Entry Ltd.- украинский производитель серверов

Хранилище RAID 1 готово к работе.

Путь CLI (PowerShell)

Проверяем наличие дисков и возможность создания из них пула.

 

Get-PhysicalDisk | Sort-Object -Property FriendlyName

 

Windows NVMe 8.  Entry Ltd.- украинский производитель серверов

 

$PhysicalDisks = Get-StorageSubSystem -FriendlyName "Windows Storage*" | Get-PhysicalDisk -CanPool $True

New-StoragePool -FriendlyName "Pool_NVMe" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $PhysicalDisks | New-VirtualDisk -FriendlyName "SS_NVMe" -Size 890GB -ProvisioningType Fixed | Initialize-Disk -PassThru | New-Partition -DriveLetter M -UseMaximumSize | Format-Volume

Две строчки - и все готово.

Контрольная проверка, например, тестом AJA, показывает: производительность зеркального тома из двух NVMe SSD отвечает ожиданиям.

Windows NVMe 10.  Entry Ltd.- украинский производитель серверов

Собрать диски в защищенные тома можно и без Storage Spaces, через Disk Manager: в меню «Пуск» и панели поиска выбрать «Создать и отформатировать разделы жесткого диска», для собираемых в массив дисков выбрать режим объединения (Striped / Mirrored / RAID-5 ), назначить букву диска или точку монтирования для нового тома, создать том.

Мониторинг состояния RAID-массива в Windows.

Как строили – так и контролируем: через GUI или PowerShell.

Server Manager выдает информацию о состоянии пула, виртуального диска и физических дисков, из которых он собран:

Windows NVMe 11.  Entry Ltd.- украинский производитель серверов

Когда параметр Percent Allocation находится в красной зоне (как на скриншоте), все пространство фактически задействовано. Для оптимальной производительности хранилища желательно заполнять его не больше, чем на 80%.

Для отображения необходимой информации можно создать скрипт в Script Pane/PowerShell (и сохранить файл в любом месте):

 

Get-StoragePool -FriendlyName Pool_NVMe | ft FriendlyName,OperationalStatus,HealthStatus

Get-Disk -FriendlyName SS_NVMe | ft FriendlyName,HealthStatus,OperationalStatus

Get-PhysicalDisk -FriendlyName "NVMe*" | ft FriendlyName,HealthStatus,OperationalStatus,Model,FirmwareVersion,PhysicalLocation

Результаты выполнения этого скрипта:

Windows NVMe 12.  Entry Ltd.- украинский производитель серверов

Windows NVMe 13.  Entry Ltd.- украинский производитель серверов

Проверим реакцию cистемы на отказ одного диска (извлекаем один SSD).

Windows NVMe 14.  Entry Ltd.- украинский производитель серверов

Windows NVMe 15.  Entry Ltd.- украинский производитель серверов

Сообщение об ошибке помещается в системный log-файл.

Windows NVMe 16.  Entry Ltd.- украинский производитель серверов

Для удобства просмотра этого файла можно установить фильтр на интересующие нас события. В нашем случае это отказ диска.

Windows NVMe 17.  Entry Ltd.- украинский производитель серверов

Е-mail уведомления об ошибках

Раньше использовали планировщик заданий Windows.

Windows NVMe 18.  Entry Ltd.- украинский производитель серверов

Создавали базовое задание:

Windows NVMe 19.  Entry Ltd.- украинский производитель серверов

Устанавливали значение триггера (реакция в момент появления сообщения в журнале логов):

Windows NVMe 20.  Entry Ltd.- украинский производитель серверов

Указывали соответствующий журнал, источник и идентификатор:

Windows NVMe 21.  Entry Ltd.- украинский производитель серверов

Устанавливали вид действия:

Windows NVMe 22.  Entry Ltd.- украинский производитель серверов

Упс. Windows Server 2019 сообщает, что эта функция уже не поддерживается.

А что же PowerShell?

Для использования командлета (Start a program) – PowerShell -> Send-MailMessage. Необходима информация, получаемая по команде:

 

nslookup -type=mx entrydat.ua

 

Windows NVMe 23.  Entry Ltd.- украинский производитель серверов

Тело командлета:

 

Send-MailMessage -SmtpServer server_dat.entrydat.ua -To drazhan@entry.kiev.ua -From Server_DAT_App3 -Subject "RAID Error" -Body "Check the RAID"

 

Реакция ОС показывает причину отказа Windows Server 2019 от прежних механизмов рассылки e-mail уведомлений:

«Командлет Send-MailMessage устарел. Этот командлет не гарантирует безопасное подключение к SMTP-серверам. Хотя в PowerShell нет немедленной замены, мы рекомендуем не использовать Send-MailMessage».

Свободно распространяемое ПО позволяет решить эту и много других задач.

Напоследок

При всем удобстве, дискретные RAID-контроллеры больше не являются выбором must have в продуктивных серверах. Массивы NVMe SSD можно обслуживать  базовыми средствами ОС и дополнительным ПО по выбору. Дело даже не в экономии на контроллерах. Без них потолок производительности ввода/вывода выше, риски отказов и сервисная зависимость ниже, потенциальное время простоя меньше.

Не забываем: в автономном сервере есть чему помирать и без массива. Что аппаратный, что программный RAID - не панацея. Сохранность данных обеспечивает только резервное копирование за пределы сервера, а лучше - офиса.