Как я возил робота, чуть не поседел и залил кровью серверную

:

Это история одного из самых запомнившихся случаев в моей инженерной практике. По понятным причинам я поменял имена, места и некоторые узнаваемые детали, чтобы нельзя было точно определить заказчика и других участников истории.


Вот так выглядит ленточное хранилище (наше было поменьше) и библиотечный робот (наш такой же). Китаец в комплект не входит.

Часть 1. Коробка


Помню, стояли последние дни ноября. Уже думая об окончании рабочего дня, я планировал свой вечер, когда вдруг мне сообщили, что в славном сибирском городе N у нашего заказчика сломалась ленточная библиотека. Запчасть сразу же отправили транспортной компанией, но вот уже 3 дня, как она все еще была в пути. Транспортная компания невнятно объяснялась и хмыкала в телефон, а заказчик стал не в шутку нервничать. Прогнозы были неопределенные, поэтому было принято решение везти еще одну запчасть своими силами на самолете. Сотрудник склада вручил мне габаритную коробку весом килограмм десять, обклеенную штрих-кодами и стикерами, и радостно хлопнул меня по плечу со словами: «Только не вздумай в багаж сдавать — помнут».

Коробка меня, безусловно, беспокоила, но не меньшее беспокойство мне внушал пакет с сухим молоком, который в последний момент мне вручил менеджер проекта. «У них там какие-то траблы с молочкой сейчас… из-за непогоды что ли… ребята местные просили 2 кг им привезти. Тебе ж не сложно?» — сказал он. По выражению его лица и характерному жесту ладони, как бы прикрывавшей мне рот, было ясно, как он сейчас хотел, чтобы я оказался сговорчивым или даже немым.

Важное отступление


Эта история произошла несколько лет назад, в мою бытность инженером, когда я много летал по стране, и, просыпаясь в очередной гостинице, иногда не мог сообразить, в каком я сейчас городе. 4-5 командировок в месяц накладывали свой отпечаток на уклад жизни. И олицетворением этого уклада был мой всегда готовый к очередному путешествию рюкзак.

Часть 2. Библиотекарь


Я вылез из такси, и неожиданно у здания аэровокзала меня остановил сотрудник милиции. «Ваши документы!» — выплюнул он, и чувство глубочайшего удовлетворения почему-то разлилось по его лицу. Дул злой промозглый ветер, мешая мне разобраться с карманами и сумками. Я, как смог, извлек свои документы и протянул блюстителю правопорядка. По идее, молодой человек, который путешествует только с ноутбуком, большой коробкой и пакетом с белым порошком, не должен вызывать каких-то подозрений, поэтому я изобразил на своем лице искреннее недоумение. «Что у вас в коробке?» — спросил он равнодушно. Видимо то, что в пакете было не что иное, как сухое молоко, он уже своим профессиональным чутьем определил, и поэтому пакет его больше не интересовал. А вот коробка пока не поддавалась его проницательности. «Это робот», — сказал я.

В этом момент у меня возникло ощущение, что его равнодушное лицо подменили, ибо оно осветилось изнутри неподдельным интересом, как будто в недрах его шапки с кокардой дополнительно подключился модуль с функцией человеческого любопытства. Я понимал, что поторопился с ответом и надо было как-то ситуацию скорее исправлять. «Это робот… для библиотеки», — добавил я еще менее уверенно, продолжая наблюдать за подключением остальных модулей ехидства, злорадства и алчности. «Говорите, робот для библиотеки… Робот-библиотекарь что ли?»

Часть 3. Досмотр


Я продвигался к зоне посадки, вспоминая, как только что разделался с кокардой. «Обошлось, — думал я, — а мог бы и на самолет опоздать».

«Багаж на ленту, куртки, ремни и обувь снимаем, телефоны выкладываем…» — властно и бездушно командовала женщина в униформе. Водрузив свой скарб на ленту, я сам без звука и писка прошел через рамку металлоискателя. Было видно, что коробка с роботом не дает покоя сотруднице службы безопасности аэропорта, которая гоняла ее туда и обратно через рентген. «А что это?» — наконец вымолвила она, когда все сравнительные образы в ее голове иссякли. Я мял в руках пакет с молоком, обдумывая свою тактику, чтобы сейчас не повторить эпизод с кокардой. Но вдруг ее коллега, сидящая с ней по соседству, бегло глянула на монитор и произнесла: «Да это же робот для библиотеки L200. За эту неделю уже третий раз везут, сезон поломок у них пошел. Проходите, молодой человек!». Моему изумлению не было предела, но вместе с тем я был страшно благодарен благоволившему мне провидению, а также технической грамотности сограждан, работающих в аэропортах.

