В серверных приложениях, критичных к задержкам обращения и производительности ввода/вывода, давно избегают механических дисков. Их сменили SATA и SAS SSD, но будущее — за NVMe SSD. И за программно-определяемым хранением.
Go flash
Рынок флэш-памяти меняется, совершенствуются технологии и операционные системы. Уже два года как в мире продается больше NVMe SSD, чем SATA SSD, при совсем скромной доле SAS SSD. Цены NVMe SSD и SATA SSD сопоставимы (SAS SSD вдвое дороже). За явным превосходством в производительности NVMe становится доминирующим протоколом передачи данных в серверах и системах хранения.
Источник: 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
Аппаратные 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-контроллера уходит привычный комфорт единого сервисного окна к данным:
Кто в программных реализациях 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 можно двумя способами:
Опишем пошаговую процедуру создания хранилища в среде Windows Server 2019.
Если SSD использовались, их первым делом надо очистить от предыдущей информации — через Server Manager или консольную утилиту diskpart.
Путь GUI
Создаем новый пул из доступных дисков:
Проверяем результат:
Пул Pool_NVMe создан, указаны диски, которые входят него входят
Формируем программный RAID (т.е. Storage Spaces):
Выбираем тип RAID:
Устанавливаем объем:
В системе появился новый виртуальный диск:
Создаем том:
Хранилище RAID 1 готово к работе.
Путь CLI (PowerShell)
Проверяем наличие дисков и возможность создания из них пула.
Get-PhysicalDisk | Sort-Object -Property FriendlyName
$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 отвечает ожиданиям.
Собрать диски в защищенные тома можно и без Storage Spaces, через Disk Manager: в меню «Пуск» и панели поиска выбрать «Создать и отформатировать разделы жесткого диска», для собираемых в массив дисков выбрать режим объединения (Striped / Mirrored / RAID-5 ), назначить букву диска или точку монтирования для нового тома, создать том.
Мониторинг состояния RAID-массива в Windows.
Как строили — так и контролируем: через GUI или PowerShell.
Server Manager выдает информацию о состоянии пула, виртуального диска и физических дисков, из которых он собран:
Когда параметр 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
Результаты выполнения этого скрипта:
Проверим реакцию cистемы на отказ одного диска (извлекаем один SSD).
Сообщение об ошибке помещается в системный log-файл.
Для удобства просмотра этого файла можно установить фильтр на интересующие нас события. В нашем случае это отказ диска.
Е-mail уведомления об ошибках
Раньше использовали планировщик заданий Windows.
Создавали базовое задание:
Устанавливали значение триггера (реакция в момент появления сообщения в журнале логов):
Указывали соответствующий журнал, источник и идентификатор:
Устанавливали вид действия:
Упс. Windows Server 2019 сообщает, что эта функция уже не поддерживается.
А что же PowerShell?
Для использования командлета (Start a program) — PowerShell -> Send-MailMessage. необходима информация, получаемая по команде:
nslookup -type=mx entrydat.ua
Тело командлета:
Send-MailMessage -SmtpServer server_dat.entrydat.ua -To [email protected] -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 — не панацея. Сохранность данных обеспечивает только резервное копирование за пределы сервера, а лучше — офиса.
Про DCIM у забезпеченні успішної роботи ІТ-директора