IPMI на кінчиках пальців: керування серверним парком зі смартфона для просунутих
Цикл матеріалів по IPMI на платформах Supermicro
- Управління платформами Supermicro по IPMI
- Віддалене управління платформами Supermicro за допомогою утиліта IPMIView
- IPMIView: шифрування та безпека
- Як мобільна програма IPMIView допомагає керувати серверами Supermicro
- IPMI на кінчиках пальців: керування серверним парком зі смартфона для просунутих
Можна скільки завгодно довго сперечатися про використання бездротових технологій для віддаленого управління серверним парком, але не можна ігнорувати сам факт — Wi-Fi та 3G міцно вросли в ІТ-інфраструктуру та стали агентами впливу в дата центрах. В якості прикладу достатньо згадати хоча б стрімкий ріст бездротових рішень компанії Aruba.
Розбираючись з тим, як мобільна програма IPMIView допомагає керувати Supermicro, ми зіткнулись із тонкою буквально точковою установкою параметрів віддаленого управління за допомогою смартфона. Два аспекти цього підходу потребують відповіді: коли стоїть розраховувати на допомогу мобільної платформи Android (або iPhone) і кому ця допомога знадобиться?
Обмежена функціональність мобільного інтерфейсу свідчить про те, що подобні невідкладні міри спрямлені на підтримку та збереження працездатності серверної платформи. З цього випливає, що якщо недоступні блага звичної комп'ютерної інфраструктури, тільки кризовому менеджеру доведеться вдатися до послуг мобільної програми, та й то в польових умовах. Кардинальным диагностическим средством для него станет режим командной строки, доступный в мобильной версии IPMIView.
У відкритому доступі інструкцій з використанню Raw Command дуже мало, і нам прийшлось попрацювати, щоб розширити це вузьке місце в системі віддаленого керування серверами Supermicro. Поділимся деякими знахідками для того, щоб вичавити максимум із IPMIView.
Обчислити по IP
Для початку визначимося, з якою з платформ серверного пулу ми хочемо спілкуватися ІРМІ. Мобільний додаток пропонує нам зручний інтерфейс для цього, паралельно інформуючи про ВМС-контролер, що реалізує віддалений інтерфейс. У нашому випадку SuperMicro X11SCL-F з локальним ІР-адресом 192.168.1.42 обладнаний чіпом AST2500 з повним набором ІРМІ-сервісів.
Першою виконаємо шестандцатеричну raw-послідонвність 0x06 та 0x37:
На її початку легко вгадується ASCII-рядок "3401MS", за яким слідує ні що інше, як MAC-адрес ac:1f:6b:f9:5c:fa, доповнена нулями праворуч. Вся відповідь ВМС-контролера є одним з варіантів універсального унікального ідентифікатора, отриманий за запитом «Get System GUID». А Completion Code: 00 — код повернення, що свідчить про успішне виконання запиту. Зауважимо, що під рядок ac:1f:6b є вендорським кодом Super Micro Computer у системі МАС-адрес.
Тім хто знайомий з синтаксисом командної строки у Linux, ймовірно, відомо, що запит ipmitool raw 0x06 0x37 тотожний запиту ipmitool bmc guid. Перевіримо це припущення у Windows, використовуючи SMCIPMITool — проприєтарну утиліту Supermicro.
Структура запиту у SMCIPMITool декілька відрізняється від формату вводу Raw Command, що використовується в мобільній програмі IPMIView. Смартфон наперед «знає» ІР-адрес адресату, отже, логін та пароль повторно вказувати немає сенсу.
Запит, функція, команда
Після першого знайомства з НЕХ-кодами ІРМІ-інтерфейсу настав час розібратися в структурі його команд. Незважаючи на те, що їхній синтаксис описаний у специфікації IPMI v2.0, прикладне застосування із урахуванням особливостей реалізації Supermicro, не зовсім очевидне.
ІРМІ-інтерфейс передбачає віддалений доступ в форматі запитів, котрий складається із команд. Команди уніфіковані по синтаксису та містять набір обов'язкових та опціональних полів, що йдуть у суровій черговості:
- NetFn (Network Function) — мережева функція, що поєднує функціональні набори команд по її типам — її молодші шість бітів є індикатором функції, а старіші два біти — полем LUN, що забезпечує додаткову субадресацію всередині платформи; але, точний формат функції залежить від реалізації конкретного пристрою, за виключенням сутності, визначеної специфікацією ІРМІ.
- cmd — унікальна команда в рамках зазначеної мережевої функції NetFn.
- subcmd — необов'язкове поле, котре в деяких ситуаціях використовується, як розширення керуючою команді cmd.
- Request Data — один або кілька необов'язкових полів, структура яких диктується парою cmd|subcmd; варується від пустого поля до ціпочки data0...data7.
- Response Data — поля результатів.
Двухбайтовий запит
Перш ніж перейти до експериментів зі складними НЕХ-командами, розглянемо ще одну просту двобайтеву конструкцію 0x30 та 0x0d:
Як бачимо, команда 0x0d відноситься до іншого класу функцій (0x30) а поле її результатів не містить даних (за виключенням обов'язкового коду повернення Completion code). Задіявши її, користувач отримує можливість керувати серверним пулом за допомогою UID Control, як це описано в раніше опублікованій статі «Управління платформами Supermicro по IPMI». На відміну від попередньої функції «Get System GUID», управління світлодіодами приносить хоча б якусь користь :)
Трибайтовий запит
Візьмемо команду в трибайтовому форматі, відповідальну на платформуSuperMicro X11SCL-F за рядок принципових обов'язків:
Функція 0х30 у поєднанні з командою 0х45 керують сценаріями використання вентиляторів. В її форматі відсутнє поле subcmd, а параметр 00 в полі data0 — апит на інформування про режим охолодження. ВМС-контролер повернув значення 02, для інтерпретації котрого потребується наступна розшифровка:
- Standard
- Full
- Optimal
- PUE (Power Use Efficiency)
- Heavy IO
Вказавши в полі data0 параметр 01, ми можемо в обов'язковому полі data1 обрати необхідний рівень завантаженості з наведеного вище списку і надіслати цей запит на виконання. Команда 0x30 0x45 0x01 0x04, наприклад, встановити найнавантаженіший режим (Heavy IO) роботи вентиляторів. Підсумуємо: «нуль» в полі data0 — означає, як правило get, «одиниця» — set.
Чотирьохбайтовий запит
Фактично, ми вище вже розглянули чотирьохбайтовий запит до ВМС-контролеру через введення Raw Command в мобільній програмі IPMIView. Більш повну картину можна отримати, ознайомившись з принципово важливим для керування командами ІРМІ-інтерфейсу. Почнемо з самого важливого із них — запиту «IPMI LAN Mode».
Тут вперше ми зустрічаємо поле subcmd, котре для «IPMI LAN Mode» рівно 0x0c. Наступний параметр data0, як сказано раніше, позначає режим запиту (get). Результат може приймати одне із трьох значень:
- Dedicated
- OnBoard
- FailOver (в нашому прикладі)
Ця ж команда в цьому ж функціональному наборі, але з розширенням 0х60, інформує нас про параметрах мережевого підключення:
Відповідь платформи на запит «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
Скориставшись цією інформацією, не важко виконати налагодження мережевого інтерфейсу.
ІРМІ-запити складної структури
Існують і більш складні конструкції, що направляються до ВМС-контролеру у вигляді HEX-кодів. Гарною ілюстрацією в даному випадку може бути запит «BMC MAC Address».
Тут немає ніяких елементів новизни, окрім складного синтаксису. Практичне застосування такого багато поверхневого коду також від запитанням: простіше скористуватись raw-послідовністю 0x06 та 0x37 («Get System GUID») для доступу до МАС-адресу ІРМІ-інтерфейсу.
Набагато важливіше отримати ІР-адрес мережевого порту, що належить ВМС-контролеру:
Розберемо синтаксис цього запиту. Функція 0x0c з командою 0x02 здатні проінформувати користувача про ІР-адрес ВМС, якщо в полі data0 вказати номер каналу, а в полі data1 — директиву get. Поля data2 та data3 за замовченням нульові.
А зараз інтерпретуємо отримані результати. Спочатку йде 0x11h — зарезервований префікс відповіді, а потом шістнадцятковий код:
0xC0A8012Ah = 11000000.10101000.00000001.00101010 = 192.168.1.42
Замітаючи сліди
Всі настройки ІРМІ тільки тоді чого небудь коштуватимуть, якщо можна в один клік повернути їх до значення по замовченню. Функції відновлення коштують того, аби їх завжди тримати під рукою. Ось самі головні із них:
- 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 відкривають нові горизонти для інженерів-практиків, відповідальних за моніторинг та управління серверним парком. Наряду з десктопними програмами, мобільна версія ІРМІView дозволяє завжди бути в контакті 24/7 з обладнанням, що суттєво важливо, коли немає доступу до апаратних платформ. В цієї ситуації смартфон стає alter ego системного адміністратора та його незамінимим помічником.
|