Чиним коммутаторы своими силами: история одного расследования
В 2016 году мы в Selectel начали закупать коммутаторы производителя Е. Гарантия уже закончилась – что делать, если железка выйдет из строя? Мы нашли решение.
В 2016 году мы в Selectel начали закупать коммутаторы производителя Е. Планировали за несколько лет ввести в работу несколько сотен устройств — и это оправдалось. Сегодня в продакшене работает больше 300 коммутаторов.
Данная модель позволила нам реализовать новые сетевые схемы и начать предоставлять ряд услуг, которых раньше не было в Selectel. Но что делать, если железка выйдет из строя, а гарантия уже сгорела? Кажется, ответ понятен из названия. Самое время погрузиться в детали.
Сервис коммутаторов
Как правило, большинство проблем с коммутаторами E решались c выходом новой прошивки. То есть претензий к аппаратной части не было, но были вопросы по программному обеспечению устройств, которые успешно решались самим производителем. Тем не менее, несколько коммутаторов были возвращены поставщику на сервис: какие-то — в течение гарантийного срока, какие-то — согласно дополнительным договоренностям и сервис-контрактам.
Первоначально замена/починка коммутатора занимала много времени. Устройство возвращалось поставщику, затем поступало дистрибьютору для первичной диагностики, а после, при формировании партии, — отправлялось иностранному производителю для проведения работ. Оттуда в очередной партии возвращался отремонтированный коммутатор — и далее по обратной цепочке: дистрибьютор-поставщик-потребитель.
В какой-то момент мы заметили, что большинство неисправностей довольно однотипны. Более того, они возникают, как правило, при неудачной перезагрузке или перепрошивке коммутатора. Тогда мы задумались о том, что необходимо проводить восстановление прошивки самостоятельно.
Восстановление прошивки
На форуме производителя мы отыскали описание процедуры восстановления «убитой» прошивки с помощью специальных загрузочных USB-флешек и процедуры netinstall из ROMMON коммутаторов. К сожалению, не все устройства получилось так восстановить. На части из них возникали ошибки такого вида:
** Block device usb 0 not supported WARNING: adjusting available memory to 30000000 Wrong Image Format for bootm command ERROR: can't get kernel image!
На ряде вышедших из строя коммутаторов восстановить прошивку не получалось. Значит, было дело не только в слетевшей прошивке. Но в чем тогда? Мы задумались, из чего же состоит коммутатор.
Погружение в аппаратную часть коммутатора
Из чего состоит устройство
Базовый коммутатор состоит из трех компонентов: портов, центральной коммутирующей микросхемы ASIC, и компьютера для управления коммутатором.
Сняв крышку с более-менее современного коммутатора можно увидеть такую картину:
Внутри есть компьютер для управления коммутатором. Ну а ПК диагностировать и чинить мы умеем. Вспоминаем, из каких компонентов он состоит, — внутри точно есть процессор, материнская плата, память, диск. А дальше смотрим, где эти компоненты расположены в устройстве.
Зачастую процесс унификации дошел до такой степени, что ряд компонентов коммутаторов просто используют в виде готовых компьютерных элементов, а не припаивают на общую плату с микросхемами. Вот доказательство:
Диагностика коммутатора
Перед тем, как что-то чинить или менять, хотелось бы понять, а что же именно надо заменить и в этом ли действительно проблема. Поэтому мы активно искали способы диагностики коммутатора. Стали задаваться вопросами, можем ли определить или заранее узнать, что в устройстве неисправно, и спрогнозировать, поднимется ли коммутатор при следующей перезагрузке.
С этим нам помогло знание Linux, который является сердцем ОС коммутатора. Мы получили от производителя пароль для входа в bash (Linux command prompt) и запустили программы для диагностики базовых компонентов.
Память мы можем просто тестировать, диск — тестировать и менять. Материнскую плату и процессор при неисправности мы сразу увидим. Итого, большинство наших проблем из-за «убитой» флешки. Но почему она ломается? Совместно с производителем мы начали искать проблему.
Оказалось, в данной модели коммутаторов в качестве диска установлена память Compact Flash, так что ни о каком умном контроллере говорить не приходится. В ходе поисков мы также выяснили, что в определенных сборках Linux есть драйверы блочных устройств (к ним же относятся диски), которые пишут лог-файлы в одно и то же место накопителя. После старые логи удаляются, а новые записываются в ту же самую область. В итоге флешка «запиливается» в этом месте и выдает bad blocks.
Решение проблемы
Смена версии хост-операционной системы помогла, в свежих прошивках уже нет таких сценариев записи. Если бы в качестве дисков были установлены более умные устройства (например, М.2, как на фото выше), то поломки предотвращал бы контроллер самого устройства.
Справедливости ради, надо отметить, что другие производители коммутаторов (и не только коммутаторов) сталкивались с этой проблемой примерно в то же время, что и мы. Следовательно, «кривая» версия Linux была установлена на оборудовании разных производителей.
Ускорение сервиса починки
Когда с нашей помощью удалось обнаружить причину проблемы и способы ее исправить, производитель отправил инструкцию и коробку флеш-дисков дистрибьютору. С тех пор починка коммутаторов заметно ускорилась: устройства попадали к дистрибьютору, а после отправлялось инженерам, которые заменяли флешки и переустанавливали ОС на новую версию. И все — коммутаторы были готовы к работе и возвращались потребителю.
На логистическое плечо данной операции мы тратили больше времени, чем занимало бы само восстановление коммутатора. А что, если будем производить базовую починку сами? Давайте же посмотрим!
Разбираем базовую модель коммутатора
Берем коммутатор, снимаем крышку — и что мы видим? В правом верхнем углу под пластиной спрятан флеш-накопитель!
Такие накопители я знаю. Это обычные compact flash (CF). Простой CF можно купить, подключить через переходник к компьютеру, тем самым упростить этапы проверки, форматирования, диагностики и заливки ОС.
Мы закупили партию таких накопителей и провели диагностику на всех коммутаторах производителя E. Где возникли проблемы — провели плановые работы с заменой коммутаторов, а в уже снятых поменяли диск.
Другая модель коммутатора
Кроме базовой модели у нас есть другие коммутаторы от этого же производителя. Мы заметили, что с ними тоже возникают подобные проблемы, хоть и реже. Давайте и на них научимся менять флешки.
Открываем коммутатор и начинаем искать накопитель — где он?
Над оперативной памятью есть что-то закрытое бумагой — скорее всего это и есть флешка. Но когда мы демонтировали накопитель с коммутатора, нам открылась неизвестная ранее картина:
Перевернули плату, стало чуть яснее, но не до конца. Начали гуглить — и поняли, что это всего лишь USB-флешка с внутренним разъемом, так называемая eUSB flash drive.
Мы опробовали работу коммутатора с внешним USB-разъемом через переходник (заглушку 3.5” слота системного блока) — и все заработало!
Но «колхозить» через всякие переходники мы не стали, а нужные нам карты памяти нашлись на Aliexpress, где и были закуплены.
Что получилось
У нас есть парк из 300+ коммутаторов определенных моделей. На них были проблемы, с большой долей вероятности возникающие в процессе эксплуатации. Мы научились превентивной диагностике коммутаторов, нашли причину возникновения проблем и способы их решения. А еще — самостоятельно, без привлечения производителя, дистрибьюторов и сервисных компаний, устранять типовую неисправность. Последние замены флешек мы провели в 2021 году, сегодня с данными коммутаторами проблем нет.