mdadm Ubuntu 12.04 не может собрать RAID6 во время загрузки

Я постараюсь сохранить это коротким.

У меня есть mdadm RAID 6 с 11 дисками. В течение многих лет это "просто работало" при переустановках и тому подобном, без каких-либо проблем. У меня даже не было необходимости настраивать mdadm.conf.

После выпуска 12.04 я больше не могу загружать машину без mdadm, который не может смонтировать массив, а затем бросить меня в оболочку initramfs. При загрузке mdadm берет 7 дисков и запускает их в /dev/md127, что, конечно, не удастся.

При загрузке я останавливаю, собираю все диски как md0, и все снова хорошо.

Вопрос в том, как мне заставить его вести себя даже во время загрузки?

После некоторого тестирования мой текущий mdadm.conf выглядит так: http://pastebin.com/SWx1nCNg

Состояние mdadm во время загрузки: http://pastebin.com/Ua9W3aj4

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

Помогите?:)

3 ответа

Проблема в том, что /usr/share/initramfs-tools/scripts/mdadm-functions вызывается до инициализации всех дисков.

У меня есть 6 дисков в массиве RAID. 2 из них на борту SATA и 4 на карте mpt2sas (SAS2008).

Очевидно, mdadm пытается инициализировать массив до того, как все 6 дисков были подключены к системе.

Если я редактирую mdadm-функции для этого, все работает (безобразное исправление):

degraded_arrays()
   {
       sleep 15
   mdadm --misc --scan --detail --test >/dev/null 2>&1
   return $((! $?))
  }

Для меня эта ошибка была введена, когда я обновил с 10.04 LTS до 12.04.1 LTS сегодня!

Итак, после некоторых советов я понял, что проблема в том, что некоторые диски недостаточно быстро распознаются mdadm, поэтому он просто останавливается.

Кто-то предложил добавить rootdelay=30 в качестве параметра ядра, но Ubuntu просто проигнорировал это. Вместо этого я добавил предварительный сценарий initramfs.

echo "sleep 60" > /etc/initramfs-tools/scripts/init-premount;
chmod +x /etc/initramfs-tools/scripts/init-premount;
update-grub; 
update-initramfs -u;

И перезагрузка, загрузка занимает минуту дольше, но потом я знаю, что mdadm обнаружил все диски.

Модификация ответов найдена в другом месте, которое работало на меня.

Симптомы, которые я видел:

RAID, который работал нормально в Lucid/10.04, прекратил автоматическую сборку, когда я обновился до Precise/12.04. RAID собирался как /dev/md127 в Precise. В оболочке initramfs следующее исправило проблему и позволило машине загрузиться.

mdadm --stop /dev/md127 mdadm - собрать /dev/md0

Решение, которое сработало:

Убедитесь, что mdadm.conf имеет правильную строку ARRAY. (Тот факт, что я мог собрать /dev/md0 правильно, предполагал, что mdadm.conf был правильным.)

Создайте скрипт в /usr/share/initramfs-tools/scripts/local-top (я назвал его mdfix)

#!/bin/sh
sleep 6
mdadm --stop /dev/md127
sleep 6
mdadm --assemble /dev/md0

затем

chmod +x mdfix
update-grub
update-initramfs -u

update-initramfs может генерировать "нет такого устройства" для /dev/md127. Положите полотенце на голову и не паникуйте.:)

Перезагрузитесь, и вы должны правильно подключить /dev/md0, если немного медленнее, чем раньше. (Сны могут быть не нужны, но лучше, чем потом сожалеть.)

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