Часть 4. Усадьба


Ржавая «Волга» со скрипом мчала меня из аэропорта в гостиницу. Из тридцати человек сомнительного вида таксистов, встречавших ночной рейс перед зданием местного аэропорта, этот показался мне самым сдержанным. Во всем его сутулом и прокуренном облике чувствовалось какая-то добропорядочность и даже благородство. Впрочем, облик таксиста часто бывает обманчив, и он всю дорогу недоумевал, почему я живу в Москве, но так и не знаю, как дела у Аллы Борисовны Пугачевой. «Ты живешь с ней в одном городе, и не знаешь?!» — не унимался мой таксист. Он недолюбливал меня за невежество, но вместе с тем не хотел ударить в грязь лицом перед столичным гостем. К дверям отеля мы подкатили лихо и с визгом тормозов, завершив крутой пируэт, непозволительный для автомотоагрегата с таким почтенным возрастом. Дверь машины, казалось, распахнулась сама, или просто отвалилась. Услышав мой вопрос: «А вы мне дадите чек?», таксист замахал руками и напрочь забыл разговорные навыки.

Я вошел внутрь здания, озираясь на безвкусно украшенные стены и колонны, все с каким-то серым налетом, словно пыли. Здание было старинной постройкой, возможно, бывшей усадьбой. На ресепшене девушка безучастно красила ногти. Уверенный в своей, как клиента, правоте, я решительно достал свой паспорт и шлепнул его на стойку. Мадам нехотя отвлеклась от ногтей, презрительно глянула на мой паспорт и буркнула: «В долг не даем». «Чего… ?» — в голове моей понеслись междометия и прочие признаки крайнего негодования. «У меня здесь номер забронирован», — старался быть вежливым я. «Это казино! Вход в отель с другой стороны двора». Кто же знал, что оба заведения имеют одинаковое название? И еще я успел тогда подумать, что все это время таксист вез меня, видимо, думая, что я прилетел из Москвы в этот неприветливый зимний край прокутить содержимое коробки за картами и рулеткой.

Часть 5. Спать или не спать?


Гостиничный номер встретил меня шикарными гардинами до пола и затхлым запахом сырости. Я присел на край кровати, располагавшейся в нише стены, нежно опустил перед собой заветную коробку с роботом и от неожиданности поздоровался с пауком в углу. Работы у заказчика были намечены на 9 утра, на часах было 6 местного. В голове моей все еще гудели двигатели Ил-62 и другие прелести многочасового перелета. Я мысленно прикинул перспективы поспать пару часов и проснуться свежим, и принял правильное решение просто не ложиться. Физиологически у меня дело клонилось к позднему ужину, даже ночному кефирчику, поэтому я поправил на коробке наш фирменный зеленый скотч и пошел в душ.

Часть 6. Семен


Когда к 9 утра я прибыл с роботом и сухим молоком к заказчику, на проходной меня встречал представитель ИТ-отдела, который сказал, что его якобы зовут Семен. Семен без умолку говорил обо всем вокруг, то и дело вытирая рот рукой. По его виду и простоватым манерам было понятно, что в отделе роль встречающего ему достается чаще других, как самому малограмотному специалисту, но очень общительному человеку. Без сомнения, Семен вызывал доверие у людей, и, как позже выяснилось, обладал прекрасным, почти неукротимым аппетитом.

На этаже творилась суета, и пахло краской. Бурно жестикулируя, Семен объяснял, что это новое здание и сейчас здесь оборудована вторая площадка. И тут у меня зазвонил мобильный телефон. Это был менеджер проекта. «А ты уже добрался до заказчика? Слушай, помоги им там. Мы им сейчас кластер настраиваем. Наш Леша у них уже неделю. Что-то не получается. Тебе ж не сложно?»

Часть 7. Кластер


В сопровождении Семена я вошел в машзал. Повсюду были расставлены коробки разных размеров с надписями Dell, Cisco, EMC. Многие из них уже были вскрыты, вокруг лежали провода, рельсы для монтажа оборудования в стойки, кипы документации и электрики. Электрики не просто лежали, они копошились с проводами под фальшполом и негромко переругивались. В центре этого творческого хаоса возвышался старший специалист отдела Николай. Он проводил рабочее совещание. Скрывшись от совещания, за грудой коробок томился наш Алексей, щурясь в монитор своего ноутбука и тайком завтракая булкой. Семен тоже захотел булку, но ему надо было участвовать в совещании, поэтому он просто пыхтел.

