Отвечая на мой собственный вопрос несколько хороших лет спустя ...
В итоге я просто экспортировал все данные с этого сервера и отформатировал его, но недавно снова столкнулся с проблемой и решил заняться этим с глазу на глаз.
Все, что я здесь упоминаю, сделано с:
- 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
, хотя я не знаю, какие параметры вы должны ему дать).