User Tools

Site Tools


storage_spaces_direct_-_настройка

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
storage_spaces_direct_-_настройка [2022/05/06 07:48] – created jpstorage_spaces_direct_-_настройка [2024/09/25 12:33] (current) jp
Line 1: Line 1:
-===== Настройка гиперконвергентного отказоустойчивого кластера 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
Line 34: Line 37:
 } | 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 явно, командлетом на обоих нодах: 
Line 71: Line 75:
 На сайте 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>
Line 88: Line 96:
 </code> </code>
  
-'''9.''' Если кластер имеет чётное количество нод, то обязательно сделать witness. Это довольно удобно делать через mmc-оснастку управления кластером. В нашем случае был выбран файловый ресурс на серерве [[sql03]]. В права файлового ресурса обязательно нужно добавить учетные записи нод кластера и аккаунт самого кластера с полным доступом.+9. Если кластер имеет чётное количество нод, то обязательно сделать witness. Это довольно удобно делать через mmc-оснастку управления кластером. В нашем случае был выбран файловый ресурс на серерве [[sql03]]. В права файлового ресурса обязательно нужно добавить учетные записи нод кластера и аккаунт самого кластера с полным доступом.
  
 Посмотреть конфигурацию witness можно используя командлет:  Посмотреть конфигурацию witness можно используя командлет: 
Line 104: Line 112:
 В выводе нужно поискать значение параметра ''NodeWeight''. В выводе нужно поискать значение параметра ''NodeWeight''.
  
-'''10.''' Включаем Storage Spaces Direct для кластера командой: +10. Включаем Storage Spaces Direct для кластера командой: 
  
 <code> <code>
Line 110: Line 118:
 </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>
Line 137: Line 149:
 </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>
Line 180: Line 194:
 </code> </code>
  
-== Полезные ссылки ==+=== Полезные ссылки ===
  
 Основная статья по Storage Spaces Direct и всеми его аспектами MS:  Основная статья по Storage Spaces Direct и всеми его аспектами MS: 
Line 202: Line 216:
 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]]\\+
storage_spaces_direct_-_настройка.1651823338.txt.gz · Last modified: 2022/05/06 07:48 by jp