Возникла проблема в отказоустойчивом кластере Windows Server 2016 (WSFC), на котором размещен экземпляр отказоустойчивого кластера SQL (FCI), использующий локальные дисковые пространства (S2D). На каждом сервере после успешного первоначального создания S2D автоматически добавляет неиспользуемый RAID-том в пул хранения (хотя S2D не может быть создан на RAID-томах и абсолютно настаивает на неиспользуемых дисках). Теперь он сломан именно из-за - насколько я мог понять - именно из-за этого. Как следствие, виртуальный диск отключен, что приводит к отключению всего кластера. Он не вернется в оперативный режим из-за отсутствия сетевого ресурса кластера. Рассматриваемые диски могут быть изъяты из обращения, но не удалены. Восстановление виртуального диска не выполняется, проверка совместимости кластера утверждает, что конфигурация неверна.
Это новая установка. Так что я мог просто удалить виртуальный диск, кластер или даже серверы и начать заново. Но прежде чем мы начнем продуктивно, мне нужно убедиться, что это больше не повторится. Система выстреливает в виртуальное колено и останавливается просто из-за ненужного и ошибочного добавления неподдерживаемого диска - это не платформа, которую мы можем развернуть. Поэтому в первую очередь мне нужен способ предотвратить это, а не ремонтировать его сейчас. Я предполагаю, что предотвращение захвата конфигурации S2D большего количества дисков, чем было создано, поможет. Стоимость потенциально большего ручного взаимодействия во время реальной замены диска незначительна для кластера, который мы здесь имеем. Однако, сколько бы я ни просматривал документацию, я не могу найти никакого способа контролировать это. Если я чего-то не упустил, ни Set-StoragePool, Set-VirtualDisk, ни Set-Volume не предлагают никаких параметров в этом отношении.
Приветствуется любая помощь или подсказка.
Ниже приводится лишь более подробная информация о вышеизложенном: У нас есть 2 серверных машины HPE DL380 Gen9, дважды подключенных друг к другу через RDMA 10 ГБ Ethernet и через 1 ГБ к клиентской сети. Каждая особенность RAID-контроллера HP ??? а простой HBA-контроллер HP ??? (поскольку S2D абсолютно требует и работает только с напрямую подключенными, необработанными дисками). Конфигурация хранилища включает OS-RAID на RAID-контроллере, Files-RAID на RAID-контроллере и набор непосредственно подключенных дисков на HBA, предназначенных для S2D.
Я установил 2 Windows Server 2016 для центра обработки данных на OS-RAID, установил функцию WSFC, запустил и прошел тест на совместимость кластера, включая вариант S2D, создал кластер без хранилища, добавил файловый ресурс-свидетель (на отдельной машине), включил S2D в пуле хранения, который автоматически состоит из всех нерассматриваемых дисков, и поверх этого пула создал виртуальный диск зеркального типа и использовал NTFS в качестве файловой системы, поскольку предполагается, что это FS выбора для SQL FCI монтаж.
Затем я установил стандартную версию SQL 2016 в качестве FCI в этом кластере, импортировал базу данных и все это протестировал. Все было отлично. База данных была здесь и быстрее, чем когда-либо. Принудительное, а также автоматическое переключение при отказе было проще простого. Все выглядело хорошо.
На следующий день мы попытались использовать оставшийся Files-RAID. Первым делом нужно было изменить уровень RAID, так как предварительная конфигурация нам не понравилась. Вскоре после удаления предварительно настроенного тома RAID и создания нового (на каждом сервере) мы обнаружили, что кластер не работает. Из того, что я смог выяснить до сих пор, предварительно настроенный том Files-RAID был тем временем автоматически добавлен в пул, и, поскольку мы только что удалили его, теперь он отсутствовал в пуле. Пока я проверял, я обнаружил, что новый Files-RAID, который все еще создается, уже показан как физический диск пула. Таким образом, пул теперь включал по 2 тома RAID на каждом сервере, один из которых даже не существовал. Эти тома (но не их диски) перечисляются Get-PhysicalDisk вместе с фактически физическими дисками на HBA, не уверен, что это обычные. Сам пул по-прежнему находится в сети и не жалуется, однако виртуальный диск не просто деградирует из-за отсутствия дисков, но полностью отключен (и, как следствие, весь кластер).
Мне удалось отключить эти физические диски (то есть те, которые на самом деле являются томами RAID), и теперь они помечены как списанные. Но они все еще в пуле, и я не могу удалить их сейчас, попытка сделать это не удалась. Repair-VirtualDisk должен восстановить виртуальный диск до надлежащего состояния только на оставшихся дисках (я пошел следующим образом: https://social.technet.microsoft.com/Forums/windows/en-US/dbbf317b-80d2-4992-b5a9-20b83526a9c2/storage-spaces-remove-physical-disk?forum=winserver8gen), но эта работа тут же окончена, "успешно" конечно, без всякого эффекта.
Попытка переключить виртуальный диск обратно в оперативный режим завершается неудачно, так как ресурс сетевого кластера недоступен. Насколько я понимаю, это может относиться только к (доступному) пулу хранения, поскольку отсутствующие диски не являются ресурсами кластера. В пуле нет ошибок, которые нужно исправить. При выполнении теста совместимости кластера утверждается, что конфигурация не подходит для кластера.
Я не могу найти ни одной оставшейся части, которая сдвинулась бы еще на дюйм, все выглядит навсегда в тупике. Есть идеи о том, как предотвратить ... работающий WSFC такой ...
Я не встречал ни одного сообщения об ошибке, которое я нашел особенно поучительным, и я не хотел еще больше бомбить страницу, публикуя их все. Если кто-то хочет узнать подробности, просто дайте мне знать.
Спасибо за уделенное время, ребята!
Карстен
Обновление по запросу мистера Малины
Да, вы можете отключить автоматическое объединение. Опыт невысокий, но, безусловно, выполнимый и поддерживаемый. Имя параметра и пример синтаксиса командлета находятся в разделе Параметры этого общедоступного документа:
https://technet.microsoft.com/en-us/windows-server-docs/failover-clustering/health-service-overview
По сути, запустите это как администратор:
Get-StorageSubSystem Cluster * | Set-StorageHealthSetting -Name "System.Storage.PhysicalDisk.AutoPool.Enabled" -Value False
Надеюсь это поможет! - Cosmos (@cosmosdarwin), Microsoft PM
Обходной путь, который я нашел для этой проблемы, - изменить тип шины томов или дисков RAID, изменив его с одного из поддерживаемых типов на неподдерживаемый.
Вам нужно будет определить драйвер контроллера из диспетчера устройств, а затем зайти в реестр и найти имя драйвера в расположении ниже.
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services\ SmartPqi \ Параметры
В моем случае я изменил ключ реестра, соответствующий SAS, на RAID
«BusType» = 0x00000008 (RAID) (вместо 0x0000000a) (SAS)
перезагрузите машину
После этого изменения у вас может быть пул хранения в подсистеме хранилища Windows вместо кластерных дисковых пространств.
Будьте осторожны, если вы хотите применить этот тип обходного пути, поскольку это не проверенное решение и может подвергнуть вашу производственную среду высокому риску.