Windows Server та NVMe

Go flash

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

SNIA SSD market shares. Entry Ltd.

Джерело: 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 Ltd.

Джерело: SNIA

Апаратні RAID-контролери помалу втрачають роль центру управління даними сервера. За часів HDD вони окрім іншого дозволяли підтягнути продуктивність введення/виведення. З перекладом серверів на SATA/SAS SSD продуктивність визначається флеш-пам'яттю, на долю контролерів залишилося "інше": обробка відмов і відновлення даних. Прихід NVMe і розвинених ОС прискорив процес їх витіснення з серверів. Ще жевріє попит на Tri-mode (SAS/SATA/NVMe) RAID-контролери зі звичним інтерфейсом і функціональністю (проганяючи усі дані через вузьку шийку 8-16 ліній PCIe і стік SAS). Але не для того придумували NVMe, щоб містити посередників.

VROC від Intel - програмно-апаратна реалізація 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 Ltd.

 

Хто в програмних реалізаціях 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

Слідством захисту даних під Windows служить технологія Storage Spaces.

Microsoft описує три варіанти серверних реалізацій технології:

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

Нас цікавить варіант автономного продуктивного сервера під управлінням стандартною ОС. За допомогою Storage Spaces групують накопичувачі в уніфіковані пули зберігання, створюють і зберігають додаткові копії даних. Якщо потрібна велика місткість, в пул зберігання додають диски. Простори для зберігання гнучкі, а пулів зберігання може бути декілька. З пулу можна створити декілька віртуальних дисків. 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

 

Вибираємо RAID

Windows NVMe 4. Entry Ltd.

 

Встановлюємо ємність

Windows NVMe 5. Entry Ltd.

 

У системі з'явився новий віртуальний диск:

Windows NVMe 6.  Энтри

Створюємо том

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

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

Два рядки - і все готово.

Контрольна перевірка, наприклад, тестом 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 Энтри - производитель серверов

 

Коли параметр 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. производитель серверов.

 

Перевіримо реакцію системи на відмову одного диска (витягаємо один 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. Ентрі - виробник серверів

 

Встановлювали вид дії :

Windows NVMe 22. Ентрі - виробник серверів.

Упс. Windows Server 2019 повідомляє, що ця функція вже не підтримується.

А що ж PowerShell?

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

 

nslookup -type=mx entrydat.ua

Windows NVMe 23. Ентрі - виробник серверів

 

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

 

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 - не панацея. Збереження даних забезпечує тільки резервне копіювання за межі сервера, а краще - офісу.