Налаштування Storage Spaces Direct (S2D) в Windows Server 2016

Storage Spaces Direct (S2D) - нова технологія розподіленого зберігання даних, представлена ​​в Windows Server 2016. Завдяки використанню Storage Spaces Direct локальні диски декількох серверів можна організувати в відмовостійке, масштабується сховище, захищене від виходу з ладу як окремих дисків, так і цілих серверів. Ціна такого "програмного" сховища виходить значно менше, ніж вартість організації повноцінного SAN або NAS, а за рахунок простого масштабування (до 16 серверів і 400 дисків) і можливості використовувати різних накопичувачів (в тому числі SSD і NVMe) можна забезпечити значну продуктивність.

зміст:

  • Що таке Storage Spaces Direct (S2D)
  • Вимоги до Storage Spaces Direct
  • Включаємо Storage Spaces Direct

Що таке Storage Spaces Direct (S2D)

S2D є подальшим розвитком технології Storage Spaces і дозволяє об'єднати локальні диски вузлів (серверів) кластер Hyper-V в пули зберігання (Storage Pool). Тут ви швидко пулах можна створити віртуальні томи (диски) і використовувати їх в якості загального томи кластера Cluster Shared Volume (CSV) для зберігання файлів віртуальних машин Hyper-V і файлових куля SOFS-серверів. При необхідності розширити розмір сховища досить додати в S2D новий сервер або накопичувач. По суті, технологія Storage Spaces Direct є відповіддю Microsoft на VMware vSAN.

Вимоги до Storage Spaces Direct

У S2D підтримуються наступні типи пристроїв зберігання:

  • звичайні HDD диски (SAS)
  • SATA / SAS SSD диски
  • NVMe (Non-Volatile Memory Express) - SSD диски, Підключення до іншого класичний інтерфейс SATA / SAS, а через більш швидкісну шину PCI Express

Надалі різні типи дисків можна комбінувати в різні масиви (по швидкості і ємності), наприклад, логічно розташувати кеш і транзакційні логи додатків на швидкісних NVMe SSD, повільні і недорогі диски краще використовувати для зберігання великих файлів, доступ до яких не вимагає підвищеної продуктивності та т.д.

Для роботи S2D потрібно організувати відмовостійкий кластер, до вузлів якого висуваються наступні вимоги:

Вимоги до вузлів кластера S2D

  • Редакція Windows Server 2016 - DataCenter
  • На серверах потрібно встановити наступні компоненти: ролі Hyper-V, File Services і фичу Failover ClusteringПримітка. Не забудьте відключити SMB 1: Remove-WindowsFeature -Name FS-SMB1 -Verbose -Restart
  • Як мінімум два сервера в кластері (в ідеалі не менше 4 для забезпечення високої відмовостійкості)
  • Наявність дисків. Крім системного повинен мати як мінімум один фізичний диск на кожному вузлі. Всі диски, які планується додати в сховище Storage Spaces Direct повинні бути не розмічені (не повинні бути розбиті і не містити таблиці розділів)

Отже, припускаємо, що у нас вже зібраний відмовостійкий кластер з двох серверів з Windows Server 2016 (можна зібрати такий кластер навіть в робочій групі).

Примітка. Якщо в кластері парне число серверів, доведеться налаштувати ресурс-свідок. Якщо кількість вузлів непарне - свідок не потрібен.

Перед тим, як включити Storage Spaces Direct, перевірте, що ваші диски можна об'єднати в такий пул.

Get-PhysicalDisk -CanPool $ True | Sort Model

Включаємо Storage Spaces Direct

Активуємо S2D за допомогою командлета:

Enable-ClusterStorageSpacesDirect

Командлет відпрацьовує досить довго (близько 10 хвилин), в перебігу яких буде проаналізовано всі доступні диски і їх продуктивність, і автоматично створений кластерний пул. Також автоматично створюються два тири: Performance і Capacity з різним типом відмовостійкості зберігання: mirror і parity відповідно.

Всього підтримуються 3 типи організації отказоустойчивого зберігання даних:

  • Mirrored (3) - дані синхронно реплицируются між 3 (або 2 в мінімальній конфігурації) вузлами. Висока швидкість читання забезпечується розподілом операції між усіма серверами.
  • Parity (2) - дані зі зберіганням парності розподілені між різними дисками. Дані зберігаються більш ефективно, тому що не треба як в першому випадку зберігати кілька копій одних і тих же даних.
  • Tiered (1) - використовується комбінація обох технік.

