Как исправить мой сервер для правильной загрузки после удаления / добавления диска на моем программном RAID-массиве mdadm

Я настроил массив RAID-5 для раздела данных, смонтированного на /mnt/data, Моя система не загружается на нем (/ а также /boot находится на выделенном диске, не являющемся частью какого-либо RAID-массива).

Я добавил 4-й диск в программный массив RAID-5 с 3 дисками в Ubuntu 12.04 через mdadm (программный рейд). Мой RAID массив содержал /dev/sdb1, dev/sdc1 а также /dev/sdd1.

Я использовал эту команду, чтобы добавить 4-й диск:

mdadm --add /dev/md0 /dev/sde

Затем я обновил массив, чтобы превратить его в RAID-6 рейд, используя это:

mdadm --grow /dev/md0 --raid-devices 4 --level 6 --backup-file=backup/raid-backup-file

Это прекрасно работает. Сервер работал и не было проблем с загрузкой. Единственная проблема в том, что я увидел, что я добавил 4-й диск в качестве целого диска. Я должен был добавить /dev/sde1 вместо сдэ!

Чтобы убрать это, я удаляю диск и добавляю его снова, но с разделом на этот раз:

mdadm /dev/md0 --fail /dev/sde --remove --/dev/sde
mdadm --add /dev/md0 /dev/sde1

После миграции он работал (массив был доступен), за исключением того, что при следующей загрузке я получил сообщение о том, что RAID-массив поврежден из-за отсутствия /dev/sde (все мои диски были помечены как запасные) и введен в приглашение initramfs. После выхода из этой оболочки сервер продолжил загрузку, не монтируя раздел данных из моего RAID-массива.

После входа в систему я смог остановить RAID-массив и повторно выполнить его через:

mdadm --stop /dev/md0
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 

и затем смонтируйте файловую систему. Все данные были там, и RAID-массив был чистым.

Однако система больше не загружалась должным образом. Последней моей попыткой было извлечь последний диск и снова изменить массив RAID-6 на RAID-5 с помощью:

mdadm /dev/md0 --remove /dev/sde1
mdadm --grow /dev/md0 --raid-devices 3 --level 5 --backup-file=backup/raid-backup-file

Но это не решило проблему. При загрузке система сообщает, что массив поврежден и на нем все еще отсутствует диск sde.

После выхода из оболочки initramfs войдите в систему и заново соберите массив, как и раньше, массив чист, смотрите

cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdb1[0] sdd1[2] sdc1[1]
      3907026816 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

Я также обнаружил в своих сообщениях ядра после обнаружения диска (sda, sdb, sdc, sde) и обнаружения сетевой карты эту странную строку:

md: bind<sde>

Откуда это происходит и как я могу это изменить?

Мой RAID-массив НЕ ДОЛЖЕН содержать никаких ссылок на /dev/sde.

Я не обновлял initramfs при первом изменении в моем массиве, я попробовал это после, но это ничего не изменило.

Кстати, вот мой /etc/mdadm.conf:

DEVICE partitions

CREATE owner=root group=disk mode=0660 auto=yes

HOMEHOST <system>

MAILADDR root

ARRAY /dev/md0 metadata=0.90 UUID=4d84e24c:e40f825f:3ba42e3c:267295e2

2 ответа

Решение

На устройстве sde должно остаться несколько метаданных md.

  • Удалите sde1 из устройства рейда.
  • Полностью стереть метаданные sde md (используя dd и в зависимости от версии метаданных и их расположения на диске) что-то вроде:

    дд если =/dev/ ноль =/dev/sde bs=4096 счет =1 поиск =1

    или даже лучше:

    mdadm --misc --zero-суперблок / dev / sde

  • Пересоздайте свой sde1 и добавьте его снова на устройство md0 и обновите свой mdadm.conf, если вы все еще хотите, чтобы он содержал UUID (вы также можете восстановить предыдущий метадат, если вы сначала сделали их резервную копию)

Вы пытались восстановить initrd после обновления вашего устройства MD? попробуйте update-initramfs или инструмент, соответствующий вашему дистрибутиву. и это, вероятно, хорошая идея, чтобы обновить ваш бутлегер (update-grub2 для grub-pc)

также попробуйте указать разделы uuids в вашем mdadm.conf для md0.

Другие вопросы по тегам