С первых слов Николая я понял, что времени на запуск комплекса оставалось в обрез, меньше суток. С появлением второй площадки руководство поставило задачу реорганизовать одну из самых важных информационных систем. База данных — ядро этой информационной системы — должна была стать кластеризованной. Теперь она хранилась на двух системах хранения, между которыми осуществлялась синхронная репликация данных. А кластерное ПО отслеживало состояние всего комплекса и могло автоматически отреагировать на сбой, случись что-либо нехорошее на основной площадке. Подготовительные работы были почти закончены, но много времени было потеряно на поиск и устранение битых оптических линков между площадками, которые прокладывала подрядная организация. А еще предстояло закончить монтаж серверов, обновить на них операционную систему и микрокоды, а также все протестировать. Запуск комплекса в промышленную эксплуатацию был намечен на ночь — единственное время, когда можно останавливать ответственные финансовые системы.

Часть 8. От рассвета до заката


Я плохо помню, как прошел этот день. Помню только, что коллеги мне сразу заявили, что ленточная библиотека в свете сложившихся обстоятельств подождет, и сейчас мои руки важнее в другом деле.

Целый день мы монтировали серверы, крутили гайки, прокладывали кабели, подключали адаптеры. В перерывах мы вроде даже обедали и ходили гулять в лес. Затем я ставил операционные системы, накатывал патчи, колдовал с микрокодами. Иногда микрокоды колдовали со мной, и чтобы не дремать, я вспоминал, как в самолете стюардесса мастерски жонглировала чайником, сетуя на турбулентность, и раздавала чай опасавшимся кипятка пассажирам. Наступала ночь, из окна было видно, что над лесом взошла большая оранжевая луна.

Часть 9. Час Х


«Час Х настал» — бодро сказал, зевая, Николай, коротко посовещавшись с кем-то по местному телефону. «Настал, настал», — повторили ему из трубки, которую он еще не успел положить, и захихикали. Это были «прикладники», которые тоже дежурили в эту ночь и по завершении наших работ должны были убедиться, что все заработало.
На часах стрелки показывали полночь. Мы подошли к самому ответственному моменту, когда должны были переключить репликацию данных на другую систему хранения, дождаться завершения синхронизации и поднять кластер на второй площадке. Этим процессом полностью командовал Алексей, известный в наших кругах специалист по системам хранения. Еще некоторым было известно о его иррациональных повадках… Он, причмокивая, копировал в скрипт идентификаторы томов, сверяясь со списком, который ему предоставил заказчик. Через полчаса, когда эта кропотливая работа была закончена, Леша потрогал для верности клавишу enter, и убедившись, что она настоящая, нажал ее. Все тревожно чего-то ждали, и всеобщее молчание нарушал только треск люминисцентных ламп. Меня клонило под фальшпол и я наяву видел сон, но не помню, про что.

Часть 10. Без названия


Я очнулся, потому что синхронизация закончилась, но все были почему-то не рады. Кластерные службы не поднимались. Меня призвали из страны грез, чтобы я посмотрел в логи. Сквозь туман в моем сознании до меня стало доходить, что проблема была с дисковой подсистемой. Группа логических томов импортировалась с ошибкой и данные были недоступны. Причины были пока не понятны, зато начинала вырисовываться перспектива отката на старую конфигурацию, т.е. план «Б». В семь часов утра система должна была быть работоспособной, поэтому на раздумья времени не было. Тогда я еще и предположить не мог, что трагические события той ночи только начинали разворачиваться.

Я помедитировал еще пять минут и предложил делать откат на старую систему. Нехотя мои коллеги согласились, удрученно думая, что утром будут докладывать начальству. Мы переключили направление репликации и дали команду импорта дисковой группы на старом сервере. Я уже успел успокоиться и мечтал добраться до гостиничной кровати с чувством исполненного долга. И вдруг я услышал возглас: «А тут оно тоже не стартует». И внутри у нас все оборвалось…

Часть 11. Акелла промахнулся


