41

Я успешно создал 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 при каждой (повторной) загрузке?

8 ответов8

35

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 для его монтирования (если его там еще нет)

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, или это плохая практика. Просто хотел поделиться тем, что сработало для меня.

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

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

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, решив проблему. Надеюсь, это поможет кому-то!

3

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

#AUTOSTART:
#   should mdadm start arrays listed in /etc/mdadm/mdadm.conf automatically
#   during boot?
AUTOSTART=true

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

0

Я пробовал с

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

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

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

0

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

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

0

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

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

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