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

У меня есть система RAID1 с 2 жесткими дисками, и все разделы установлены поверх массива RAID, включая раздел /boot. Сегодня mdadm предупредил меня о том, что массив был поврежден (возможно, один из жестких дисков вышел из строя), и когда я проверил, массив автоматически перешел в ухудшенное состояние следующим образом:

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0]
      204736 blocks super 1.0 [2/1] [U_]

md2 : active raid1 sdb2[0]
      151858048 blocks super 1.1 [2/1] [U_]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md1 : active raid1 sdb3[0]
      4092864 blocks super 1.1 [2/1] [U_]

Затем я приступил к выключению сервера, заменил неисправный диск и попытался загрузиться с оставшегося диска, но теперь меня приветствует следующее сообщение после того, как GRUB попытается загрузить ядро:

Error 17: Cannot mount selected partition.

Кто-нибудь знает, куда я иду отсюда, чтобы загрузить систему с моего рабочего диска? У меня практически нет знаний о GRUB, и я несколько раз пытался читать документацию, но она все еще слишком сложна для меня, и я спешу, так как теперь у меня в руках выключенный сервер. Любая помощь будет оценена.

2 ответа2

0

Отвечая на мой собственный вопрос несколько хороших лет спустя ...

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

Все, что я здесь упоминаю, сделано с:

  • CentOS 7 с ядром ml от ELRepo .
  • Оба устройства были добавлены в raid1 во время установки ОС (например, так), и все разделы были смонтированы поверх raid1 (/boot , / и swap). LVM или нет, кажется, не имеет значения в отношении этой темы.
  • Как и в случае установки CentOS 7 по умолчанию, он поставляется с GRUB2 вместо устаревшего GRUB , что является большим отличием, так как большая часть документации, которую вы найдете в Интернете, относится к v1.
  • Моя установка НЕ содержит раздел EFI . Из того, что я обнаружил, EFI не работает поверх RAID, поэтому большое внимание здесь, так как процедура ниже не будет работать правильно, если у вас есть EFI.

Мне стало ясно, что проблема была в том, что CentOS устанавливал загрузчик (GRUB2) только на первое физическое устройство. Очевидно, он использует крошечный раздел MSDOS (является ли раздел правильной терминологией? Может быть, «флаг»?) который не может работать поверх RAID. Из-за этого даже простая замена дисков приводит к невозможности загрузки системы, так как, несмотря на то, что на вторичном диске имеется полная копия системы, на нем нет загрузчика.

Теперь рассмотрим решение, которое, как мы надеемся, достаточно простое: скопируйте загрузчик с основного диска на дополнительный диск.

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

Исследуя это, я нашел решение использовать dd для копирования загрузчика на второй диск. Я нашел сообщение от пользователя, в котором говорилось, что они всегда так делали и всегда работали, но для меня по какой-то причине это не так.

Пытаясь лучше понять, как работает GRUB2, я обнаружил, что он включает в себя инструмент «установить», который легко добавляет загрузчик к нужному устройству, и вот, это было именно то, что мне было нужно! Все, что мне нужно было сделать, это:

grub2-install /dev/sdb

Затем после замены дисков система все еще загружалась, как и ожидалось! Половина миссии выполнена.

Затем, после подтверждения того, что оба устройства могут загружаться, мне просто нужно было удалить неисправный диск (теперь sdb) из массива (документацию по этому вопросу можно найти в Интернете, это помечает устройство как неисправное и затем удаляет его из массива) поменяв его на новый диск, а затем, наконец, добавив его обратно в массив mdadm, и, надеюсь, он начнет синхронизироваться автоматически (вы можете наблюдать за ходом работы с помощью watch cat /proc/mdstat).

Кроме того, не забудьте снова запустить grub2-install на новом устройстве.

Надеюсь, что это может помочь кому-то еще сталкиваются с той же проблемой.

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

0

Если я правильно понимаю, ваш первый диск (/dev/sda) - тот, который вы заменили. Также, возможно, при установке grub вы пропустили установку его на оба диска, как это необходимо при настройке RAID1.

Проблема в том, что grub ищет первый жесткий диск, на котором нет grub. Быстрый поиск в Интернете для поиска проблемы вызывает: https://www.novell.com/support/kb/doc.php?id=7010670. Смотрите шаги там и на связанных страницах и исправьте это по мере необходимости. Для /dev/sdb вам нужно использовать hd1 в grub.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .