Как сделать, чтобы mdadm автоматически собирал RAID после каждой загрузки?

43

Я успешно создал RAID (зеркалирование) с помощью mdadm. Тем не менее, я должен запускать следующие команды после каждой загрузки:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

Что я делаю не так / почему мне нужно запускать эти команды при загрузке? Как правильно автоматически запускать RAID при каждой (пере) загрузке?

BreakPhreak
источник

Ответы:

36

NB: Вам либо нужно войти в систему как root, либо использовать sudo для всего этого ...

  • Используйте ваш любимый редактор для создания или редактирования файла /etc/mdadm/mdadm.conf следующим образом:

Если файл даже не существует, вставьте следующее в новый пустой файл:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • Сохранить файл

  • Выполните следующую команду, чтобы добавить ссылку на конфигурацию вашего массива в конце файла:

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Это должно добавить следующую строку в конец mdadm.conf:

ARRAY / dev / md0 level = raid5 num-devices = 3 метаданных = 00.90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

Если команда mdadm добавила какие-либо другие элементы над строкой ARRAY, удалите их. Например, на одном из моих компьютеров команда возвращает «mdadm: формат метаданных 00.90 неизвестно, игнорируется». до линии ARRAY.

Теперь ваш массив должен автоматически собираться при загрузке, и, таким образом, вы можете добавить запись в / etc / fstab для его монтирования (если его там еще нет)

Linker3000
источник
6
Я бы, возможно, добавил: вы также должны обновить свои initramfs с помощьюupdate-initramfs -u
Пабло Монтепагано
1
mdadm --detail --scan ничего не печатает в моей системе, хотя я точно знаю, что у меня есть два раздела, которые являются частью raid0 (зеркало). Любые общие советы по этому вопросу приветствуются.
Леннарт Роллан
1
@LennartRolland - попробуйте mdadm -Esвместо этого.
Slm
это не сработало для меня, я должен был сделать, grub-install /dev/sdaчтобы это сработало (замените sda на что-нибудь подходящее для вас)
gorn
В качестве альтернативы вы можете просто использовать опцию ядра: md.auto=1... Я на самом деле не проверил это полностью, но, предположительно, он обнаруживает их и собирает их (или, по крайней мере, пытается это сделать). Но затем kernel.org/doc/html/v4.15/admin-guide/md.html немного двусмысленен: когда md скомпилирован в ядро ​​(не как модуль), разделы типа 0xfd сканируются и автоматически собираются в RAID-массивы. [...] Начиная с ядра 2.6.9, только диски с суперблоком типа 0 могут быть автоматически обнаружены и запущены во время загрузки. И это не относится к md.auto (или как там было), поэтому я не уверен сейчас.
Прифтан
7

Я понимаю, что это старый вопрос, но у меня было разочаровывающее время на 32-битной версии Ubuntu Server 12.04.

Бег mdadm --detail --scan >> /etc/mdadm/mdadm.confдополнил линию

ARRAY / dev / md0 метаданные = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

После перезагрузки я никогда не видел / dev / md0. Выполнение mdadm --detail --scanснова (без помещения результата в файл) я бы увидел

ARRAY / dev / md / ubuntu: 0 метаданных = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

и ручной монтаж /dev/md/ubuntu:0будет работать. В конце концов, это было то, что я положил в файл fstab.

Я не уверен, что я ошибся, если это так в Ubuntu 12.04, или это плохая практика. Просто хотел поделиться тем, что сработало для меня.

Deplicator
источник
Та же «проблема» здесь. Не уверен, если это проблема, хотя ..
Кристоф Де Тройер
3

В Debian wheezy требуется еще один шаг: при /etc/default/mdadmустановке автозапуска с false на true

#АВТОМАТИЧЕСКИЙ СТАРТ:
# должен ли mdadm запускать массивы, перечисленные в /etc/mdadm/mdadm.conf автоматически
# во время загрузки?
AUTOSTART = TRUE

