Все знают, что такое RAID-массив, но не все знают, что даже такой, казалось бы, высоконадежный девайс, может отказать, а данные с него – потеряться. И случается это, по закону подлости, как раз тогда, когда они больше всего нужны. Не верите? Вот две истории из последних двух недель.
История первая, загадочная.
Очень уважаемая в Кыргызстане телекоммуникационная компания потеряла RAID. Так получилось – RAID 1+0 одним «прекрасным» утром отказался работать. Судя по тому, что демонстрировала передняя панель устройства – вышел из строя один из дисков. Позвонили нам. Вопрос звучал так: заработает ли снова массив, если вышедший из строя диск склонировать, и на его место поставить клон? Мы честно предупредили: почти 100%, что нет. Однако у сисадминов свои тараканы в голове, и вот перед нами красуется один из дисков массива. Быстро разобравшись с проблемой, мы склонировали накопитель, и довольный сисадмин убежал, напевая, восвояси.
Через пару часов он позвонил снова. В голосе уже не было уверенности. Конечно, наш прогноз оправдался: клон «больного» не излечил массива. Надо восстанавливать данные.
По прошествии небольшого времени у меня на столе оказались уже все шестеро участников событий. Но это было только начало…
Работа была срочной (несколько отделов той самой компании ждали ее результатов – им попросту не с чем было работать), я уже не смыкал глаз вторую ночь, кропотливо исследуя диски сектор за сектором. Казалось бы, работа не должна быть уж очень сложной – подумаешь, два страйпа, собранных в зеркало. Но что-то не срасталось, страйпы собирались с данными, часть из которых была разрушена. Такое в случае с массивами бывает только в одном случае: один из дисков массива имеет хотя и правильные, но неактуальные данные.
Возник вопрос: как такое могло случиться со страйпом? На то, чтобы это выяснить, ушли почти сутки. Ах, если бы тот сисадмин рассказал все сразу, сколько времени это сэкономило бы… Хотите знать, в чем оказалось дело?
А вот. Когда массив развалился первый раз, он, как водится для таких умных устройств, решил сам себя починить. Для этого у массивов есть специализированные диски – hot spare – они не участвуют в работе RAID до тех пор, пока один из его дисков не прикажет долго жить. Как только выходит из строя один из накопителей массива – его подменяет hot spare, а контроллер массива своими средствами начинает перестроение (rebuild) всей системы. Ну и как результат – массив работает, hot spare в строю, а свежие трупы вчерашних живых накопителей несут на кладбище.
Но это в том случае, если у вас массив с проверкой четности (RAID-5 или RAID-6). Для его ребилда не требуется иметь в системе все диски исправными, так как данные со всех накопителей массива распределены по всему массиву, и если один из дисков выходит из строя, два других, содержащие и его данные тоже, поддерживают работоспособность массива, а в случае команды на ребилд – на них имеется достаточно данных для того, чтобы сформировать полностью рабочий RAID без привлечения третьих сил =).
Ну а если у вас массив без проверки четности – RAID-0 или RAID-1, то для того, чтобы воссоздать мертвый диск – правильно, вам нужен все тот же здоровый мертвый диск. Ничего так головоломочка?
В случае с нашим массивом все оказалось очень интересно. Массив пытался переребилдиться, но отваливался по ошибке – два раза, пока у него были доступные hot spare. Затем в него начали «пихать» диски в надежде на то, что ребилд дойдет до конца, и массив заработает. Увы… Это привело лишь к тому, что массив в один прекрасный момент решил, что один из его родных дисков – hot spare, и начал ребилдиться на этот накопитель. Так была потеряна единственная возможность относительно легко восстановить данные.
Когда я все это выяснил, я попросил того самого сисадмина принести мне все диски, которые когда-либо касались этого RAID-массива. В итоге к уже имеющимся шести добавилось еще три. И началось великое колдунство. Сначала я выбрал из этой кучи диски, которые точно не участвовали в ребилде. Потом я выбрал из оставшихся те диски, которые точно относились к единственному несуществующему накопителю (их оказалось 5 – а должно было быть 2). Вслед за этим я начал собирать из этих пяти дисков один единственный, правильный, утерянный в пучине ребилдов, накопитель, который мог спасти данные. Собрал (на это ушло почти сутки – границы областей, коснувшихся изменений приходилось искать глазами, автоматизировать не получалось никак – дисков то пять, данные «размазаны» по ним всем). Завел массив. Ура! Все данные на месте.
История вторая, грустная
Нет, вы не подумайте. Конец у истории хороший. Грустная она потому, что организация в 3000 человек три дня ждала зарплату. Почему тря дня? Скоро дело делается, да не скоро данные копируются. Русская народная мудрость. Но – по порядку.
Не прошло и недели после того, как мы восстанавливали данные телекоммуникационной компании, как к нам попал другой массив. Скажу сразу – намного сложнее, чем предыдущий. Во-первых, он был на дисках с интерфейсом SAS. Во-вторых, он состоял из дисков разного объема. И в третьих, это был не совсем RAID.
После того, как мы склонировали все диски массива (странное слово для того, чем он оказался, но все же…), мы обнаружили, что реально в каком-то массиве находятся только 2 накопителя: они были абсолютными клонами, т.е. были объединены в зеркало. Все остальные диски были разными по содержимому. Выходило так, что они работали в массиве независимо, и в системе, очевидно, виделись каждый как отдельный накопитель.
Ничего себе, массивчик…
А оказалось, что старый сисадмин ушел, новый – пришел, и решил, что негоже хорошему блэйд-серверу в каждой корзине по диску иметь, нехай будет массив! Сказано – сделано. Запустилось создание массива. Да вот незадача – диски то разной емкости. На таких дисках классические массивы не строятся, это вам не DROBO. Отвалилось создание массива с ошибкой.
И так три раза.
На четвертый раз понял сисадмин: не только массива нет, но еще и данных.
И позвонил нам.
Наученные горьким опытом, мы попросили привезти все диски массива. Первичный анализ показал, что данные в общем не пострадали, но слегка «перемешаны» не совсем удачными ребилдами. Ну как – слегка. Первые 100 Гигабайт на каждом из дисков представляли собой кашу из данных их самих и их соседей. Каких именно соседей – еще предстояло выяснить.
В таких случаях здорово выручает работа с образами. На физических дисках нельзя «откатить» изменения, если у тебя нет резервной копии. С образом все проще. Поскольку это файл, с ним можно проворачивать все файловые операции без ограничений. Да и резервировать файл намного проще, чем диск (хотя образ, по сути, и есть резервная копия накопителя).
Вернув сектора с разных дисков на положенные им места, мы получили полный доступ к данным, скопировали их на исправный накопитель, и передали заказчику.
И снова – все довольны =)