Туман окончательно развеялся в моей голове. Говорят, что в экстремальной ситуацию организм человека мобилизуется. Я бешено соображал, что можно предпринять. Со стороны систем хранения все было в порядке. Убедившись в этом, мой коллега Алексей махнул рукой, расписавшись в своем бессилии, и пошел смотреть фильм на ноутбуке. Я уже говорил про его иррациональные поступки. Но формально к нему придраться было не за что.

Причина проблем вырисовывалась довольно четко. В дисковую группу ранее заказчиком были добавлены дополнительные тома, однако их забыли добавить в список дисков, которые реплицируются. При старте кластера дисковая группа была импортирована, но метаданные были обновлены только на части дисков, а новые оставались в режиме «только чтение». Теперь конфигурация дисковой группы была окончательно рассогласована, а данные недоступны ни с новой СХД, ни со старой.

Когда речь идет о финансовых данных огромной организации, их потеря равносильна катастрофе. Я сразу вспомнил похожую историю, когда на заре своей инженерной карьеры оказался с ремонтом у одного заказчика — серьезной структуры, легализовавшейся в 90-е. Они обсуждали, что их админ что-то по неосторожности удалил. «И что с ним случилось?» — между прочим спросил тогда я. «Ну, он пока сидит здесь в подвале, третий день уже. Ждем генерального, он решит, что с ним делать», — на полном серьезе отвечал мне бритоголовый сотрудник с тяжелой цепью на бычьей шее.

Часть 12. Хинди


Вы когда-нибудь чувствовали, как на голове шевелятся волосы, собираясь поседеть? Прикидывая, что мы потеряли базу данных, я даже думать не хотел, что будет утром.

В таких ситуациях, как наша, положено немедленно звонить в техподдержку производителя. Она, в такой час, понятно, англоязычная. Я примерно набросал для себя ключевые слова и набрал номер. Два гудка и мне ответил английский баритон. Я сходу рассказал, кто мы и что у нас случилось. Баритон терпеливо выслушал мой монолог и спросил: «What is first name?». Я оторопел, но, собравшись, с мыслями, ответил. Затем последовали вопросы про last name, customer name, city, location, serial number и так до бесконечности. Время неумолимо убегало. Закончив анкетирование, баритон попросил меня записать номер обращения и сказал ждать звонка специалиста. Специалист мне не звонил, он через 5 минут мне написал на электронную почту. Он написал, что он принял в работу мою заявку, но его смена закончилась, поэтому мне надо снова перезвонить диспетчеру и попросить назначить заявку на другого специалиста. Не понятно, почему некоторые считают, что работать не любят именно в России. Кажется, это заблуждение.

И вдруг случилось чудо. Мне перезвонил другой специалист, но он оказался из Индии. Второй глобальный центр технической поддержки был там и они сами приняли мою заявку. Я был рад ему как родному папе, но радость моя длилась недолго: мы друг друга не понимали. Было ясно, что он вроде говорит по-английски, но легче от этого не было. Иногда некоторые звуки его речи наводили меня на отдаленную мысль, что он имеет ввиду. Но в конечном счете наше общение свелось к переписке. Я напрягал память, вспоминая все лучшие моменты из индийского кино и пытаясь дать ему прочувствовать глубину нашего горя. Время шло. Индия, как и положено, пела и плакала, но помочь нам тоже не могла.

Часть 13. На рассвете казнь


В 4 часа утра мы поняли, что других вариантов не остается, кроме как восстанавливаться из резервной копии. Все взгляды устремились на ленточную библиотеку. Николай даже ползал перед ней, вытирая пол галстуком. «Сколько будет база с ленточки разматываться?» — спросил я местного бакапщика. «Часа три, наверное, — неуверенно ответил он, — но мы никогда не проверяли». Нам срочно нужно было заменить в библиотеке робота, потому что три часа у нас были с большой натяжкой. Никогда я еще так быстро не вскрывал упаковку и не завинчивал винты. С роботом, залитым кровью, было покончено, он встал на место. Кровью его залил я, поранив палец из-за спешки, но на перевязку времени не было. Шелкнул тумблер и библиотека осветилась изнутри светом, робот пришел в движение и начал калибровку. Мы столпились около библиотеки и глядели через окошечко, мысленно помогая ему двигаться и считывать баркоды с кассет. Он делал это медленно, с наслаждением, а мы, прижавшись, к стеклу, скрежетали зубами. «Проинициализировалась!» — сказал бакапщик, имея ввиду библиотеку. И добавил: «запускаю восстановление». Робот подумал секунду, потом резво метнулся к нужному ряду кассет, уверенно выхватил нужную, повернулся вокруг направляющей оси и поехал в сторону драйва.