Примітка 1. У тому випадку, якщо при виконанні команди Enable-ClusterS2D з'явиться помилка "no disks with supported bus types found to be used for S2D", швидше за все тип шини (BusType) ваших дисків - RAID (що з точки зору S2D - не підтримується конфігурація). Перевіримо тип шини

Get-Disk | select Number, FriendlyName, OperationalStatus, Size, PartitionStyle, BusType | sort Number | ft -AutoSize
Так і є - в усіх випадках це RAID. Рішення - оновити драйвери / firmware контролерів (в разі серверів HP встановити останній HPE Support Pack). Перевіримо тип BusType ще раз (тепер він змінився на SAS).Крім того, є невеликий трюк дозволяє в реєстрі змінити тип шини на SATA для потрібного типу контролера: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ arcsas \ Parameters
«BusType» = dword: 0000000b (замість 00000008) Інші приклади використання командлетів PowerShell для керування локальними дисками наведені в статті Управління дисками і розділами з PowerShell.

Примітка 2. Якщо в масиві виявлено диск типу дисків SSD, NVMe, він автоматично використовується в якості диска для зберігання кешу. Якщо таких дисків немає, в процесі створення S2D будуть з'являтися попередження. Можна відключити кеш за допомогою параметра -CacheState Disabled.

Відкриємо консоль управління кластером і переконаємося, що в розділі Storage новий з'явився Cluster Pool 1.

Вибравши пул, можна побачити з будь-дисків він складається.

У разі необхідності, ім'я пулу можна змінити:

Set-StoragePool -FriendlyName "Cluster Pool 1" -NewFriendlyName "S2D"

Якщо потрібно створити те з певних дисків, можна скористатися наприклад, такою командою. Спочатку вибираємо все диски з LUN 3, а потім збираємо з них пул.

$ HDDs = Get-PhysicalDisk | ? PhysicalLocation -like "* LUN 3"
New-StoragePool -StorageSubSystemFriendlyName * Cluster * -FriendlyName S2DPool -ProvisioningTypeDefault Fixed -PhysicalDisk $ HDDs

Вивести список дисків в пулі:

Get-StoragePool -FriendlyName S2D | Get-PhysicalDisk | ft PhysicalLocation

Додати в пул новий диск:

$ HDDs = Get-PhysicalDisk | ? PhysicalLocation -like "* LUN 4"
Add-PhysicalDisk -PhysicalDisks $ HDDs -StoragePoolFriendlyName S2D

Диски, помічені як S2D, в консолі управління дисками більш не відображаються, це нормально.

При наявності різнорідних накопичувачів можна використовувати тірінг (не обов'язково). Тир типу дзеркало з SSD дисків створюється так:

New-StorageTier -StoragePoolFriendlyName S2D -FriendlyName "Mirror_Tier" -MediaType SSD -ResiliencySettingName Mirror

Тир з звичайних HDD зі зберіганням парності:

New-StorageTier -StoragePoolFriendlyName S2D -FriendlyName "Parity_Tier" -MediaType HDD -ResiliencySettingName Parity

Тепер можна створити те CSV (Cluster Shared Volume):

New-Volume -StoragePoolFriendlyName S2D -FriendlyName CSV001 -PhysicalDiskRedudancy 2 -FileSystem CSVFS_ReFS -Size 200GB

Список томів і типом надмірності можна вивести так

Get-VirtualDisk | ft FriendlyName, ResiliencySettingName, PhysicalDiskRedundancy

Новий CSV тому з'явиться в консолі управління дисками.

Даний тому можна використовувати для розміщення віртуальних машин Hyper-V або мережевого сховища Scale-out File Server.

Отже, при використанні Storage Spaces Direct з декількох серверів з локальними дисками можна з легкістю створити програмне мережеве сховище даних. За рахунок технології S2D забезпечується як захист від одночасного виходу з ладу будь-яких двох дисків або двох серверів (4+ нодів кластер). Кластер S2D автоматично запускає процес перерозподілу даних між рештою пристроями в разі виявлення неполадок з дисками або серверами. У тестовій середовищі можна переконається, що при відключенні двох будь-яких дисків сховище продовжує бути доступним, а ВМ, запущені на ньому штатно працюють. Процедура заміни несправного диска в сховище S2D описана в наступній статті.