В этой заметке хотелось бы описать одну небольшую, но(насколько мне известно) не описанную широко ошибку, с которой вы можете столкнуться, конфигурируя отказоустойчивый кластер MS SQL.
Итак, исходные условия - есть работоспособный кластер под управлением MS SQL 2017 и MS Windows server 2016. В нем несколько кластерных дисков, используемых для хранения БД, бэкапов и тп. В некоторый момент понадобилось добавть еще один кластерный диск. Диск был добавлен со стороны гипервизора, и по данным оснастки "Управление дисками" находился в состоянии оффлайн.
Далее, при попытке инициализировать диск, или выполнить любые другие действия через менеджер сервера, либо же соответствующую оснастку ОС - не следовало никаких ошибок или изменения статуса диска(т.е. действие просто не отрабатывало без любых проявлений, в том числе в логах).
В этом случае на помощь приходит PowerShell и его модуль Storage.
Этот модуль включает в себя 160 команд, и в будущем я напишу отдельную заметку по его использованию.
Итак, что же было сделано в данном случае?
Т.к. подключенный диск находился в состоянии offline, надо сначала идентифицировать его, и затем инициализировать.
Выполняем:
Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize
Данная команда выдает список дисков в состоянии offline, в нашем случае - всего один подключенный диск.
Далее переведем диск в онлайн, выполнив:
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
В реальном случае был просто подставлен конкретный номер диска, команда выше автоматически подставляет оффлайновые диски.
Инициализируем диск(его номер в системе - 5 ):
Initialize-Disk -Number 5
Далее, т.к. мы рассматриваем общий случай нужно определится, GPT или MBR будет использоваться.
По умолчанию на диске создается таблица разделов GPT (GUID), нужна именно MBR, выполняем -
Initialize-Disk 1 –PartitionStyle MBR
В нашем случае везде использовалась таблица GPT, поэтому этот шаг пропустили.
Далее все просто - создаем раздел с максимальным размером, назначив ему букву F ( это приципиальный шаг; проверьте, что буква диска не используется, и не используйте автоназначение - это может привести к конфликту с уже существующими дисками при переключении нод!)
New-Partition –DiskNumber 5 -AssignDriveLetter F –UseMaximumSize
Форматируем диск(для примера я дале ему метку NEW_DISC)
Format-Volume -DriveLetter F -FileSystem NTFS -NewFileSystemLabel NEW_DISC -Confirm:$false
Все, диск появляется в системе, и с ним можно работать.
В нашем случае, на этом этапе с диском стала корректно работать оснастка ОС, и далее он был переформатирован заново, исходя из требований кастера MS SQL(т.к. это не является темой этой заметки, опущу подробности).
Причина произошедшего осталась неясной, но если вы столкнетесь с подобной проблемой - PowerShell может помочь.