IPMI на кончиках пальцев: управление серверным парком со смартфона для продвинутых
Цикл материалов по IPMI на платформах Supermicro
- Управление платформами Supermicro по IPMI
- Удаленное управление платформами Supermicro с помощью утилиты IPMIView
- IPMIView: шифрование и безопасность
- Как мобильное приложение IPMIView помогает управлять серверами Supermicro
- IPMI на кончиках пальцев: управление серверным парком со смартфона для продвинутых
Можно сколь угодно долго спорить об использовании беспроводных технологий для удаленного управления серверным парком, но нельзя игнорировать сам факт — Wi-Fi и 3G прочно вросли в IT-инфраструктуру и стали агентами влияния в дата-центрах. В качестве примера достаточно вспомнить хотя бы стремительный рост беспроводных решений компании Aruba.
Разбираясь с тем, как мобильное приложение IPMIView помогает управлять серверами Supermicro, мы столкнулись с тонкой, буквально точечной, установкой параметров удаленного управления с помощью смартфона. Два аспекта этого подхода требуют ответа: когда стоит рассчитывать на помощь мобильной платформы Android (или iPhone) и кому эта помощь понадобится?
Ограниченная функциональность мобильного интерфейса говорит о том, что подобные безотлагательные меры нацелены на поддержание живучести и сохранение работоспособности серверной платформы. Из этого следует, что если недоступны блага привычной компьютерной инфраструктуры, только кризис-менеджеру придется прибегнуть к услугам мобильного приложения, да и то в полевых условиях. Кардинальным диагностическим средством для него станет режим командной строки, доступный в мобильной версии IPMIView.
В открытом доступе инструкций по использованию Raw Command до обидного мало, и нам пришлось изрядно потрудиться, чтобы расшить это узкое место в системе удаленного управления серверами Supermicro. Поделимся некоторыми находками с тем, чтобы выжать максимум из IPMIView.
Вычислить по IP
Для начала определимся, с какой из платформ серверного пула мы хотим общаться по IPMI. Мобильное приложение предлагает нам удобный интерфейс для этого, параллельно информируя о BMC-контроллере, реализующем удаленный интерфейс. В нашем случае SuperMicro X11SCL-F с локальным IP-адресом 192.168.1.42 оснащен чипом AST2500 c полным набором IPMI-сервисов.
Первой выполним шестандцатеричную raw-последовательность 0x06 и 0x37:
В ее начале легко угадывается ASCII-строка "3401MS", за которой следует ни что иное, как MAC-адрес ac:1f:6b:f9:5c:fa, дополненный нулями справа. Весь ответ BMC-контроллера представляет собой один из вариантов универсального уникального идентификатора, полученный по запросу «Get System GUID». А Completion Code: 00 — код возврата, свидетельствующий об успешном выполнении запроса. Заметим, что подстрока ac:1f:6b является вендорским кодом Super Micro Computer в системе кодирования MAC-адресов.
Тем, кто знаком с синтаксисом командной строки в Linux, вероятно, известно, что запрос ipmitool raw 0x06 0x37 тождественен запросу ipmitool bmc guid. Проверим это предположение в Windows, используя SMCIPMITool — проприетарную утилиту от Supermicro.
Структура запроса в SMCIPMITool несколько отличается от формата ввода Raw Command, используемой в мобильном приложении IPMIView. Смартфон заранее «знает» IP-адрес адресата, следовательно, логин и пароль повторно указывать нет нужды.
Запрос, функция, команда
После первого знакомства с HEX-кодами IPMI-интерфейса настало время разобраться в структуре его команд. Несмотря на то, что их синтаксис описан в спецификации IPMI v2.0, прикладное применение, с учетом особенностей реализации Supermicro, не вполне очевидно.
IPMI-интерфейс предполагает удаленный доступ в формате запросов, состоящих из команд. Команды унифицированы по синтаксису и содержат набор обязательных и опциональных полей, следующих в строгой очередности:
- NetFn (Network Function) — сетевая функция, объединяющая функциональные наборы команд по типам — ее младшие шесть битов являются индикатором функции, а старшие два бита — полем LUN, обеспечивающим дополнительную субадресацию внутри платформы; тем не менее, точный формат функции зависит от реализации конкретного устройства, за исключением сущностей, определенных спецификацией IPMI.
- cmd — уникальная команда в рамках указанной сетевой функции NetFn.
- subcmd — необязательное поле, которое в некоторых случаях используется, как расширение управляющей команды cmd.
- Request Data — одно или несколько необязательных полей, структура которых диктуется парой cmd|subcmd; варьируется от пустого поля до цепочки data0...data7.
- Response Data — поля результатов.
Двухбайтовый запрос
Прежде чем перейти к экспериментам со сложными HEX-командами, рассмотрим еще одну простенькую двухбайтовую конструкцию 0x30 и 0x0d:
Как видим, команда 0x0d относится к иному классу функций (0x30) и поле ее результатов не содержит данных (за исключением обязательного кода возврата Completion code). Задействовав ее, пользователь получает возможность управлять серверным пулом с помощью UID Control, как это описано в ранее опубликованной статье «Управление платформами Supermicro по IPMI». В отличие от предыдущей функции «Get System GUID», управление светодиодами приносит хотя бы какую-то пользу :)
Трехбайтовый запрос
Возьмем команду в трехбайтовом формате, ответственную на платформе SuperMicro X11SCL-F за ряд принципиальных обязанностей:
Функция 0x30 в сопряжении с командой 0x45 управляет сценариями использования вентиляторов. В ее формате отсутствует поле subcmd, а параметр 00 в поле data0 — запрос на информирование о режиме охлаждения. BMC-контроллер вернул значение 02, для интерпретации которого требуется следующая расшифровка:
- Standard
- Full
- Optimal
- PUE (Power Use Efficiency)
- Heavy IO
Указав в поле data0 параметр 01, мы можем в обязательном уже поле data1 выбрать требуемый уровень нагрузки из приведенного выше списка, и послать этот запрос на выполнение. Команда 0x30 0x45 0x01 0x04, например, установит самый нагруженный режим (Heavy IO) работы вентиляторов. Подытожим: «ноль» в поле data0 — означает, как правило, get, «единица» — set.
Четырехбайтовый запрос
Фактически, мы выше уже рассмотрели четырехбайтовый запрос к BMC-контроллеру через ввод Raw Command в мобильном приложении IPMIView. Более полную картину можно получить, ознакомившись с принципиально важными для управления командами IPMI-интерфейса. Начнем самого важного из них — запроса «IPMI LAN Mode».
Здесь впервые мы встречаем поле subcmd, которое для «IPMI LAN Mode» равно 0x0c. Следующий параметр data0, как сказано ранее, означает режим запроса (get). Результат может принимать одно из трех значений:
- Dedicated
- OnBoard
- FailOver (в нашем примере)
Эта же команда в этом же функциональном наборе, но с расширением 0x60, информирует нас о параметрах сетевого подключения:
Ответ платформы на запрос «Get Network Link Status» выглядит уже весьма пространно. Поле data0, как и в предыдущем случае, дает нам статус «IPMI LAN Mode». Поле data1 информирует об использовании выделенного сетевого порта (0 — dedicate, 1 — share). Следующие четыре байта отданы для оценки состояния от среды передачи — Media Independent Interface (MII):
- Auto-negotiation: 1(On)/0(Off)
- Duplex: 1(100M)/0(10M)
- Physical LAN port status: 1(connected)/0(disconnected)
- Speed: 1(100M)/0(10M)
Последние три байта демонстрируют состояние NCSI-интерфейса:
- Auto-negotiation: 1(On)/0(Off)
- Physical LAN port status: 1(connected)/0(disconnected)
- Speed and duplex:
- Auto-negotiate is not complete
- 10Base-T with half duplex
- 10Base-T with full duplex
- 100Base-T with half duplex
- 100Base-T
- 100Base-T with full duplex
- 1000Base-T with half duplex
- 1000Base-T with full duplex
- 10G Base-T support
- Reserved
Воспользовавшись этой информацией, не составит труда выполнить наладку сетевого интерфейса.
IPMI-запросы сложной структуры
Существуют и более сложные конструкции, направляемые к BMC-контроллеру в виде HEX-кодов. Хорошей иллюстрацией в данном случае может быть запрос «BMC MAC Address».
Здесь нет никаких элементов новизны, кроме сложного синтаксиса. Практическое применение такого многоэтажного кода тоже под вопросом: проще воспользоваться raw-последовательностью 0x06 и 0x37 («Get System GUID») для доступа к MAC-адресу IPMI-интерфейса.
Гораздо важнее получить IP-адрес сетевого порта, принадлежащего BMC-контроллеру:
Разберем синтаксис этого запроса. Функция 0x0c с командой 0x02 способны проинформировать пользователя про IP-адрес BMC, если в поле data0 указать номер канала, а в поле data1 — директиву get. Поля data2 и data3 по умолчанию нулевые.
А теперь интерпретируем полученные результаты. Сначала идет 0x11h — зарезервированный префикс ответа, а затем шестнадцатеричный код:
0xC0A8012Ah = 11000000.10101000.00000001.00101010 = 192.168.1.42
Заметая следы
Все настройки IPMI только тогда чего-нибудь стоят, если можно в один клик вернуть их к значениям по умолчанию. Функции восстановления стоят того, чтобы их всегда держать под рукой. Вот самые главные из них:
- 0x30 0x40 ― Reset and factory default, preserve LAN and FRU settings
- 0x30 0x41 ― Reset and factory default, erase LAN and FRU settings
- 0x30 0x42 ― Reset and factory default, erase LAN but preserve FRU settings
- 0x30 0x44 ― Reset Sensor Data Record to default
Последняя опция сброса информации от датчиков, хранящаяся в SDR-репозитарии, ― самая безобидная:
Есть еще один запрос, восстанавливающий справедливость ― «Reset HTTP config to default»:
Теперь уж точно все должно работать! :)
Послесловие
Лабораторные работы с программными продуктами Supermicro открывают новые горизонты для инженеров-практиков, ответственных за мониторинг и управление серверным парком. Наряду с десктопными приложениями, мобильная версия IPMIView позволяет всегда быть в контакте 24/7 с оборудованием, что существенно важно, когда нет иного доступа к аппаратным платформам. В этой ситуации смартфон становится alter ego системного администратора и его незаменимым помощником.
Лабораторные работы с программными продуктами Supermicro открывают новые горизонты для инженеров-практиков, ответственных за мониторинг и управление серверным парком. Наряду с десктопными приложениями, мобильная версия IPMIView позволяет всегда быть в контакте 24/7 с оборудованием, что существенно важно, когда нет иного доступа к аппаратным платформам. В этой ситуации смартфон становится alter ego системного администратора и его незаменимым помощником.
|