Windows storage spaces with ssd

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

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

Перед тем, как включить Storage Spaces Direct, проверьте, что ваши диски можно объединить в такой пул.

Get-PhysicalDisk –CanPool $True | Sort Model

Включаем Storage Spaces Direct

Активируем S2D с помощью командлета:

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

Всего поддерживаются 3 типа организации отказоустойчивого хранения данных:

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

Откроем консоль управления кластером и убедимся, что в разделе 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 описана в следующей статье.

Штука, безусловно, хорошая — у нас есть десяток стареньких серверов с внутренними дисками. Их как раз можно объединить в логический массив S2D. Но вот то-что для этого Datacenter нужен, это не есть хорошо.

Согласен. Я тоже считаю что требовать за это лицензию Datacenter довольно опрометчиво, т.к. сильно сужает область применения технологии такого распределенного хранилища.
Применять Storage Spaces Direct смогут только крупные хостинг- и облачные провайдеры. А крупному корпоративному сектору она не будет интересна, т.к. почти у всех уже все заточено под внешние массивы с подключением через SAN или iSCSI.
Хотя использовать ее имеено для сборки такого оставшегося старья в одно большое хранилище было бы интересно…

Если Вы используете виртуализацию по полной то выходит все равно дешевле чем покупать хранилище, + меньше точек отказа. А если все совсем серьезно то покупать надо две схд, так все равно дешевле выходит, а для дома можно либо 180 дневную скачать либо торрент edition, что бы пощупать технологию.

Есть же Линуксовые продукты , типа freeNas . Из старых серверов можно собрать неплохие NAS .

А виртуальные диски для этого не подходят? Попробовал тоже самое VMware Workstation. При воде командлета Enable-ClusterStorageSpacesDirect. Ошибка нет подходящих дисков.

Проверьте, какой тип шины возвращается для этих дисков:
Get-Disk | select Number, FriendlyName, OperationalStatus, Size, PartitionStyle, BusType | sort Number | ft -AutoSize
+Диски должны быть неотформатированными…

BusType возвращается как SATA. PartitionStyle как RAW. Все равно выдает ошибку: имеет неподдерживаемый тип носителя

Выполнилие команду
get-physicaldisk
Убедитесь, что у диска отсуствет серийный номер (поле SerialNumber пустое). Он нужен, чтобы S2D собрал диски в пул.
Отредактируйте конфигурационный файл диска VMX и добавьте строку
disk.EnableUUID=”true”
Перезагрузите ВМ и убедитесь, что у диска появился серийный номер
После этого кластерное хранилище должно собраться

Доброго дня. Угуглился, решения так и не нашел. Не знаете ли вы решения как установить UUID для vhdx диска? Hyper-V на 2012r2, гость 2016.
Эксперементирую на виртуалках.

2Max
К сожалению, я тоже не знаю, как изменить UUID для виртуального диска. Опишите ваш сценарий, зачем вам понадоилась смена UUID, может смогу предложить какой-то другой вариант.

Хотел собрать S2D хранилище на виртуалках, проверить отказоустойчивость и тд и тп, прежде чем заказывать пару одинаковых VDS в датацентре.

Т.е. планируется перенос тестовой среды в продакш? Наверно придется добавить в S2D кластер новые диски / сервера, и после окончания синхронизации постепенно убрать старые диски их хранилища.

Планируется хотябы создать тестовую среду) Сейчас я этого не могу сделать, так как в S2D не добавляются диски, так как у них нет GUID. На ней провести тесты. Потом поднять аналогичный кластер на железе и перенести на него продакшн.
Но видимо придется все сразу делать на железе.

Чего хочу:
Взять 2 сервера DELL R640, нашпиговать ssd, в тч nvme + пара hdd и памятью.
Итого 5 raid1 на каждом сервер, SSD массив под системы, а 4 из них в S2D: , SSD под БД, SSD под хранилище Hyper-V, hdd под локальные бэкапы, 1 в резерве, возможно hot-swap или кэш, не определился еще.

На этих же серверах поднять MSSQL AlwaysOn, на них же запускать виртуальные машины.
По идее получу и HA и failover решение.

Был опыт сборки S2D стенда на базе виртуальных машин VMware с SCSI контролером в режиме Physical SCSI Bus Sharing. Соотвественно, нужно поменить один из виртуальных дисков как SSD (Vmware это умеет).

Интересая вещь, но подскажите:
Есть серверы, на каждом по одному контроллеру рейд.
Я захожу в конфигурацию — выставляю режим JBOD.
Вопрос: а куда мне ставить Windows, если у меня контроллер в режиме JBOD, на один из дисков, тогда не будет отказоустойчивости для диска с ОС!?

Да, отказоустойчивости хостовой ОС не будет. Желательно использовать RAID под диски ОС.

Т.е. отдельный RAID controller? Я ни разу не собирал в режиме JBOD, но я правильно понял, что нельзя их совмещать?
Но этот отдельный диск под ОС уже не будет участвовать в этом JBOD массиве?