В это время Алексей в углу за коробками восхищался фильмом и очередной булкой. Фильм шел без звука, но волнение на лице моего незадачливого коллеги было неподдельным. Инженеры часто возят с собой по длительным командировкам подборку любимых фильмов, которые хороши даже без звука. Ибо настоящее искусство, как, например, фильмы с Чарли Чаплиным можно смотреть и так.

Вдруг из библиотеки послышался звук глухого удара. Робот довез кассету до драйва, но не смог определить, где у драйва отверстие, и стал биться об его стенку, пытаясь ее куда-то вставить. Это было полное фиаско, и отчаяние охватило вас. К сожалению, механические запчасти крайне чутко реагируют на транспортировку, поэтому бывают случаи, когда новая запчасть сразу классифицируется как DOA (dead on arrival).

Часть 14. Надежда


Холодный пот катился градом по моему лбу и застилал мне взгляд. Я медленно нажимал на клавиши, перепроверяя каждую. У нас оставалось меньше часа до начала рабочего дня, и все наши попытки уже казались тщетными, как вдруг меня осенила мысль. «А вы давно последний раз диагностику со старого сервера собирали?» — спросил я у коллег. «Вчера вечером, а что?» — отвечал мне добродушный проголодавшийся Семен. «Там может быть есть вывод команды, которая отражает конфигурацию дисковой группы до изменений, и по этому выводу мы ее можем попробовать руками пересоздать».

И сейчас я занимался тем, что руками запускал команды, которые заново размечали диски на служебную область и область данных». «Ты это делал раньше когда-нибудь?» — спросил меня, выползая откуда-то Николай. «Нет, только статью читал, это шаманство, но надо пробовать», — ответил я. В другой раз мне бы сразу отсекли руки, если бы узнали, что я только что грохнул всю дисковую группу. Но сейчас это был единственный наш шанс, поэтому возражений не было. Мы все, находившиеся в этой комнате, были одновременно и приговоренными, и заговорщиками. Надежда в человеке не умирает никогда.

Я закончил с разметкой и набрал команду, которая согласно документации должна была заново создать дисковую группу, но не инициализировать пространство, т.е. не затирать имеющиеся данные. «Делаешь — не бойся, боишься — не делай», — вспомнил я Конфуция и запустил команду. Она, к моему удивлению и радости, выполнилась и не выдала ни одной ошибки. Я вывел конфигурацию, все логические тома были на своих местах, с нормальным статусом. Осталось проверить наличие данных. В нашем запасе было еще 15 мин. В помещении уже минут 40 трезвонил телефон, но на него никто не обращал внимания. Кто бы это ни был, ответить им пока было нечего. «Давайте запускать кластер» — предложил я, и сам удивился своему голосу.

В библиотеке робот неистово колошматился об драйв, видимо, надеясь его рано или поздно взять измором. Алексей поглаживал ноутбук, впечатлившись концовкой фильма. Семен терпеливо скучал, размышляя о том, правильную ли профессию он выбрал, а в перерывав мечтал о шоколадке. Кто-то еще храпел за стойками, то и дело подергиваясь во сне. Остальные действующие лица сосредоточено смотрели в монитор, на котором, без прикрас, была отражена вся наша жизнь. «Запустилось!» — выдохнул Николай и схватил трезвонившую трубку. Это были «прикладники», они уже мылили веревки и звонили прощаться. «Проверяйте приклад!» — гаркнул Николай и отряхнул галстук.

Часть 15. Коробка


Я сидел на коробке и счастливо улыбался, думая, как сейчас из всех жилых домов этого прекрасного города ручейками тянутся люди в бушлатах, ушанках и валенках. Они собираются в очередь к банкоматам, а те также радостно и надежно их обслуживают. И во всей этой картине было какое-то правильное человеческое счастье.

У нас все заработало, и за 2 минуты до начала рабочего дня система была запущена. Коллеги молча благодарили меня, пожимая руку и качая головой. Все, что произошло той ночью, мы собирались унести с собой, не выдавая никому.

Мне еще продолжал писать индус, все еще предлагая какие-то безумные идеи. В это время в машзал открылась дверь и просунулась чья-то заспанная физиономия. Это был охранник с проходной. Он молвил: «Там курьер приехал. Говорит, робота какого-то привез. Робота-библиотекаря вроде...».

Начинался новый прекрасный рабочий день.