Дано:
Сервер c Solaris 10 на борту и HBA Qlogic. К нему по FC подключено хранилище и презентовано 2 новых LU.
Задача:
Пересканировать LUN, желательно без выключения HBA и перезагрузки сервера, чтобы не прервать работу приложений.
Как это сделать?
Существует несколько решений, в зависимости от ситуации и и окружения. Я же опишу те, которые мне известны. Не все они гарантированно сработают в вашей среде, но шанс того, что хотя бы одно позволит добиться необходимого результата довольно высок. Решения я проверял на Solaris 10, но некоторые будут работать и на Solaris 7-9, с некоторыми поправками.
Если Вам интересны найденные мной решения — прошу под кат.
Первое:
Если у Вас Solaris 8, 9 или 10 и HBA Qlogic, как у меня, то обычно достаточно запустить следующую команду
cfgadm –al
cfgadm позволяет управлять динамически-изменяемыми аппаратными ресурсами сервера.
ключ –l позволяет вывести статус устройств.
ключ –а указывает, чтобы –l так же вывел список динамических ресурсов.
Всё, диски уже появились:
Второе
К этому шагу есть смысл приступать, если первый результатов не дал. Вводим в консоли:
luxadm probe –p
luxadm отвечает за управление FC AL устройствами и выполняет различные команды управления и опроса оборудования
Подкоманда probe выполняет поиск и отображает все FC устройства.
Ключ –p дополнительно к probe выводить физические пути для найденных устройств. Полезно для диагностики зонирования SAN сети и проверки доступности путей.
Третье
Если предыдущие решения не помогли, то продолжаем:
devfsadm -c disk
devfsadm содержит пространство имен /dev и заменяет собой устаревший набор приложений из пакета devfs, включая drvconfig, disks, tapes, ports и еще парочку.
Ключ –c ограничивает типы устройств, которые нужно опросить и требует явно указать ему, что проверять. В моём случае – это тип disk
После этой операции диски тоже обычно появляются.
Четвертое
Команду cfgadm я описывал чуть выше. Я вынес это в отдельное решение потому, что тут потребуется немного больше действий для добавления устройства и несколько больше вариантов.
1. cfgadm -c configure cХ
или
2. cfgadm -c configure cX::216000c0ff804351
или
3. cfgadm -o force_update -c configure cX
Ключ –c отвечает за функции изменения состояния устройств на каналах.
Параметр configure выполняет конфигурацию аппаратного обеспечения, чтобы оно могло использоваться в ОС Solaris.
Ключ –o позволяет передать определённые опции к аппаратному компоненту, в нашем случае это force_update, которая выполняет принудительное обновление.
Теперь о вариантах подробнее:
В первом варианте, вместо ”cX”, нужно указать номер канала, на котором расположено нужное устройство, для этого вернёмся к картинке из первого способа:
Допустим это будет канал 2, тогда команда будет выглядеть следующим образом:
cfgadm -c configure c2
В варианте 2 мы уточняем, какое именно устройство нужно настроить:
cfgadm -c configure c2::216000c0ff804351
В третьем варианте мы указываем системе принудительно обновить конфигурацию устройства:
cfgadm -o force_update -c configure c2
или даже так
cfgadm -o force_update -c c2::216000c0ff804351
После всех этих манипуляций обязательно потребуется выполнить команду:
devfsadm -c disk
Пятое
Перезагрузить драйвер HBA, этот метод уже может быть связан с небольшим простоем.
В случае Qlogic перезагрузка драйвера вызывается следующей командой:
update_drv qlc
или
update_drv -f qlc
update_drv как раз отвечает за пересканирование настроек драйвера.
Параметр –f заставляет принудительно перечитать конфигурацию драйвера, даже если модуль не может быть выгружен из ядра. (При этом сам модуль драйвера из ядра не выгружается)
Шестое
Как бы банально это не звучало – перезагрузите сервер.
Чтобы сообщить ОС Solaris о необходимости просканировать все устройства при загрузке можно использовать следующие методы:
А) В загруженной ОС
touch /reconfigure
init 6
B) Из загрузчика OpenBoot сервера указать команду:
boot -r
Возможно тем, кто работает с ОС Solaris эти ответы покажутся совсем простыми или явными. Но моё знакомство с Solaris довольно ограниченное, так что данные советы вполне могут пригодиться и другим людям начинающим работать с Solaris серверами.