JBOD и Raid взаимоисключающие вещи. Но скорее всего, раз ваш контроллер поддерживает JBOD, то и raid 1 как минимум он должен уметь создавать.
Зачем вам, собственно JBOD, понадобился?

Тут то и затык! Если собрать рейд 1 из двух дисков под ОС, а остальные диски оставить просто unassigned (или как-там называется? В разных контроллерах по разному), то Винда не даст собрать S2D, она не увидит дисков. А я надеялся на такой вариант.

Так что если хотим — S2D, то переводим контроллер в режим JBOD, получаем S2D, теряем отказоустойчивость для диска с ОС..

Или использовать встроенные средства ОС и собрать зеркало.

На серверах нужно установить следующие компоненты: роли Hyper-V, File Services и фичу Failover Clustering

а зачем роль Hyper-V на нодах? Впервые вижу что она нужна.
У кого получилось подня тест.стенд на ВМ под ЕСХи?

как бы оно для этого и делалось, чтобы на хостах виртуализации было общее отказоустойчивое хранилище для ВМ

Подскажите пжл, что делать если get-physicaldisk |ft mediatype Выдает Unspecified, на подключенные диски, и не хочет enable-clusterS2d ?
на этих же нодах до этого подключались iscsi диски, может с этим связано.

попробуйте задать тип диска вручную
Set-PhysicalDisk -UniqueId «hd-uid» -MediaType SSD
или
Set-PhysicalDisk -UniqueId «hd-uid» -MediaType HDD

+ CategoryInfo : InvalidOperation: (StorageWMI:ROOT/Microsoft/…_StorageCmdlets) [Set-PhysicalDisk], CimException
+ FullyQualifiedErrorId : StorageWMI 1,Set-PhysicalDisk

Если в пул объединять то -MediaType меняет, а просто у дисков нет.

дополню, после объединения дисков в пул, выполнил
Get-Physicaldisk | where size -gt 506870912000 | Set-PhysicalDisk –MediaType HDD
а уже после
Enable-ClusterS2D
все прошло.

Отлично, что разобрались и оставили решение здесь 🙂

Подскажите, пожалуйста, при включении S2D процесс зависает на 15%

Enable-ClusterStorageSpacesDirect -Verbose
Выполнено 0/1
[ ]
Включение локальных дисковых пространств кластера
Ожидание затребования физических дисков
[ooooooooooooooo ]

Enable-ClusterStorageSpacesDirect -Verbose
ПОДРОБНО: 2019/01/16-15:54:04.821 Подтверждение поддержки S2D на всех узлах
ПОДРОБНО: 2019/01/16-15:54:04.821 Запрос сведений о хранилище
ПОДРОБНО: 2019/01/16-15:54:05.680 Сортированные типы дисков (от быстрого к медленному): HDD. Число типов: 1
ПОДРОБНО: 2019/01/16-15:54:05.680 Подтверждение поддержки необходимого состояния кэша на узлах
ПОДРОБНО: 2019/01/16-15:54:05.696 Подтверждение поддержки необходимого состояния кэша всеми дисками
ПОДРОБНО: 2019/01/16-15:54:06.961 Отключение ресурса работоспособности
ПОДРОБНО: 2019/01/16-15:54:07.367 Создание ресурса работоспособности
ПОДРОБНО: 2019/01/16-15:54:07.524 Настройка свойств кластера
ПОДРОБНО: 2019/01/16-15:54:07.524 Задание сведений о состоянии домена сбоя по умолчанию в подсистеме кластерного
хранилища
ПОДРОБНО: 2019/01/16-15:54:07.633 Ожидание затребования физических дисков
ПОДРОБНО: 2019/01/16-15:54:10.649 Число затребованных дисков на узле «DEV-16-HC-001»: 0/14
ПОДРОБНО: 2019/01/16-15:54:10.649 Число затребованных дисков на узле «DEV-16-HC-002»: 0/6

В отчет тестирования кластера есть следующие строчки:

На узле «DEV-16-HC-002.apkholding.ru» найден диск с неподдерживаемым типом носителя. Поддерживаемые типы носителей: SSD и HDD.
На узле «DEV-16-HC-001.apkholding.ru» найден диск с неподдерживаемым типом носителя. Поддерживаемые типы носителей: SSD и HDD.

Перед этим по совету Василия я добавлял диски в пул и изменял тип командой

Get-Physicaldisk | where size -gt 506870912000 | Set-PhysicalDisk –MediaType HDD

В результате тип изменился на HDD, но S2D все равно не создается.

Судя по логу на первом сервере 14 дисков, на втором — 6. Возможно какие-то диски не поддерживаются. Диски физические или логические (вы не собирали из них RAID на уровне контроллера сервера?)
Что возвращает на обоих серверах команда
Get-PhysicalDisk –CanPool $True | Sort Model