Кроме того, я должен был использовать mdadm -Es >>/etc/mdadm/mdadm.confвместо --scanопции, так как это не работает для меня.

Богдан Хлевка
источник
3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Теперь отредактируйте строки, добавленные в /etc/mdadm/mdadm.conf, следующим образом. Удалите все, кроме основных частей. Должно выглядеть

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Примечание: вы можете выбрать X в mdX для вашего удобства.

Сейчас перезагружаемся

sudo update-initramfs -u
sudo reboot

РЕДАКТИРОВАТЬ: команда исправлена.

Горн
источник
Я написал это, потому что ответ Linker3000 не работал для меня.
Гор
3

У меня была эта проблема на моем Raspberry Pi 2 под управлением Raspbian GNU / Linux 8 (Джесси). У меня был массив RAID на /dev/sda1и /dev/sdb1которые не удалось собрать при загрузке. В моем /etc/mdadm/mdadm.confфайле была запись

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(ваши цифры будут другими; см. другие ответы о том, как получить это.)

В моем /etc/fstabфайле была запись

/dev/md0        /data           ext4    defaults          0       0

(и, конечно, /dataдействительно существовал)

Как и OP, я мог собирать и монтировать RAID-массив вручную после загрузки, но я не мог сделать так, чтобы это происходило автоматически во время загрузки, несмотря на то, что, видимо, он был правильно настроен.

Мне удалось решить проблему следующим образом. Я исследовал скрипт в /etc/init.d/mdadm-raidи вставил строку кода отладки

ls /dev > /home/pi/devices.txt

Перезагрузка и проверка этого файла я узнал , что устройства /dev/sdaи /dev/sdbсуществовавшие в то время mdadm-raidинициализация произошла, но перегородка /dev/sda1и /dev/sdb1пропали без вести. Я отредактировал /etc/init.d/mdadm-raidфайл и вставил строку

partprobe

после заголовка (т. е. после, ### END INIT INFOно до начала сценария). Это привело к тому, что разделы были обнаружены, и mdadm-raidсценарий смог собрать RAID-массив, решив проблему. Надеюсь, это поможет кому-то!

Шон Харкер
источник
0

Я боролся с этим на Raspbian, используя пару внешних жестких дисков USB на Raspberry Pi. Мне пришлось возиться с порядком запуска служб, чтобы убедиться, что mdadm-raid запускался после того, как udev распознал USB-накопители, но до checkfs.sh (который проверяет файловые системы во время загрузки). Если mdadm-raid запускался слишком рано, диски были недоступны и, следовательно, массив не был собран. Это означало, что fsck впоследствии потерпел неудачу, и процесс загрузки прекратился до приглашения на обслуживание (потому что массив raid необходим для других сервисов).

Изменение загрузочных зависимостей для запуска mdadm-raid после checkroot.sh, но перед запуском checkfs.sh и update-rc.d mdadm-raid defaultsпоследующим update-initramfs -uv -k `uname -r`(обратите внимание на огрехи uname) исправило его (наконец). Для меня, во всяком случае, YMMV.

Родни
источник
Обратите внимание, что uname -r в приведенном выше примере должен быть в галочках, но я не могу понять, как избежать их, поэтому они напечатаны здесь ...
Родни
Какая версия распбиана была? У меня все работало нормально на Wheezy, но унизить до Джесси не удалось собрать сборку при загрузке.
nwaltham
0

Я пробовал с

mdadm --create /dev/md/abcdef ...

Я вижу, что /dev/md/abcdefпрограммная ссылка сохраняется при перезагрузке, и, если необходимо, доступ к устройству осуществляется через программную ссылку.

Это приемлемое решение?

gudge
источник
0

Получив Raspberry Pi 3, добавлю rootdelay=5к /boot/cmdline.txtрешенной для меня эту проблему.

Кредит идет сюда .

Петр Рождский
источник