Семь лет плотной работы с IT-инфраструктурой приучили меня к одному простому правилу: если энтерпрайз-вендор заявляет, что новая фича работает по принципу «Plug-and-Play», значит, впереди бессонная ночь, чтение CLI-референсов и ковыряние в неочевидных логах.
Задача стояла тривиальная: есть головное устройство HPE Alletra Storage MP B10100. Нужно на горячую подцепить к нему дополнительную JBOF-корзину с NVMe-дисками по 100Gbit оптике. Спойлер: всё завелось и полетело, но количество неочевидных граблей, разбросанных HPE на этом пути, просто outrages.
Казалось бы, что может пойти не так при штатном обслуживании энтерпрайз-хранилки за много денег? Вендоры давно обещают бесшовные апгрейды, non-disruptive операции, plug-and-play и прочий маркетинговый булшит.
На практике же работа с железом такого уровня — это хождение по минному полю в ботинках 49-го размера. Ниже — хронология двух увлекательных ночей с массивом HPE Alletra Storage MP B10100, которые заставили вспомнить архитектуру сетей, проклясть корпоративные VPN, откопать в коробках невиданные кабели и применить древнюю сисадминскую магию.
Часть I: Апгрейд операционки и исчезнувшая нода
Задача стояла тривиальная: обновить СХД с версии OS 10.4.5 до 10.4.20.
Акт 1. Исчезнувший Upgrade Tool и битые подписи
Запускаем pre-update checks. Массив радостно сообщает: чтобы накатить новую ось, тебе нужен HPE Storage Software Upgrade Tool версии 79. Сейчас стоит 74-я. Логично? Логично. Иду на портал HPE Support Center. Ищу 79-ю версию. А ее там тупо нет. Вендор решил, что промежуточные сборки — это мусор, скрыл их в архивах и оставил только свежие — 83 и 85.
Качаю 85-ю (мы же любим up-to-date), пытаюсь скормить ее массиву и получаю с ноги в лицо: Signature validation failed... Retval 512 and Status 2.
Оказывается, между 74-й и 85-й версиями HPE успели сменить криптографические ключи подписи. Старая система смотрит на новый сертификат как баран на новые ворота и шлет пакет нахер. Решение: Скачиваем версию 83 (она оказалась достаточно старой, чтобы ее подписи еще валидировались, но достаточно новой, чтобы обновить ключи). Скармливаем нераспакованный .iso — утилита обновляется. Едем дальше.
Акт 2. Мастер ушел за хлебом
Запускаем обновление самой ОС. Демон апгрейда корректно переводит ноду 1 (slave) в сервисный режим, шьет, ребутает, возвращает в кластер. Продуктовая нагрузка жива, полет нормальный.
Дальше демон отправляет в ребут мастер-ноду с индексом 0. И тут наступает звенящая тишина.
Проходит 10 минут, 20, 40… В активных тасках UI висит Restarting the management server на издевательском 1-м проценте. Сыпятся алерты:
Cluster Link Port 1:5:1 Node 1: DownCage I/O Module 2 is Noncritical
Команда shownode с выжившего контроллера показывает, что нулевой ноды в кластере больше нет. Она физически исчезла с радаров. В этот момент в серверной начинает отчетливо пахнуть седыми волосами, потому что хард-ресет зависшего контроллера по питанию во время обновления прошивки — это верный путь получить очень дорогой кирпич.
Акт 3. Квест «Где мой iLO, чумба?»
Чтобы понять, какого х-я происходит с нулевой нодой, нужно попасть в iLO. Проблема в том, что IP-адреса менеджмента никто не то что не документировал, их вообще не настраивали при первой инициализации, можно а зачем? Сетевики клянутся, что линки на портах горят, но там абсолютное зеро — ни мак-адресов, ни пакетов, тупо мертвая тишина на коммутаторе.
Тут дотумкал, что мак-адреса, напечатанные на “ушках” (ручках) самой СХД, прилеплены туда не для красоты. Берем эти маки, конвертируем их в форматы IPv4 и IPv6. Адреса бьются. Пытаемся зайти — болт. Тайм-аут соединения.
Разгадка оказалась банальной но от того не менее эпичной. У нас было активно подключение к банку через Cisco AnyConnect. И этот бл*дский VPN-клиент молча заворачивал локальные роуты и IPv6-трафик в свой туннель. Стоило разорвать соединение с Cisco, как прямая адресация заработала, и веб-морда iLO милостиво пустила нас внутрь.
Акт 4. Root Cause и великая Втыкайка-Вытыкайка
Заходим в iLO нулевой ноды. Сервер находится в полностью выключенном состоянии (Standby). Открываем IML логи и видим картину маслом: нода не смогла пройти POST из-за аппаратной ошибки чтения первой плашки ОЗУ.
Железо выбрало самый “удачный” момент, чтобы сбойнуть — ровно в секунду планового ребута при апгрейде. Поскольку кнопок питания на этих канистрах нет в принципе, лечится это только физическим вмешательством. Проводим классическую процедуру “втыкайка-вытыкайка”. Вытаскиваем контроллер из шасси, перетыкаем все планки оперативки, задвигаем ноду обратно на бэкплейн.
Питание подается, контакты восстанавливаются, нода успешно проходит POST и одупляется.
Акт 5. Добиваем кувалдой через CLI
Поскольку нода валялась в коме больше часа, автоматический таск в UI давно сдох по тайм-ауту. Пришлось брать управление в свои руки. Заходим по SSH на менеджмент-интерфейс и расчехляем скрытую уличную магию команд upgradesys:
upgradesys -status -d— чекаем, где именно завис процесс.upgradesys -continue— пинаем демона, чтобы он продолжил работу с прерванного места.upgradesys -auto— возвращаем процесс на автоматические рельсы.upgradesys -postupgrade— коммитим новую версию и вычищаем мусор. Параллельно мониторим весь этот цирк черезshowtask -d $task_ID. Апгрейд ОС завершен.
Часть II: Экспансия и кабельная шизофрения
Думаете, на этом приключения закончились? Хер там плавал. Настало время прицепить к массиву на горячую дополнительную JBOF-корзину с NVMe-дисками по 100Gbit оптике.
Акт 1. Не в ту дырку
Через менеджмент DSCC инсталлируем новые 100Gbit HBA-адаптеры. Устанавливаем полку, кидаем линки, подаем питание. На картах радостно загораются зеленые светодиоды. Запускаем мастер Add Drive Enclosure в локальном UI. Мастер пишет Waiting for 1 drive enclosure to be added… и виснет наглухо. Диски на полке горят, но не моргают.
Лезем в консоль делать showport. Карты видятся в системе, но их тип — free, а протокол — IP. Контроллер считает, что в него воткнули обычные Ethernet-линки, и даже не пытается искать на том конце NVMe-корзину. Кнопки Port Personalization в локальном UI не существует.
Разгадка: Оказалось, что мы воткнули HBA-адаптеры в 4-й слот. В архитектуре Alletra MP 4-й слот хардкодно зарезервирован под Ethernet-трафик (iSCSI, репликации и бэкапы). Для подключения backend-полок по NVMe-oF карты должны стоять строго во 2-м и 1-м слоте. Вытаскиваем, перетыкаем во 2-й слот — магия! Контроллер мгновенно увидел NQN-адреса IOM-модулей.
Акт 2. Зависание на 25%
Запускаем задачу снова. Прогресс-бар бодро ползет и встает колом на 25%. Смотрим статусы:
showcageпоказывает, что полка добавилась, но висит в статусе degraded.showpdпоказывает все 24 диска со статусом new, но емкость в систему не отдается.
Открываем священный грааль — HPE Cabling Tool. И тут выясняется, что прямое подключение «левый порт ноды в левый порт корзины» — это слишком просто для сумрачного гения инженеров HPE. Схема кроссировки должна быть асимметричной:
- На головном устройстве (HBA во 2-м слоте) кабель должен торчать в ПРАВОМ порту.
- На дисковой корзине кабель должен входить в ЛЕВЫЙ порт IOM-модуля.
UI массива тихо сходил с ума, потому что ждал NQN-адреса на правых портах, не видел их там, зажигал алерты о потере путей и переводил полку в аварию. Перекинули кабели на горячую по схеме — degraded сменился на normal, диски заморгали, сырые терабайты упали в пул.
Акт 3. Пасхалка с OCuLink
Отдельная боль — подключение сети управления для новой корзины. На задней панели есть узкий сервисный модуль CDM (Chassis Discovery Module). Но воткнуть туда обычный RJ-45 нельзя. Разъем там — OCuLink. Чтобы подключить эту приблуду к свитчу, нужно откопать в коробке с аксессуарами всратый переходник-хвостик OCuLink-to-Ethernet, вставить его до щелчка, и уже в него втыкать витую пару. В официальных мануалах об этом пишут самым мелким шрифтом а без этого переходника он отказывает в инициализации полки!
Акт 4. Звенящая тишина даунгрейда
Железо работает, емкость доступна, но в дашборде висит раздражающий алерт: IO Module firmware: Unknown. Лечится командой upgradecage cage41. Консоль выдает: Upgrading cage cage41 from rev 0798 to revision 0656... и замолкает на 56 минут.
Массив выполняет даунгрейд прошивки новой корзины, чтобы она жестко соответствовала версии ядра СХД. В этот момент нельзя паниковать и бить по клавиатуре. В фоне массив льет образ по 100Gbit линкам, ребутает первый IOM, ждет поднятия и повторяет процедуру для второго. Когда консоль отвисла, алерт ушел, а система перешла в кристально чистый статус Health: OK.
Мораль (Высечь в камне)
- Не верь порталам. Если нужной версии софта нет, это не значит, что подойдет последняя.
- Отключай VPN. Если сеть ведет себя странно при доступе к management-портам — в 9 случаях из 10 виноват AnyConnect или любой другой всратый клиент VPN, заворачивающий локальный трафик.
- Физика бессердечна. Какой бы крутой ни была архитектура, микровибрация на контакте DIMM-модуля положит энтерпрайзный кластер в самый ответственный момент.
- Слот решает всё. Backend NVMe HBA ставятся строго во 2-й слот. 4-й слот — только под сеть и iSCSI, да и просто – повнимательнее что ли читать мануалы надо-бы.
- Cabling Tool — закон. Кроссируйте порты строго по асимметричной схеме, иначе получите
degradedи зависший UI или по той схеме который предложит сам Cabling Tool. - Знание CLI спасает. Когда красивые дашборды ложатся по тайм-ауту, только хардкорные команды вроде
upgradesysвытащат массив из комы. Только консоль! Только хардкор! GUI для самокатчиков!.
Апгрейд завершен. Пойду посплю.
