Эта история произошла со мной в течение предыдущей недели — с 26-го по 31 января 2009. Прожив этот чудесно крохотный период своей жизни, я осознал необходимость простых вещей, поверил в существование «случая» и все более разочаровался в людях. Тегами этой недели были RAID, Инфобокс и бекап. Хотя началось-то все гораздо раньше…
Часть первая
В январе 2008 года я арендовал сервачок в питерской компании Инфобокс. Средненький по характеристикам, относительно дешевый, он, как нельзя лучше, удовлетворял моим текущим запросам. В услугу аренды входила первоначальная установка операционной системы, коей конечно стала freebsd и желаемое разбиение на разделы. Так же любезные работники техподдержки объединили пару 120 гиговых винтов в программный RAID 1 (зеркало). Заботиться о сервере я попросил своего товарища, работающего системным администратором сразу во множестве мест. Он установил веб-сервер, настроил все службы, в том числе полный бекап данных в архивы дважды в сутки. На своем домашнем компьютере я поднял скрипт, который эти бекапы исправно забирал и складировал в папочку. Папочку эту я периодически подчищал.
Читателю стоит согласиться, что в целом вышло все довольно неплохо: RAID 1 + архивы на сервере + архивы на моем домашнем компьютере, который включен круглосуточно.
Сразу на новоиспеченный сервер я перенес с хостинга сайт о
CakePHP, а позже появились и прочие сайты, известные хабрааудитории, такие как
MyNotifier,
CodeIgniter, свою
домашнюю страничку, а так же множество других проектов, которые отношение к моему повествованию имеют весьма отдаленное.
Часть вторая
Так и жил я себе припеваючи, пока в январе уже этого года не решил обновить свою домашнюю устаревшую ubuntu. С номера 8.04 до номера 8.10, а заодно и жизнь десктопную сначала начать — отформатировать винты и поставить операционку «на чистую». Дело это благородное произошло 23 января. Большого смысла сохранять накопленные бекапы не было: «переустановлю систему — настрою скрипт заново и соберу архивы», думал я. Но жизнь быстра и непредсказуема и в следующие пару дней у меня не получилось уделить много времени настройке своей новенькой 8.10.
Вернувшись вечером 26-го числа домой, я обнаружил забитый сообщениями контакт лист jabber'а и ICQ. Все как один писали, что что-то да на моих сайтах не работает. Убедиться в этом было не сложно — достаточно открыть любой из проектов и подождать пол-минуты загрузки страницы с ошибкой базы данных. Решив, что дело просто, я ребутнул проказницу mysql, но эффекта желаемого это не принесло. Мало того, сервер отвечал по ssh со скоростью черепахи или чуть медленнее того. Ситуация усугубилась тем, что мой товарищ-администратор в это время мирно ехал в поезде «Санкт-Петербург — Москва» и проблемы мои мирские были неподвластны его желанию их решить.
С просьбой о перезагрузке сервера я обратился в техническую поддержку компании Инфобокс. Так началась моя переписка с ними, состоящая на сей момент из 53 писем.
Сервер был перезагружен, но ничего не изменилось, тогда я высказал предположение, что что-то сгорело, это мог быть кулер или винт. Оказалось что это был винчестер, который сотрудники техподдержки, спустя час с небольшим, любезно заменили, запустив фоновое копирование со старого винта. Дело было к ночи, и после нескольких бесплодных попыток достучаться до сервера, я отправился спать, решив что фоновое копирование, которое так заняло сервер, должно бы закончиться к утру. Но и на утро ничего не изменилось.
Тем временем в Москву прибыл мой администратор и спустя некоторое время скинул мне лог безуспешных попыток записи на новый винчестер. Выглядит это так.
…
Jan 27 10:44:44 oowl kernel: ad6: TIMEOUT — WRITE_DMA retrying (1 retry left) LBA=74274048
Jan 27 10:46:14 oowl kernel: ad6: TIMEOUT — WRITE_DMA retrying (1 retry left) LBA=74344960
Jan 27 10:47:05 oowl kernel: ad6: TIMEOUT — WRITE_DMA retrying (1 retry left) LBA=50792319
Следующие пол-дня ушли на то, чтобы инженеры Инфобокса сами убедилась в невозможности записи и в неисправности нового винчестера. Жесткий диск был вновь поменян и теперь уже запустилось настоящее фоновое копирование. К тому моменту мне пришло уже пятидесятое письмо от пользователей с вопросами о том что стряслось.
Когда сервер стал отвечать на запросы с приемлемой скоростью, и я уже было подумал что это конец неприятной истории, но, как оказалось, приключения только начинаются, ведь я попал в прошлое! Последние сообщения на форумах датировались 24 мая 2008 года. Вакансии в MyNotifier подтверждали мою телепортацию. Чтобы убедиться в том, что я не сошел с ума, мне пришлось посмотреть на календарь. На нем была зима, а на сервере уже весна, правда, прошлого года.
После переговоров с саппортом, я получил от них следующее.
Сейчас на сервере работает жесткии который находился в рейде до поломки второго винчестера. Второй винчестер вышел из строя на физическом уровне восстановление данных невозможно, с мая жесткие должны были синхронизироваться, видимо из за какой то ошибки того же жесткого вышедшего из строя этого не происходило.
Часть третья
Вот так я остался у разбитого корыта: на первом винчестере цветет май, второй «вышел из строя на физическом уровне восстановление данных невозможно», а на локальном компьютере еще не был настроен скрипт для собирания бекапов (помните мой переход на 8.10?). Таким образом я потерял информацию, накопленную почти за год, в том числе полностью исходники некоторых проектов, дублей которых не было.
Перекопав всю переписку за май со своим администратором, я пришел к выводу, что ничего в мае не устанавливалось, не стиралось, да и вообще не перегружалось. Ни в каких логах отказ винчестера не прошел.
Надо было что-то делать и как можно скорее. Обзвонив серьезные компании, которые занимаются восстановлением данных, я договорился о визите в дата-центр и о том чтобы мне отдали умерший винт под расписку. Попасть в ДЦ можно лишь с 10 утра. В 9:30 я уже обивал пороги. Схватив теплящийся труп винчестера, примчался в реанимацию для таких как он.
Часть четвертая
В 10:15 я уже описывал мастеру произошедшую ситуацию. «Посмотрим», — буркнул он и углубился в темное помещение за стойкой, оставив меня заполнять анкету с вопросами об объемах разделов, расположении информации и о том что нужно восстановить в первую очередь. Не провозился я и пяти минут, как выбежал мастер со словами: «Вы издеваетесь, да?! Вам скучно что ли?! Зачем вы принесли мне целый винчестер?!».
Тут возникла неловкая пауза. Техник смотрел на меня с упреком, а я смотрел на него, не доверяя его профессиональным способностям, уже мысленно похоронил винт. «Не может быть, проверьте еще раз», — не верил я своим ушам. Мастер подключил винт к виндовой машине, стоявшей за клиентской стойкой и через утилиту UFS Explorer показал мне содержимое винта, мои документы, базы данных, картинки и все что я только не просил, в надежде избавиться от ненормального клиента.
С винчестером я приехал домой и, о ужас, осознал что мне просто некуда его подключить — у меня нет стационарных ПК. Обзвонив всех знакомых, я убедился в том, что если люди не были владельцами лептопов, то винчестер с SATA разъемом у них было вставить некуда. Разумеется, для моего администратора это не было проблемой, но он был в Москве.
Тем временем продолжалась гневная переписка с техподдержкой инфобокса. В качестве оправдания они выбрали для себя фразу:
Мы несмогли работать с данным диском, возможно дело именно в кофигурации сервера.
А так же написали:
… вы можете привезти жесткии назад к нам мы попробуем скопировать информацию, или подключим его к вашему серверу.
Вариантов у меня не было и следующим же утром я доставил винчестер обратно в дата-центр. Тем временем, количество писем с просьбами разъяснить ситуацию перевалило за 80 и новый жесткий, поставленный в арендуемый сервер, начал потихоньку отказывать.
Часть пятая
2009-01-29 11:03:32 <...> Хорошо, в течении дня скапируем данные.
2009-01-29 19:18:28 Нет копирование ещё не производилось, были проблемы со «старым жестким» монтировалась только корневая файловая система обьемом 500Мб, сейчас удалось примантировать /var /usr /home разделы но всё равно появляються ошибки. <...>
и про обновленный сервер, который стал постоянно висеть:
Сервер висел, на консоль сигнало не выводилось, перезагружен сейчас пингуеться <...>
На следующий день, ближе к вечеру, появился на связи мой администратор, который пояснил, где лежали необходимые данные. Эту информацию я тут же отправил техподдержке.
2009-01-30 17:36:59 Спасибо за информацию, будем держать вас в курсе дела.
2009-01-30 21:53:53 Я: В каком состоянии сейчас процесс?
2009-01-30 21:55:57 Инженер: Пытаемся скопировать данные.
Часть шестая
Терпение мое лопнуло, прошло, как вы понимаете, двое суток фраз «пытаемся скопировать» и субботним утром следующего дня мне разрешили вновь забрать винчестер. Ударив по газам, я отправился к только что вернувшемуся в Петербург администратору.
Каким же было мое удивление, когда он сказал что просто скопировал все данные. Ошибки вызвало только чтение одной innodb'шной базы, которая сильно порушилась при сбое. Остальные же файлы были извлечены без каких-либо проблем. Встает резонный вопрос: чем же занимался саппорт двое суток, отписывая мне репорты о процессе восстановления. Но оставим его на совести инженеров, которые, кстати говоря, в «попытках» считать данные с винчестера, записывали их на него же!
Заключение
История моя со счастливым концом. Все данные возвращены, проекты работают. От аренды сервера я отказался, поставив свой собственный на colocation. Деньги за остаток срока аренды мне вернули в три этапа: сначала намертво отказали, затем зачислили с ошибкой в 800 рублей в свою сторону, затем, после очередного письма, исправили.
Не знаю, помогла ли кому-нибудь произошедшая со мной история убедиться в необходимости надежных бекапов, выбрать себе дата-центр или просто задуматься о ценности информации, но меня она многому научила, изрядно потрепала нервы и дала неоценимый жизненный опыт. В результате недельной переписки с саппортом, 119 письмами от пользователей сайтов и бесконечной беготни, я все же нашел больше чем потерял.
Спасибо за внимание.
комментарии (96)
* в инфобокс ни ногой :)
1. проблемы уровня датацентра случаются очень редко (вроде проф.работ или отключения электричества),
2. колоку там стоять лучше, нет проблем с доступом к серверу
3. пока ничего лучше я в Питере не нашел, исходя из собственного опыта и рекомендаций знакомых.
насторожили только безграмотные ответы поддержки, что очень печально, поскольку это лицо компании и похоже оно «грязное»
Согласен с Вами, что такие письма режут глаза. Но вспомните клиентский отдел сбербанка (около месяца назад публиковалось здесь) — вот это огонь.
но одно дело написать в интернете «как-бы» и совсем другое в переписке с клиентом «скапируем»
я вот призадумался бы, если он там «капирует», то к чему это приведет? насколько я понял автора, ни к чему хорошему это так и не привело
* история со сбербанком прошла мимо меня, видимо, совсем не помню
На самом деле я не совсем согласен, что техподдержка — это лицо компании (в отличие от клиентского отдела, например).
Если бы они быстренько всё сделали, скопировали как следует, а не мямлили двое суток что-то непонятное и не заставляли бы клиента бегать по городу с исправным хардом — то на орфографические ошибки глаза сами закрываются.
1. Так примонтировали рейд, что он отвалился. Позже я узнал, что у них это не первый случай.
2. Сказали что винт «вышел из строя на физическом уровне восстановление данных невозможно».
3. Двое суток «занимались восстановлением».
4. Писали восстанавливаемые данные на «убитый» винт.
даже потрудился найти ссылочку
сейчас виртуальным хостингом не пользуюсь, но держу на колокейшне 2 сервера, один в инфобоксе, второй в валюхосте, и я скажу вам так, в валуе все гораздо стабильнее работает последние 3 года :)
Именно это я хотел донести, не более того.
P.S. повторюсь, я не знаю, как там дела обстоят с виртуальным хостингом
Говорю как админ.
П.С. мне больше понравилось описание с художественной точки зрений, нежели с практической: так грамотно и приятно написано. Завлекает вопщем )
в вашей нештатной ситуации видимо квалификации саппорта не хватило. как я понимаю у них там два уровня — мальчики и более-менее админы. видимо вы попали на мальчиков. у меня был случай с битым glibc, мальчик сразу сказал решить не может ждите админа будет ночью — в районе 4х утра получил письмо от другого сотрудника техподдержки с внятным ответом что сделать и совместными усилиями к 8ми утра сервак ожил.
Можно грабить корованы! ))
в таких ситуациях никогда не стоит давать последний ключ к восстановлению своих данных суппорту. всегда и только всегда решать самому, или искать у друзей-знакомых знающего человека.
А сам делаю бекап еще ж0сче — продакшн утром по ftp сливает зипованные бекапы базы на тест-сервер, тот зеркалит на сервер с базой данных (там винт большой в зеркале:), и параллельно на 10гб подаренных хостинг-провайдером под бекап. Полгода назад сливал еще и на домашний комп по ночам, но решил что это уже слишком (при канале в 2мбит и пинге в 200, привед Авангард!)
Что касается качества самого датацентра — мне к сожалению пока не с чем серьезно сравнить, но «разрывы» случаются регулярно — раз в три дня — это хорошо видно по статистике трафика
добавил кармы, очень интересно было бы услышать
А Вы бы сначала в личный блог, а потом уже глядишь и в тематический перенесли бы…
Спасибо за «историю», зафалловил Вас в твиттере.
Ладно, бэкапы не сделаны. Но Вы отдали целый винчестер с последней копией данных сомнительным личностям. Вторая ошибка.
Третья ошибка. Как можно было не заметить неработающий софтовый рейд? Ваш администратор вообще интересуется состоянием сервера? Ну ладно, в Вашей реализации нет /proc/mdstat — но где-то же отражается его состояние?
Четвёртая странность. Все известные мне администраторы — а их не один — имеют и друзей-администраторов, и парк машин, на которых можно сделать что угодно. Вы нашли администратора — аутиста?
Удивительное разгильдяйство Вы продемонстрировали :) Конечно я сочувствую Вам, да и Ваша история — хрестоматийный случай первого попадалова с бэкапами. У меня тоже такое было.
ЗЫ
Пойду-ка я свои бэкапы проверю…
Последнее время Инфобокс работает замечательно, от основной своей проблемы с электричесвом они почти избавились.
Вспомните новогоднюю ночь последнюю)))
Саппорт от хостеров — зло
Админ — друг — тоже зло
Исправить эти ошибки поможет использование железного рейда, лучше 1+0 и работа с конторой, специализирующийся по настройке сервера
Ну и конечно бекап — стоит завести себе NAS и дать туда доступ заливки с серверного IP.
Можно надеятся только на самого себя, ни подпускать никого — но тогда, в случае чего, и помочь то некому будет.
программный рейд в бсд — зло. (на centos сообщения о проблемах на софт рейде уходят админу на почту сразу после установки)
саппорт от быдлохостера — зло. (бегите от ру-хостеров, в европе почти везде супер с саппортом)
Неграмотный друг-админ — зло. (грамотный — Ъ^2)
а так — те же яйца…
Давно сошедший с гарантии без резервного такого же.
Вообще что угодно зло без головы грамотного специалиста. Брать унменджмент сервер, криво настроить у знакомого одмина за пиво, а потом удивляться, что те, кто этого вам не обязан его так долго чинил.
данные удалось спасти за счёт того, что известна была точная разметка диска.
перекинул винт в другой, проинитил, загрузился с флешки, разбил так же fdisk-ом, прочекал fsck.ext3, и вытащил всё из lost+found.
но опять же — какой-то процент процессора тратится на рейд, а это — деньги в том же хостинге.
Другое дело, что у железок есть совсем не лишний кэш и батарейка.
Но в сегменте сервер за 200 баксов в месяц такая железка не уперлось.
Посоветуйте кого нибуть
Тут же все проблемы автора связаны с некомпетентностью работников ДЦ — чем они там 2 дня занимались, пытались прочитать информацию с рабочего винчестера? Ждали пока всё само заработает?
Я тут на досуге подсчитывал (сервисы amazon и просто дедики), сколько мне будет стоить разместить свои проекты «за бугром», придется квартиру продать :)
Он должен менять железки — остальное это уже самому надо делать.
Ну всё же это не совсем верно, держать исходники на одном-только продакшн-серваке. Ладно там базы данных — они большие, постоянно меняются. Но ведь исходники то занимают совсем мало и во времени неизменны.
А вообще, жизненный опыт подсказывает, что если в чём-то положиться только на кого-то другого и не перестраховаться, обязательно будет лажа.
Но у меня на серверах настроен smartd, который запускает slftest'ы на хардах и пишет лог изменения всех S.M.A.R.T. аттрибутов, и если хард начнет сыпаться, в абсолютном большинстве случаев я узнаю об этом до того, как будет возможна потеря данных.
Мое имхо: ваш администратор поленился и все это можно было предотвратить.
Вообще, надежный дешевый минимум — это сервер с тремя дисками — два в зеркале, один в беке. И все разных серий, а лучше и фирм.
*ушел делать бекапы
Не приходит письмо на ящик maravan@gmail.com :(((
НА сервере стоит отдельный винт только для бэкапов, с него периодически вытягиваю все домой, где копия лежит на домашнем компе и пишется на DVD болванки. Пока проблем не было, когда что-то ломалось и падало, бэкапы меня всегда спасали :)
Ни служба поддержки ни хостер не виноваты в том что произошло, даже все эти запинки и непонятные действия службы поддержки — просто человеческий фактор и услуга, не включенная в стоимость аренды места в стойке и подкючения его к сети.
Я не виню автора топика что его погубила жадность, но есть вещи приоритет которых настолько высок, что без них просто не стоит начинать работать. Можно было арендовать попроще процессор, диски меньшим объемом, но не стоило экономить на сохранности данных и надеятся на программный RAID.
Скорее всего это произошло из-за неопытности автора. Надеюсь сервер который вы купили работает с аппаратным RAID? ;)
В нижнем сегменте ненаколенных серверов очень часто стоит вполне себе интеловский недораид, который явно хуже того же geom.
А так, не будьте так категоричны и откроете много интересного.
и чем бы автору помог в данном случае аппаратный рейд?
в БСД ещё фиг знает, получится ли состояние массива проверять в аппаратном (зависит от модели рейд-контроллера), а в программном по крайней мере можно мониторить это дело…
К любой железке нужны руки и голова, пытаться голову и руки заменить дорогими детальками доведет до смешных ситуаций.
а то мало ли что ети умники в ДЦ нарубят
самому приходится работать са американскими ДЦ и реально 2 из 3 просто сборище пьяных неадекватных пидарасов
делали бы так же — не было бы проблем, и быстрее гораздо, чем всё заново под себя настраивать.