Next revision | Previous revision |
storage_spaces_direct_-_настройка [2022/05/06 07:48] – created jp | storage_spaces_direct_-_настройка [2024/09/25 12:33] (current) – jp |
---|
===== Настройка гиперконвергентного отказоустойчивого кластера Storage Spaces Direct ===== | ====== Настройка гиперконвергентного отказоустойчивого кластера Storage Spaces Direct ====== |
| |
'''1.''' Развертываем две ноды: настраиваем BIOS и оборудование, устанавливаем системы на отдельные RAID-массивы, подключаем в сети (heartbeat между нодами) и другие. | 1. Развертываем две ноды: настраиваем BIOS и оборудование, устанавливаем системы на отдельные RAID-массивы, подключаем в сети (heartbeat между нодами) и другие. |
| |
'''2.''' Обновляем прошивки, драйвера, а также устанавливаем одинаковый набор обновлений систем Windows. | 2. Обновляем прошивки, драйвера, а также устанавливаем одинаковый набор обновлений систем Windows. |
| |
'''3.''' Диски для Storage Spaces Direct должны быть directly attached, без всяких RAID-контроллеров и должны видеться в системе как обычные диски в диспетчере устройств. | 3. Диски для Storage Spaces Direct должны быть directly attached, без всяких RAID-контроллеров и должны видеться в системе как обычные диски в диспетчере устройств. |
| |
'''4.''' Устанавливаем на каждой ноде нужный набор ролей и фич: | 4. Устанавливаем на каждой ноде нужный набор ролей и фич: |
| |
| <WRAP prewrap> |
<code> | <code> |
Install-WindowsFeature -Name "Hyper-V", "Failover-Clustering", "Data-Center-Bridging", "RSAT-Clustering-PowerShell", "Hyper-V-PowerShell", "FS-FileServer", "FS-Data-Deduplication" | Install-WindowsFeature -Name "Hyper-V", "Failover-Clustering", "Data-Center-Bridging", "RSAT-Clustering-PowerShell", "Hyper-V-PowerShell", "FS-FileServer", "FS-Data-Deduplication" |
</code> | </code> |
| </WRAP> |
| |
'''5.''' MS рекомендует использовать скрипт очистки дисков, которые будут участвовать в массиве. Этот скрипт рассчитан на удаленное использование. | 5. MS рекомендует использовать скрипт очистки дисков, которые будут участвовать в массиве. Этот скрипт рассчитан на удаленное использование. |
| |
| <WRAP prewrap> |
<code> | <code> |
# Fill in these variables with your values | # Fill in these variables with your values |
} | Sort -Property PsComputerName, Count | } | Sort -Property PsComputerName, Count |
</code> | </code> |
| </WRAP> |
| |
'''6.''' Настраиваем heartbeat-сеть кластера. В случае двух нод с двумя 25-гигабитными адаптерами можно подключить каждый к противоположному (по крайней мере, HP рекомендует делать именно так) и сделать две разных сети. В настройках адаптеров и настройках BIOS выставляем iWARP в качестве network-direct technology. Переименовываем адаптеры для наглядности в CLUSTER_1 и CLUSTER_2. CLUSTER_1 одного сервера будет подключен в CLUSTER_2 другого и наоборот. | 6. Настраиваем heartbeat-сеть кластера. В случае двух нод с двумя 25-гигабитными адаптерами можно подключить каждый к противоположному (по крайней мере, HP рекомендует делать именно так) и сделать две разных сети. В настройках адаптеров и настройках BIOS выставляем iWARP в качестве network-direct technology. Переименовываем адаптеры для наглядности в CLUSTER_1 и CLUSTER_2. CLUSTER_1 одного сервера будет подключен в CLUSTER_2 другого и наоборот. |
| |
На всякий случай включаем RDMA явно, командлетом на обоих нодах: | На всякий случай включаем RDMA явно, командлетом на обоих нодах: |
На сайте Microsoft есть скрипт, который проверяет работу RDMA. В инструкции, которая приложена к статье описывается его выполнение. Сначала нужно скачать DiskSpd.exe, а потом выполнить команду (для iWARP -IsRoCE должно быть именно ''false''): | На сайте Microsoft есть скрипт, который проверяет работу RDMA. В инструкции, которая приложена к статье описывается его выполнение. Сначала нужно скачать DiskSpd.exe, а потом выполнить команду (для iWARP -IsRoCE должно быть именно ''false''): |
| |
| <WRAP prewrap> |
<code> | <code> |
C:\TEST\Test-RDMA.PS1 -IfIndex 3 -IsRoCE $false -RemoteIpAddress 10.5.5.2 -PathToDiskspd C:\TEST\Diskspd-v2.0.17\amd64fre\ | C:\TEST\Test-RDMA.PS1 -IfIndex 3 -IsRoCE $false -RemoteIpAddress 10.5.5.2 -PathToDiskspd C:\TEST\Diskspd-v2.0.17\amd64fre\ |
</code> | </code> |
| </WRAP> |
| |
Скрипт тестирует запись на удаленный сервер при помощи RDMA. В нашем случае скрипт создал файл, успешно передавал данные, но по какой-то причине в конце выдавал странную ошибку о том, что нет прав на запись. Но трафик по RDMA шёл и данные отлично передавались, о чем можно посмотреть было в системном мониторе по группе показателей RDMA. Т.е., на ошибку можно забить потому что данные передаются вполне успешно и передаются именно с использованием RDMA. | Скрипт тестирует запись на удаленный сервер при помощи RDMA. В нашем случае скрипт создал файл, успешно передавал данные, но по какой-то причине в конце выдавал странную ошибку о том, что нет прав на запись. Но трафик по RDMA шёл и данные отлично передавались, о чем можно посмотреть было в системном мониторе по группе показателей RDMA. Т.е., на ошибку можно забить потому что данные передаются вполне успешно и передаются именно с использованием RDMA. |
| |
'''7.''' Производим валидацию кластера со станции управления. Кстати, на ней должен быть установлен RSAT с компонентами администрирования кластера. Проверяем получившийся html-отчёт и если там нет проблем - идем дальше. | 7. Производим валидацию кластера со станции управления. Кстати, на ней должен быть установлен RSAT с компонентами администрирования кластера. Проверяем получившийся html-отчёт и если там нет проблем - идем дальше. |
| <WRAP prewrap> |
<code> | <code> |
Test-Cluster -Node node1, node2 -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration" | Test-Cluster -Node node1, node2 -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration" |
</code> | </code> |
| </WRAP> |
| |
'''8.''' Создаем новый кластер с новым статическим адресом и именем. Без общего стораджа, он создается отдельно. | 8. Создаем новый кластер с новым статическим адресом и именем. Без общего стораджа, он создается отдельно. |
| |
<code> | <code> |
</code> | </code> |
| |
'''9.''' Если кластер имеет чётное количество нод, то обязательно сделать witness. Это довольно удобно делать через mmc-оснастку управления кластером. В нашем случае был выбран файловый ресурс на серерве [[sql03]]. В права файлового ресурса обязательно нужно добавить учетные записи нод кластера и аккаунт самого кластера с полным доступом. | 9. Если кластер имеет чётное количество нод, то обязательно сделать witness. Это довольно удобно делать через mmc-оснастку управления кластером. В нашем случае был выбран файловый ресурс на серерве [[sql03]]. В права файлового ресурса обязательно нужно добавить учетные записи нод кластера и аккаунт самого кластера с полным доступом. |
| |
Посмотреть конфигурацию witness можно используя командлет: | Посмотреть конфигурацию witness можно используя командлет: |
В выводе нужно поискать значение параметра ''NodeWeight''. | В выводе нужно поискать значение параметра ''NodeWeight''. |
| |
'''10.''' Включаем Storage Spaces Direct для кластера командой: | 10. Включаем Storage Spaces Direct для кластера командой: |
| |
<code> | <code> |
</code> | </code> |
| |
'''11.''' Создаем шаблон стораджа, который мы хотим использовать. Для нашего кластера был выбран nested mirror - сервера зеркалируют друг друга, плюс в каждом массиве каждого сервера есть зеркало. Такой шаблон оставляет для использования лишь 25% общей ёмкости дисков, но является во-первых достаточно надёжным и позволяет кластеру одновременно выдержать два аппаратных сбоя сразу: например, сервер и диск, два диска и т.д., а во-вторых такая конфигурация является более производительной, чем, например, nested mirror accelerated parity, где полезная ёмкость дисков составляет 35-40 процентов, а отказоустойчивость организуется по типу RAID 5. | 11. Создаем шаблон стораджа, который мы хотим использовать. Для нашего кластера был выбран nested mirror - сервера зеркалируют друг друга, плюс в каждом массиве каждого сервера есть зеркало. Такой шаблон оставляет для использования лишь 25% общей ёмкости дисков, но является во-первых достаточно надёжным и позволяет кластеру одновременно выдержать два аппаратных сбоя сразу: например, сервер и диск, два диска и т.д., а во-вторых такая конфигурация является более производительной, чем, например, nested mirror accelerated parity, где полезная ёмкость дисков составляет 35-40 процентов, а отказоустойчивость организуется по типу RAID 5. |
| |
| <WRAP prewrap> |
<code> | <code> |
New-StorageTier -StoragePoolFriendlyName S2D* -FriendlyName NestedMirror -ResiliencySettingName Mirror -MediaType SSD -NumberOfDataCopies 4 | New-StorageTier -StoragePoolFriendlyName S2D* -FriendlyName NestedMirror -ResiliencySettingName Mirror -MediaType SSD -NumberOfDataCopies 4 |
</code> | </code> |
| </WRAP> |
| |
'''12.''' После создания шаблона мы можем переходить к созданию конкретных разделов, которые будут использоваться для хранения данных. Для того, чтобы понять - какого максимального размера раздел мы сможем создать - лучше подключиться к кластеру при помощи Windows Admin Center и посмотреть, сколько места дисков осталось незарезервированным. Storage Spaces резервирует определенное количество места для нужд восстановления на горячую. Т.е. если в кластере вылетит один из дисков, а новый не будет сразу же воткнут "на горячую" - кластер использует это зарезервированное пространство для восстановления. Итого: нам нужно посмотреть незанятое место и разделить в нашем случае на 4, т.к. nested mirror позволит использовать 25 процентов. Затем мы запускаем создание раздела командой, в которой указываем созданный выше шаблон, название раздела и его объем: | 12. После создания шаблона мы можем переходить к созданию конкретных разделов, которые будут использоваться для хранения данных. Для того, чтобы понять - какого максимального размера раздел мы сможем создать - лучше подключиться к кластеру при помощи Windows Admin Center и посмотреть, сколько места дисков осталось незарезервированным. Storage Spaces резервирует определенное количество места для нужд восстановления на горячую. Т.е. если в кластере вылетит один из дисков, а новый не будет сразу же воткнут "на горячую" - кластер использует это зарезервированное пространство для восстановления. Итого: нам нужно посмотреть незанятое место и разделить в нашем случае на 4, т.к. nested mirror позволит использовать 25 процентов. Затем мы запускаем создание раздела командой, в которой указываем созданный выше шаблон, название раздела и его объем: |
| |
| <WRAP prewrap> |
<code> | <code> |
New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Volume01 -StorageTierFriendlyNames NestedMirror -StorageTierSizes 5900GB | New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Volume01 -StorageTierFriendlyNames NestedMirror -StorageTierSizes 5900GB |
</code> | </code> |
| </WRAP> |
| |
'''13.''' Теперь общий раздел будет доступен для записи на всех нодах по следующему пути: ''c:\ClusterStorage\Volume01''. Раздел создается в файловой системе ReFS по умолчанию. Она сильно оптимизирована как для Storage Spaces, так и для задач виртуализации HYPER-V. | 13. Теперь общий раздел будет доступен для записи на всех нодах по следующему пути: ''c:\ClusterStorage\Volume01''. Раздел создается в файловой системе ReFS по умолчанию. Она сильно оптимизирована как для Storage Spaces, так и для задач виртуализации HYPER-V. |
| |
'''14.''' Для ускорения операций чтения стоит настроить CSV in-memory read cache. Размер обычно используют в районе 2ГБ, но т.к. на серверах нет нехватки в памяти, было решено поставить 4ГБ на каждом. Скрипт, который можно использовать на станции управления, подключаясь к кластеру удаленно: | 14. Для ускорения операций чтения стоит настроить CSV in-memory read cache. Размер обычно используют в районе 2ГБ, но т.к. на серверах нет нехватки в памяти, было решено поставить 4ГБ на каждом. Скрипт, который можно использовать на станции управления, подключаясь к кластеру удаленно: |
| |
<code> | <code> |
</code> | </code> |
| |
'''15.''' После создания дискового раздела - не лишним будет измерить его производительность. Для этого лучше использовать утилиту от MS DiskSpd. Некоторые другие утилиты могут показывать неадекватные результаты, поскольку, не умеют работать с CSV-in memory cache. Скачиваем утилиту и запускаем с такими параметрами: | 15. После создания дискового раздела - не лишним будет измерить его производительность. Для этого лучше использовать утилиту от MS DiskSpd. Некоторые другие утилиты могут показывать неадекватные результаты, поскольку, не умеют работать с CSV-in memory cache. Скачиваем утилиту и запускаем с такими параметрами: |
| |
| <WRAP prewrap> |
<code> | <code> |
.\diskspd -t2 -o32 -b4k -r4k -w50 -d120 -Sh -D -L -c5G C:\ClusterStorage\Volume01\IO2.dat > test02.txt | .\diskspd -t2 -o32 -b4k -r4k -w50 -d120 -Sh -D -L -c5G C:\ClusterStorage\Volume01\IO2.dat > test02.txt |
</code> | </code> |
| </WRAP> |
| |
В данном случае процент операций записи и чтения будет составлять 50% - за это отвечает параметр ''-w50''. Результаты можно посмотреть в текстовом файле. В самом конце они разбиты на чтение, запись и полную сумму. Производительность хранилища вышла: 81393.54 I/O per s. Утилиту можно использовать на любых дисках, не обязательно массивах Storage Spaces Direct. | В данном случае процент операций записи и чтения будет составлять 50% - за это отвечает параметр ''-w50''. Результаты можно посмотреть в текстовом файле. В самом конце они разбиты на чтение, запись и полную сумму. Производительность хранилища вышла: 81393.54 I/O per s. Утилиту можно использовать на любых дисках, не обязательно массивах Storage Spaces Direct. |
| |
'''16.''' После создания радела стоит включить функцию дедупликации данных, которая позволяет не записывать дубликаты данных, экономя место. Удобно это сделать через WAC в свойствах раздела. Если соответствующая роль ("FS-Data-Deduplication") на обоих нодах была установлена - нужно только отметить соответствующий переключатель, после чего функция заработает. | 16. После создания радела стоит включить функцию дедупликации данных, которая позволяет не записывать дубликаты данных, экономя место. Удобно это сделать через WAC в свойствах раздела. Если соответствующая роль ("FS-Data-Deduplication") на обоих нодах была установлена - нужно только отметить соответствующий переключатель, после чего функция заработает. |
| |
'''17.''' После создания кластера, виртуальные машины можно свободно перемещать между нодами. Выключение одной из нод вызовет автоматическое перемещение виртуальных машин на другую. После включения виртуальные машины вернутся обратно. | 17. После создания кластера, виртуальные машины можно свободно перемещать между нодами. Выключение одной из нод вызовет автоматическое перемещение виртуальных машин на другую. После включения виртуальные машины вернутся обратно. |
| |
'''18.''' Для обновления нод нужно использовать механизм cluster aware updating. Можно это делать через WAC. Для того, чтобы он не ругался на ошибку CredSPP - нужно обязательно сохранить свой аккаунт в WAC и отметить использование этих учётных данных для всех соединений. | 18. Для обновления нод нужно использовать механизм cluster aware updating. Можно это делать через WAC. Для того, чтобы он не ругался на ошибку CredSPP - нужно обязательно сохранить свой аккаунт в WAC и отметить использование этих учётных данных для всех соединений. |
| |
'''19.''' Корректную перезагрузку ноды кластера s2d следует осуществлять в таком порядке: | 19. Корректную перезагрузку ноды кластера s2d следует осуществлять в таком порядке: |
Проверить все ли диски в нормальном состоянии: | Проверить все ли диски в нормальном состоянии: |
<code> | <code> |
</code> | </code> |
| |
== Полезные ссылки == | === Полезные ссылки === |
| |
Основная статья по Storage Spaces Direct и всеми его аспектами MS: | Основная статья по Storage Spaces Direct и всеми его аспектами MS: |
https://techblog.ptschumi.ch/windows-server/storage-spaces-direct/deploy-storage-spaces-direct-on-two-node-cluster-with-windows-server-core/ | https://techblog.ptschumi.ch/windows-server/storage-spaces-direct/deploy-storage-spaces-direct-on-two-node-cluster-with-windows-server-core/ |
| |
== Файлы == | === Файлы === |
| |
| {{ ::настройка_сети_в_storage_spaces_-_microsoft.docx | Гайд по настройке сети от MS }}\\ |
| {{ ::рекомендация_hp_по_настройке_нод.pdf | Реокмендация по настройке нод от HP }} |
| |
[[attachment:Рекомендация HP по настройке нод.pdf]]\\ | {{tag>Microsoft StorageSpaces Storage PowerShell HPE}} |
[[attachment:Настройка сети в Storage Spaces - Microsoft.docx]]\\ | |