Вопрос или проблема
Ubuntu 16.04 – запущена в режиме восстановления с помощью USB Ubuntu 18.04. Выделенный веб-сервер, массив является загрузочным разделом.
RAID5 с 4 дисками, 3 рабочие и один запасной. Один диск вышел из строя, и запасной исправно его заменил. Неисправный диск был удален из массива и из машины. Машина работала, пока не случился сбой питания, который длился дольше, чем работа ИБП. При перезагрузке массив не смонтировался и выдал ошибку ввода/вывода, после чего открыл initramfs.
Режим восстановления не смог автоматически собрать массив, поэтому я запустил оболочку. Команда обычной сборки завершилась ошибкой с сообщением о плохих суперблоках.
mdadm --assemble /dev/md127 /dev/sd[b,c,d]
Завершается с ошибками суперблоков.
mdadm --assemble --force /dev/md127 /dev/sd[b,c,d]
Завершается с ошибками суперблоков.
mdadm --assemble --force /dev/md127 /dev/sd[b,c,d]1
Это сработало. Сборка через разделы почему-то была разрешена. Я смог смонтировать диск и начать копирование на запасной незарезервированный диск. Сейчас идет копирование, и я ожидаю, что это займет очень много времени, так как речь идет о 850 гигабайтах данных. Вероятно, всю ночь или даже дольше.
Не хочу останавливать это, поэтому, думаю, мне следовало сначала задать этот вопрос или хотя бы сохранить вывод некоторых команд перед началом крупного копирования.
mdadm –detail показал массив как чистый, но деградированный. И суперблоки как постоянные. Деградированный, я понимаю, он без запасного. Постоянные суперблоки ставят меня в тупик, так как ошибка связана с плохими суперблоками.
mdadm --examine /dev/sdX
Magic: aa55e или что-то похожее, одинаковые записи на всех дисках. Я ожидал проблемы здесь из-за сообщения об ошибке суперблоков.
Показывает размер чанка и Super 1.2
cat /proc/mdstat
Показывает ожидаемую информацию с _UUU, чтобы показать отсутствующий диск.
Мой вопрос: можно ли воссоздать суперблоки и заставить этот массив загружаться без порчи данных? Я могу переустановить всю машину, если потребуется, но не хотел бы этого делать.
Слышал, что некоторые люди говорят использовать команду mdadm –create –assume-clean для этого. Слышал также, что это довольно опасно. Есть ли лучший способ?
.
Ответ или решение
Ваша проблема связана с массивом RAID 5, который не загружается из-за ошибок, связанных с повреждением суперблоков. Давайте разберем ситуацию и возможные решения.
Теория
RAID 5 — это система хранения данных, которая распределяет данные и паритетные данные по нескольким дискам. В случае сбоя одного из дисков массив может оставаться функциональным благодаря информации о паритете, что позволяет восстановить данные. Однако при сбое питания, как в вашей ситуации, может произойти повреждение метаданных RAID, что приведет к проблемам с инициализацией массива и вызовет ошибки суперблоков.
Суперблоки в контексте RAID содержат метаданные, которые предоставляют информацию о конфигурации массива, такой как уровень RAID, размер блока, идентификатор массива и расположение данных и данных о паритете. Повреждение этих данных может привести к тому, что массив не сможет корректно собраться.
Пример
В вашем случае:
- Вы сталкиваетесь с RAID 5, который не может инициализироваться после сбоя питания.
- Через
mdadm --assemble /dev/md127 /dev/sd[b,c,d]
, система выдает ошибки суперблоков. - Принудительная сборка с
--force
не дает результатов до тех пор, пока вы не указываете конкретные разделы (/dev/sd[b,c,d]1
), а не только устройства. - После этого вы смогли собрать массив и начать копирование данных.
Ситуация демонстрирует типичные проблемы с метаданными массива из-за некорректной остановки.
Применение
Теперь, когда вы начали копирование данных, важно сначала завершить эту операцию. Это позволит вам иметь резервную копию всей информации перед изменениями, которые могут потенциально повредить данные.
После завершения копирования данных, вы можете попробовать следующие действия для восстановления суперблоков и инициализации массива:
-
Проверка и восстановление суперблоков:
- Используйте команду
mdadm --examine --scan
для просмотра текущих параметров RAID. Это позволит вам увидеть текущее состояние суперблоков. - Попробуйте восстановление суперблоков через
mdadm --assemble --run
. Если не получится, может потребоваться восстановить суперблоки вручную, что требует более детального анализа и понимания их структуры.
- Используйте команду
-
Создание массива с
--assume-clean
:- Если вы уверены, что данные на дисках в порядке (что показывает успешное копирование данных), вы можете попробовать создать массив заново с параметром
--assume-clean
. Это действие сообщает системе, что наличие данных в таком виде допустимо, и создаются только метаданные, такие как суперблоки, без изменений фактических данных:mdadm --create --assume-clean /dev/md127 --level=5 --raid-devices=3 /dev/sd[b,c,d]1
- Внимание: Использование
--assume-clean
может быть опасным, если предположения о состоянии данных неверны. Убедитесь, что у вас есть надежная резервная копия всех данных перед использованием этого метода.
- Если вы уверены, что данные на дисках в порядке (что показывает успешное копирование данных), вы можете попробовать создать массив заново с параметром
-
Другие соображения:
- Если методы восстановления не дают результатов, может быть целесообразным собрать массив на тестовой системе для дальнейших попыток восстановления.
- Проанализируйте журналы системы, чтобы лучше להבין проблему и возможные дополнительные ошибки.
-
Новое оборудование или устройства:
- Если возможно, установите новую копию Ubuntu на новую систему или на новый диск, чтобы избежать повторного риска, связанного с используемыми в данный момент изношенными компонентами.
В заключение, восстановление вашего RAID-массива должно начинаться с обеспечения безопасности данных, а затем перехода к методам, которые дают возможность безопасного восстановления метаданных без ущерба для данных. Будьте осторожны при использовании параметров, которые могут изменить метаданные массивов, и всегда поддерживайте актуальные резервные копии.