В Server 2019 ужесточили требования к железу. Если посмотреть лог там будет что-то вроде «your hardware is not tested and not supported». Перед включением S2D попробуйте сделать следующее на каждой ноде кластера:
New-ItemProperty «HKLM:\SYSTEM\CurrentControlSet\Services\ClusSvc\Parameters» -Name S2D -Value 1 -PropertyType DWORD -Force

После этого заново запустите Enable-ClusterS2D. Хочу предупредить что это неподдерживаемое решение и не рекомдуется в продуктовой среде

Диски физические, подключены через RAID контроллер Adaptec 5805 в режиме jbod.

PS C:\Windows\system32> Get-PhysicalDisk –CanPool $True | Sort Model

FriendlyName SerialNumber CanPool OperationalStatus HealthStatus Usage Size
———— ———— ——- —————— ———— —— —-
Hitachi HDS722020ALA330 JK1131YAGB6DRV True OK Healthy Auto-Select 1.82 TB
Hitachi HDS722020ALA330 JK1131YAG0PAES True OK Healthy Auto-Select 1.82 TB
Hitachi HDS722020ALA330 JK1121YAG5RJDS True OK Healthy Auto-Select 1.82 TB
Hitachi HDS722020ALA330 JK1131YAG0MDLS True OK Healthy Auto-Select 1.82 TB
HITACHI HUS153014VLS300 JNVLAZLC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVG3H8C True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVLPLHC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVES49C True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVG2X3C True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVM00RC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVG8HMC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVK944C True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVLXHMC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JNVLYTJC True OK Healthy Auto-Select 136.81 GB

PS C:\Windows\system32> Get-PhysicalDisk –CanPool $True | Sort Model

FriendlyName SerialNumber CanPool OperationalStatus HealthStatus Usage Size
———— ———— ——- —————— ———— —— —-
HITACHI HUS153014VLS300 JFYUGUNC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JFYU9R7C True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JFYUGTTC True OK Healthy Auto-Select 136.81 GB
HITACHI HUS153014VLS300 JFYUNNNC True OK Healthy Auto-Select 136.81 GB
SEAGATE ST3146356SS 3QN4NGRS00009130KJU9 True OK Healthy Auto-Select 136.61 GB
SEAGATE ST3146356SS 3QN4Q51X00009130KJYH True OK Healthy Auto-Select 136.61 GB

Возвращает ли какие-то ошибки тест валидации кластера?
У меня была похожая проблема, в журнале встречалась ошибка Even ID 200 «Windows was unable to read the disk header for physical disk «.
В моем случае, оказалось, что хранилище не собиралось из-за того, что на трех серверах WS2016 была установлена в режиме Legacy, после переустановки ОС в нативном UEFI режиме проблема пропала.

Тест валидации показывает такие ошибки:
На узле «DEV-16-HC-002.apkholding.ru» найден диск с неподдерживаемым типом носителя. Поддерживаемые типы носителей: SSD и HDD.
На узле «DEV-16-HC-001.apkholding.ru» найден диск с неподдерживаемым типом носителя. Поддерживаемые типы носителей: SSD и HDD.

Железо старое, UEFI не поддерживается.

1) Есть ли ошибки в тесте:
test-cluster -include «Storage Spaces Direct»
2) Обновите по максимому firmware и драйвера (мать, контроллеры) на серверах.
Также возможно, что ваш контроллер просто не поддерживается S2D.
Требования к железу для S2D описаны в статье:
_https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/storage-spaces-direct-hardware-requirements

Количество дисков на нодах должно быть одинаковым. Иначе у вас будет использоваться только наименьшее количество дисков

Отказ двух дисков или двух серверов поддерживается только для лунов с резервированием Dual-Parity или Three-Way-Mirror. В остальных случаях — 1 диск/нода.
Еще хотелось бы сказать пару слов про файловую систему: если очень хочется использовать ReFS и держать виртуальные машины в кластере (HCI сценарий), необходимо чтобы количество лунов было равно количеству серверов, и необходимо сделать так, чтобы ВМ использующие некий лун должны располагаться на ноде владельце луна — при использовании ReFS CSV работает в режиме FileSystemRedirected, что означает: все операции записи на лун будут идти через его владельца

небольшой трюк позволяющий в реестре изменить тип шины на SATA для нужного типа контроллера:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\arcsas\Parameters
«BusType»=dword:0000000b (вместо 00000008)

— Не рабочий трюк.
Вот рабочий (get-cluster).S2DBusTypes=”0x100″

Спасибо! У меня кроме шины ещё MediaType был Unspecified, в итоге две волшебные команды помогли
Get-Physicaldisk | where CanPool -eq True | Set-PhysicalDisk -MediaType HDD
(get-cluster).S2DBusTypes=»0x100″

Спасибо огромное за статью!
Не знаете как по надежности данное решение?
особенно в сравнении с vmware vsan?

В моем окружении есть примеры внедрения как S2D, так и VSAN.
На мой взгляд VSAN навороченее и удобнее в управлении, но цена…
А как вариант подешевле S2D вполне себе ничего…

Читайте также:  Редактор контекстного меню рабочего стола windows 10
Оцените статью