Рейтинг:1

Восстановить RAID5 с некорректируемыми секторами на нескольких дисках

флаг cn

Моя система программного RAID5 (mdadm) состоит из пяти дисков.В последнее время я получаю ошибки ввода-вывода при чтении определенных файлов. Большинство других файлов по-прежнему доступны для чтения.

Сначала я планировал выяснить, какой диск сломан (используя smartctl), и быстро заменить неисправный диск, чтобы восстановить массив до того, как другие диски также выйдут из строя. Однако smartctl показывает, что три диски имеют неисправимые ошибки.

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

Или тот факт, что у меня есть ошибка ввода-вывода, уже указывает на то, что четность потеряна и один и тот же сектор на нескольких дисках не читается? Есть ли какой-нибудь способ выяснить, пересекаются ли какие-либо неисправные сектора, и, таким образом, информация безвозвратно потеряна?

Michael Hampton avatar
флаг cz
Похоже, у вас нет резервной копии. Это должно быть вашим главным приоритетом.
Nikita Kipriyanov avatar
флаг za
@CIA Последняя идея dd заманчива, но сомнительна. Когда блок не может быть прочитан, MD увидит это и восстановит правильные данные с других дисков. С другой стороны, `dd` заполнит это пространство нулями, и блок будет доступен для чтения с нового устройства, а уровень RAID не будет знать, что лучше восстановить, что приведет к повреждению данных. // Кроме того, вам не нужно вкладывать средства в программное обеспечение, «чтобы помочь определить, как устанавливаются блоки». Это программное обеспечение называется `mdadm`, оно скажет вам, если вы правильно спросите, а документация ядра Linux и исходный код подробно объяснят его ответ.
Рейтинг:3
флаг ru

Стандартные процедуры таковы:

  1. Всегда иметь хорошее, актуальное резервный (не менее двух самостоятельных копий в разных местах, не менее на разных носителях)
  2. Постоянно монитор ваш RAID для проблем. RAID бесполезен, если допускается накопление ошибок.
  3. Скраб дисков не реже одного раза в месяц. Это позволяет избежать накопления ошибок и предотвратить перестроение.
  4. Рассмотреть возможность RAID 6 с двумя резервными дисками.

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

Если данные достаточно ценны, найдите надежную и способную службу восстановления данных. Отложите четырех-пятизначную сумму наличными. В противном случае промойте и повторите - замените диски, переформатируйте, переустановите и отнеситесь к стандартным процедурам более серьезно.

Рейтинг:2
флаг za
  1. Вы правы в том, что если нечитаемые сектора "не пересекаются", т.е. лежат в разных страйпах, то MD RAID май восстановить данные с помощью четности. Но он может выкинуть какой-то диск во время восстановления, и тогда шансы значительно снизятся.

  2. Существует общее правило восстановления данных: всегда начинайте с необработанного дампа. Это гарантирует вам неограниченные попытки: если вы что-то напутаете, вы можете начать заново с дампа.Так что в общем можно клонировать все умирающие диски на несколько рабочих, прочитав ошибки, а потом из новых дисков собрать RAID.

  3. Вы можете начать с клонирования каждого диска посекторно для замены на спасение (т.е. нет с помощью процедуры восстановления MD RAID). Помимо копирования через ошибки, он создает то, что он называет лог-файл, которая на самом деле является картой плохих секторов. Когда вы клонируете все три из них, вы можете сравнить эти карты и выяснить, есть ли пересечения. Не выбрасывайте их, эти карты могут помочь вам во время восстановления.

  4. Однако RAID5 очень неприятный зверь в смысле таких отвалов. Что может пойти не так? Если сектор вашего диска вообще не читается с ошибкой ввода-вывода, уровень RAID восстановит эти данные с других дисков; так было со старыми дисками. Но если он читает без ошибок, но возвращает неправильные данные, RAID не будет пытаться восстановить их по четности и вместо этого вернет эти неверные данные. спасение заполнит нечитаемые сектора нулями, которые будут считаны обратно, если вы позже соберете массив с этим устройством-клоном, поэтому это приведет к чтению нулей (поврежденных данных), где потенциально возможно восстановить исходные данные. RAID не гарантирует данные честность. И это настоящая проблема для всех вариантов, кроме RAID6 с двумя синдромами четности или RAID1 с более чем двумя зеркалами. И, как вы уже, наверное, догадались, наиболее разрушительно эта проблема проявляется в случае с RAID5. (Есть дополнительные соображения против этого, что-то о современных размерах дисков и их частоте ошибок по битам.)

  5. Во время любой операции клонирования диск может полностью умереть. Тогда ты застрял. Существует возможность выполнить восстановление после этого момента, но это будет стоить вам много. Есть службы, где есть «чистые комнаты», и они могут, например. замените головки внутри жестких дисков и повторите попытку чтения; это медленно, подвержено ошибкам, и они, вероятно, берут с вас довольно много. Учтите это, если ваши данные очень ценны.

  6. Поэтому имеет смысл клонировать исходные диски, а затем убрать клоны, собрать массив из оригинальный диски и попробовать клонировать с самого массива (/dev/мдХ). Если что-то пойдет не так (умирает диск), замените его клоном, а затем вручную восстановите битые страйпы (см. п.4), сверившись с лог-файлами (п.3). Это довольно тяжелая работа. Заметьте также, что вам нужно сэкономить дважды исходное пространство для выполнения восстановления. Или ничего не делайте сами, отдайте всю работу на аутсорсинг специалистам. Это цена, которую вы платите за неправильное обслуживание массива и данных.

  7. И теперь у вас есть этот драгоценный опыт. Не вините массивы, вините себя, извлеките урок и правильно управляйте ими:

  • Трижды подумайте, прежде чем использовать RAID5. Затем скажите «нет» и перейдите на другой уровень RAID.
  • Регулярно очищайте массив. Это означает, что MD RAID будет считывать и сравнивать данные на дисках и звонить в колокольчик, если что-то пойдет не так (несоответствие, нечитаемый блок). Затем вы можете заменить плохое поведение на ранние симптомы. В хороших дистрибутивах это настроено «из коробки» (по крайней мере, в Debian).
  • Следите за дисками и массивом, чтобы не пропустить важные признаки проблем.
  • Наконец, добро пожаловать в клуб администраторов, которые регулярно создают резервные копии своих данных.
