Моя система программного RAID5 (mdadm) состоит из пяти дисков. Недавно я получаю ошибки ввода-вывода при чтении определенных файлов. Большинство других файлов по-прежнему читаются.
Сначала я планировал выяснить, какой диск сломался (используя smartctl) и быстро заменить неисправный диск, чтобы восстановить массив, прежде чем другие диски тоже выйдут из строя. Однако smartctl показывает, чтотридиски имеют неисправимые ошибки.
Я думаю, что mdadm все равно сможет выполнить восстановление, если поврежденные сектора этих трех дисков не пересекаются, что дает мне возможность менять их местами и восстанавливать по одному.
Или тот факт, что у меня ошибка ввода-вывода, уже означает, что четность потеряна и один и тот же сектор на нескольких дисках нечитаем? Есть ли способ узнать, пересекаются ли какие-либо неисправные сектора, и, таким образом, информация необратимо теряется?
решение1
Стандартные процедуры:
- Всегда имейте под рукой хорошую, актуальную информацию.резервное копирование(как минимум две независимые копии в разных местах, как минимум на разных носителях)
- Постоянномониторваш RAID для проблем. RAID бесполезен, если ошибки накапливаются.
- Скрабдиски по крайней мере ежемесячно. Это позволяет избежать накопления ошибок и предотвратить перестроения.
- УчитыватьRAID-массив 6с двумя избыточными дисками.
Ты, кажется, не воспринял это всерьёз. Попробуй восстановить то, что ещё там есть.сейчас. Попытка восстановить почти вышедший из строя массив может привести к большему ущербу, чем вы ожидаете.
Если данные достаточно ценны, найдите надежный и компетентный сервис по восстановлению данных. Отложите четырех-пятизначную сумму наличными. В противном случае промойте и повторите — замените диски, переформатируйте, переустановите и отнеситесь к стандартным процедурам более серьезно.
решение2
Вы правы в том, что если нечитаемые сектора «не пересекаются», т.е. лежат в разных полосах, MD RAIDможетвосстановить данные с помощью четности. Но это может выбить часть диска во время восстановления, и тогда шансы значительно уменьшатся.
Существует общее правило восстановления данных:всегда начинайте с сырого дампа. Это гарантирует вам неограниченное количество попыток: если вы что-то напутаете, вы сможете начать заново с дампа. Так что в общем-то, вы можете клонировать все умирающие диски на какие-то рабочие, прочитав ошибки, а затем собрать RAID из новых дисков.
Вы можете начать с клонирования каждого диска посекторно на замену
ddrescue
(т.е.нетс помощью процедуры восстановления MD RAID). Помимо копирования через ошибки, он создает то, что он называетжурнальный файл, которая на самом деле является картой плохих секторов. Когда вы клонируете все три из них, вы можете сравнить эти карты и узнать, есть ли какие-либо пересечения. Не выбрасывайте их, эти карты могут помочь вам во время восстановления.Однако RAID5 — очень отвратительный зверь в смысле таких дампов. Что может пойти не так? Если сектор вашего диска вообще не читается, выдавая ошибку ввода-вывода, уровень RAID восстановит эти данные с других дисков; это было бы в случае со старыми дисками. Но если он читает без ошибок, но возвращает неверные данные, RAID не будет пытаться восстановить их из четности и вместо этого вернет эти неверные данные.
ddrescue
заполнит нечитаемые сектора нулями, которые будут считаны обратно, если вы соберете массив с этим клонированным устройством позже, так что это будет означать чтение нулей (поврежденных данных) там, где потенциально можно было восстановить исходные данные. RAID не гарантирует данныечестность. И это реальная проблема для всех вариантов, кроме RAID6, который имеет два синдрома четности или RAID1 с более чем двумя зеркалами. И, как вы уже могли догадаться, эта проблема проявляется наиболее разрушительным образом в случае RAID5. (Есть еще одно соображение против этого, что-то о современных размерах дисков и их частоте битовых ошибок.)Во время любой операции клонирования диск может полностью умереть. Тогда вы застрянете. Существует возможность сделать восстановление после этой точки, но это будет стоить ваммного. Существуют службы, где есть "чистые комнаты", и они могут, например, заменить головки внутри жестких дисков и повторить попытку чтения; это медленно, подвержено ошибкам, и они, вероятно, возьмут с вас довольно большую плату. Рассмотрите это, если ваши данные очень ценны.
Поэтому разумно клонировать оригинальные диски, а затем убрать клоны, собрать массив изоригинальныйдиски и попробуйте клонировать из самого массива (
/dev/mdX
). Если что-то пойдет не так (диск умрет), замените его клоном и вручную восстановите сломанные полосы (см. стр. 4) впоследствии, сверяясь с файлами журналов (стр. 3). Это довольно тяжелая работа. Обратите внимание также, что вам нужно сэкономитьдваждыисходное пространство для выполнения восстановления. Или ничего не делайте сами, отдайте всю работу на аутсорсинг специалистам. Это цена, которую вы платите за неправильное обслуживание массива и данных.И теперь у вас есть этот драгоценный опыт. Не вините массивы, вините себя, извлеките урок и управляйте ими правильно:
- Подумайте трижды, прежде чем использовать RAID5. Затем скажите «нет» и выберите другой уровень RAID.
- Регулярно очищайте массив. Это означает, что MD RAID будет считывать и сравнивать данные на дисках и подаст звуковой сигнал, если что-то не так (несоответствие, нечитаемый блок). Затем вы можете заменить плохо работающий диск при ранних симптомах. В хороших дистрибутивах это настроено из коробки (по крайней мере, в Debian).
- Следите за дисками и массивом, чтобы не пропустить важные признаки проблем.
- Наконец, добро пожаловать в клуб администраторов, которые регулярно создают резервные копии своих данных.