Главная Windows, Новое Пока гром не грянет...
  • Пока гром не грянет...

    pesets

    Возможно, кому-то уже доводилось попадать в неприятную ситуацию – когда по какой-то причине выходит из строя RAID-контроллер, или просто массив «рассыпается». Особенно часто это происходит с дешевыми контроллерами, встроенными в материнскую плату. Расскажу небольшую, но поучительную историю, произошедшую со мной на заре моей админской карьеры.

    Итак, однажды все же случилось то, что могло представиться только в страшном сне.

    Одним прекрасным утром ко мне подходит наш тестировщик и спрашивает: «А что случилось с TFS'ом?». TFS – Team Foundation Server, некое веб-приложение, завязанное с MS Visual Studio, используемое программистами для отслеживания багов, и возможно – еще для чего-то, во всяком случае для меня этот TFS был «черным ящиком».

    Сервер, на котором это приложение запускалось представлял из себя обычный системный блок, с внешним SATA RAID-контроллером Adaptec 2410S. На трех SATA-дисках объемом 149Гб был создан массив RAID5, на котором все и было установлено. Батарейки у контроллера, естественно не было. Да, сейчас в меня полетят помидоры, но увы – сервер был поднят еще до меня, на брэндовый (судя по всему) денег не давали, да и я тогда особо не задумывался об этом. А зря.

    Итак, я, ничего плохого не подозревая, пингую сервер, на котором был установлен TFS. Не пингуется. Матерясь про себя, я пошел в серверную проверять кабеля — вроде все в порядке, сервер включен, диод “Link” на сетевой карточке горит. Захожу на сервер с KVM'a – и вот оно: «Non-system disk or disk error». С помощью Святой Троицы (Ctrl-Alt-Del) я перезагружаю сервер. Проходит POST, инициализируется RAID-контроллер и вдруг... «Array #0 has missing required members. Found 0 arrays.» Теперь я начинаю материться уже вслух. Нажимаю Ctrl-A, захожу в BIOS контроллера.

    Смотрю — а статус массива — FAILED. Два диска из трех показаны серым цветом.

    «Так вот ты какая, белая северная лисичка!» — подумал я. Начал думать, что же, собственно, произошло. Контроллер вроде как работает. Диски тоже будто бы видны. Запускаю проверку обоих «проблемных» дисков утилитой в BIOS контроллера. Проверка проходит успешно, «0 errors found». Перезагрузка — опять массив не найден.

    Написав заранее заявление об увольнении, я раскручиваю корпус сервера, ставлю его рядом со своим компом, подключаю жесткие диски (благо, они были SATA и я подключил их напрямую к материнке) и загружаюсь.

    Винты вроде бы определились. Надо теперь как-то вытащить с них данные, а именно – базы данных, в которых хранились данные TFS. Самая большая проблема заключалась в том, что надо было каким-то образом воссоздать структуру RAID-массива, и при этом не потерять данные.

    Блуждая по интернету, наткнулся на прогу Runtime RAID Reconstructor.

    В описании было сказана, что она может автоматически определить структуру массива. Качаю, запускаю.

    Окно программы выглядит так:


    reconstructorВ левой части окна я выбрал свои диски. Кстати говоря, эта программа позволяет создать полные образы дисков и потом подключать их вместо «живых» дисков — может оказаться полезным, когда диск начинает «сыпаться» и может выйти из строя в любую минуту.
    Затем я нажал «Open Drives» и «Analyze», чтобы проанализировать структуру массива.
    В мастере анализа, кстати, нет размера блока 512Кб (который вроде как использовался у меня), но можно добавить Custom Size, что я собственно и сделал. Количество секторов для анализа я оставил дефолтное (10000).
    Анализ прошел успешно, структура массива была определена.
    После этого она создала Virtual Image File — маленький (меньше 1Кб) файл с расширением *.vim, в котором описывается структура массива.
    Эта же программа затем предлагает открыть файл разными утилитами от Runtime — Captain Nemo, GetDataBack, Disk Explorer. Мне нужна была, судя по всему, Captain Nemo: задача была – вынуть данные с дисков. Качаю. Ставлю.
    Открываю ей свой vim — и, о, чудо! — увидел полное дерево папок! Нашел нужные файлы баз, сохранил их через Captain Nemo на свой винт и подключил на свежеустановленном TFS'e — и все заработало! Можно сказать, «пронесло». Заявлние об увольнении отправилось в шредер.
    Теперь — подведем итоги.
    В качестве сервера использовался обычный системник.
    Система вместе с БД лежали на одном 3-дисковом массиве RAID5, на одном разделе.
    Массив был построен на 3 SATA винтах, с использованием контроллера Adaptec 2410SA.
    Причины сбоя так и не удалось установить. По моим подозрениям, причиной стал сбой по питанию. RAID-контроллер не снабжен BBU (батарейкой резервного питания) и, по-видимому, во время записи на диск произошел сбой питания, в результате чего потерялась некая информация о структуре массива, и контроллер стал считать 2 жестких диска сбойными.
    Мораль сей басни такова: Нельзя целиком доверять RAID'у! Особенно — сделанному на дешевом железе.
    Надеюсь, сей опус поможет кому-нибудь, кто попадет в подобную ситуацию. Но все же еще больше я надеюсь, что она поможет не попадать в нее. На этой оптимистичной ноте я, пожалуй, закончу.

    • Рубрика: Windows,Новое
    • Автор: Александр Косивченко
    • Дата: Четверг 09 Апр 2009

Комментарии

  1. Админы делятся на тех кто ещё не делает бекап и на тех кто уже делает бекап. ©

  2. Именно! Думаете, зря картинка в верху? 🙂

  3. Нет рейда кроме единички, и десятка пророк его!

    Рейд 5 — потенциально проблемная конфигурация, особенно на 3 дисках.

  4. Ага 10-ка рулит однозначно, но статья хорошая, автору спасибо.

  5. Какая-то не законченная статья...

    Рейд и не должен заменять бэкап, у него другая задача...

  6. Спасибо, Евгений!

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

    А RAID бэкап и не заменяет. Хотя RAID1 — это грубо говоря бэкап на диск. Эдакий Continious Data Protection 🙂

  7. да не плохо было бы еще и ссылки на проги давать (ну это так к слову)

    спасибо за статью!

  8. да и PDF статьи неть (

Опубликовать

Я не робот.