Настройка Storage Spaces Direct (S2D) в Windows Server 2016

Настройка 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)

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

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) – используется комбинация обоих техник.

Включить Storage Spaces Direct с помощью командлета Enable-ClusterStorageSpacesDirect

Примечание 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

BusType-RaidТак и есть – во всех случаях это RAID. Решение — обновить драйверы/ firmware контроллеров (в случае серверов HP установить последний HPE Support Pack). Проверим тип BusType еще раз (теперь он сменился на SAS).HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesarcsasParameters - BusType SASКроме того, есть небольшой трюк позволяющий в реестре изменить тип шины на SATA для нужного типа контроллера:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesarcsasParameters
«BusType»=dword:0000000b (вместо 00000008)Другие примеры использования командлетов PowerShell для управления локальными дисками приведены в статье Управление дисками и разделами из PowerShell.

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

Откроем консоль управления кластером и убедимся, что в разделе Storage новый появился Cluster Pool 1.

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

PhysicalLocation - LUN 3

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

$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

Get-VirtualDisk | ft FriendlyName, ResiliencySettingName, PhysicalDiskRedundancy

Новый CSV том появится в консоли управления дисками.

CSV том

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

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

Windows Server 2016
Настройка Storage Spaces Direct (S2D) в Windows Server 2016