user9517 avatar
флаг cn
Ваша последняя точка должна быть вашей первой.
Nikita Kipriyanov avatar
флаг za
Вопрос был не в том, «как правильно управлять массивом», а в том, «как восстановить массив». Так что технически последний пункт *оффтоп*. Но это полезно, поэтому я включил его.
user9517 avatar
флаг cn
Не помешает укреплять хорошую практику рано и часто.
Nikita Kipriyanov avatar
флаг za
Итак, это *последняя* точка, лучшее место для подкрепления. Я пытаюсь помочь, а не добить вопрошающего, который, наверное, уже рвет на себе волосы за то, что не сделал бэкапы.
флаг cn
@NikitaKipriyanov О п. 1: Почему MD RAID «выбивает» диск во время восстановления? Что значит «выгнать» в этом смысле? Я ожидал, что это будет намного проще решить. По крайней мере до тех пор, пока бэд-сектора не пересекаются. Я подумал, что могу просто 1) поменять местами первый неисправный диск 2) перестроить RAID и 3) повторить этот процесс все три раза. Предположим, что я заменю диск № 1, действительно ли так высока вероятность того, что диск № 2 будет «выбит» в процессе восстановления RAID?
Nikita Kipriyanov avatar
флаг za
1. MD RAID имеет «сбойное» состояние диска. Это состояние, когда диск считается частью массива, но не участвует в операциях ввода-вывода. MD может перевести диск в это состояние, если он ведет себя «слишком плохо», например, тормозит (срывает дедлайны), выдает много ошибок ввода-вывода и так далее. 2. Даже теоретически, поступая таким «простым» способом, вы фактически лишаетесь возможности восстановить все битые сектора всех остальных дисков. Потому что для этого требуются данные, которые были в живых секторах первого старого диска, который вы выгрузили. Одно это было бы неприемлемо для меня. Но это не единственная оговорка.
Nikita Kipriyanov avatar
флаг za
(2. продолжение) Основная проблема заключается в поведении процесса повторной синхронизации MD RAID при возникновении ошибки ввода-вывода. Я никогда не проходил этот процесс для RAID5, но в случае повторной синхронизации RAID1 я видел следующее: если он встречает нечитаемый блок на источнике (единственный диск, у которого есть полная копия на данный момент), он перезапускает повторную синхронизацию с начало. И затем он идет до первого плохого блока и снова перезапускается. Он никогда не проходил дальше первого плохого блока. Однажды мы решили эту проблему, принудительно переназначив этот поврежденный сектор (`hdparm -w`, насколько я помню, ой). Вот почему ваш «легкий» сценарий кажется мне совершенно неправильным.
флаг cn
Я понимаю вашу точку зрения: при удалении неисправного диска № 1 я фактически удаляю информацию, необходимую для восстановления нечитаемых секторов, скажем, неисправного диска № 2. Однако предположим, что я _добавляю_ новый диск в свой массив, разве теоретически не возможно заполнить этот диск избыточной информацией, чтобы я мог менять местами и перестраивать неисправные диски один за другим? Это «только» вопрос о том, что инструменты недоступны для этого, я полностью упускаю из виду, почему это принципиально невозможно?
Nikita Kipriyanov avatar
флаг za
Да, нет автоматического разрешения сбоев нескольких дисков и встроенной поддержки согласованности, как я описал в п. 4. Это RAID5, вы должны были это знать, когда развертывали его. Процедура, которую я описал в п.6 (клонирование данных из собранного массива), является способом ее решения, основанным на допущении в п.1). Пункт 3 необходим для защиты от наихудших случаев, потому что пункт 6 в целом может быть стрессовой операцией.

Ответить или комментировать

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