Як я можу зробити 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 при кожному (повторному) завантаженні?

Відповіді:


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 для його монтажу (якщо його ще немає)


6
Я можу додати: ви також повинні оновити свої initramfs за допомогоюupdate-initramfs -u
Пабло Монтепагано

1
mdadm --detail --scan нічого не друкує у моїй системі, хоча я точно знаю, що у мене є два розділи, що входять до рейду0 (дзеркала). Будь-які загальні поради щодо цього вітаються.
Леннарт Ролланд

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 ім'я = 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

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

#АВТО СТАРТ:
# повинен mdadm запускати масиви, перелічені в /etc/mdadm/mdadm.conf автоматично
# під час завантаження?
AUTOSTART = вірно

Також мені довелося використовувати 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

EDIT: команда виправлена.


Я написав це, тому що відповідь Linker3000 не працював для мене.
gorn

3

У мене була ця проблема в моєму Raspberry Pi 2 під керуванням Raspbian GNU / Linux 8 (jessie). У мене був масив 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існували)

Як і в ОП, я міг зібрати та змонтувати масив 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 розпочався після того, як удев розпізнав USB-накопичувачі, але перед checkfs.sh (який перевіряє файлові системи під час завантаження). Якщо mdadm-raid почався занадто рано, накопичувачі були недоступні, а тому масив не був зібраний. Це означало, що fsck згодом вийшов з ладу, і процес завантаження вийшов у рядок технічного обслуговування (оскільки для інших служб потрібен масив рейду).

Змінення завантажувальних залежностей для запуску mdadm-raid після checkroot.sh, але перед checkfs.sh та запуском update-rc.d mdadm-raid defaults, а потім update-initramfs -uv -k `uname -r`(примітка зворотних посилань навколо uname) виправлено це (нарешті). Для мене все одно YMMV.


Зауважте, що уніме -r у вищезазначеному повинен містити зворотні кліщі, але я не можу зрозуміти, як уникнути їх, щоб вони надрукувалися тут ...
Родні

Яка версія Rasbian була це? У мене це було чудово працює на Wheezy, але прихильність до Джессі розбила збірку на завантаженні.
nwaltham

0

Я спробував

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

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

Це прийнятне рішення?


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.