Как изменить имя устройства MD (mdadm)


25

Вот вывод из mdadm -Esv :

ARRAY / dev / md127 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Это массив v0.90. Вопрос в следующем: как mdadm назначает имя соответствующему устройству, где оно хранится и как его изменить?

Чего я хочу добиться, так это переименовать md127 в то, что мне нравится.

Ответы:


31

Предупреждение : Пожалуйста, сделайте резервную копию, прежде чем следовать любым советам, данным здесь :-)

Опция 1:

Редактировать /etc/mdadm.conf:

ARRAY / dev / md1 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Я только что ввел ваш собственный вывод и изменил 127 на 1. Перезагрузитесь, и теперь он должен быть md1.

Вариант № 2:

Если у вас нет mdadm.conf, и хотите, чтобы собрать в md1 автомагически , вы можете сделать это:

У mdadm есть понятие «привилегированный несовершеннолетний». Например, если определенный младший номер назначен массиву и сохранен в суперблоке, он будет использоваться каждый раз, когда этот массив собирается автоматически. Проверьте это:

mdadm --detail / dev / md127

Если написано «Предпочитаемый несовершеннолетний: 127», это ваша проблема. Вам необходимо обновить предпочтительный несовершеннолетний. Как это сделать:

Вы не можете просто изменить предпочтительный несовершеннолетний. Вам нужно загрузиться в режиме восстановления или в однопользовательском режиме, если это ваше корневое устройство, размонтируйте файловую систему, после этого:

mdadm --stop / dev / md127
mdadm --assemble --update = супер-минорный / dev / md1 / dev / sdb8 / dev / sda8

Тогда ваш md127 будет собран как md1. И так должно быть и в будущем.

С массивами 1.x:

Более новые массивы не хранят число «Предпочитаемый младший» и не поддерживают «--update = super-minor». Вместо этого они хранят имя, которое можно изменить с помощью:

mdadm --stop / dev / md127
mdadm - собрать --update = name --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

Или вы можете указать 'hostname: 2', чтобы все было согласовано с другими массивами (ищите текущее имя с помощью --detail).


очень хорошо! именно то, что я искал. так что хитрость была в том, чтобы обновить супер-минор .. спасибо!
XXL

Вы спасатель жизни! Я использовал это, чтобы разблокировать устройство WD NAS, которое использует MD.
Влад

Это решение теоретически правильно, но мне было трудно реализовать его на живой системе. Также вариант № 1 не работал для меня. Я пошел с superuser.com/questions/287462/…
gorn

+1 за последнюю часть решения, которая была очень полезна при перемещении рейдового массива с одной машины на другую. 'hostname: 2' и изменение md127 на md1 было именно тем, что мне было нужно, чтобы имена были согласованными
yahol

13

Просто чтобы добавить к отличному ответу Хеймга. Может случиться так, что даже с mdadm.conf система (по крайней мере, для Ubuntu) может все же автоматически собрать массивы перед чтением mdadm.conf. Поэтому, когда он находит его, он просто игнорирует массивы, которые только что были собраны.

Чтобы учесть это, запустите sudo update-initramfs -uдля восстановления правильного initrd.

Соответствующие ссылки: http://ubuntuforums.org/showthread.php?t=1764861%29%3a


2
Это исправило проблему для меня (после очередной перезагрузки) в Ubuntu 16.04. В моем случае это было потому, что я воссоздал массив, и у него был новый UUID. После его обновления mdadm.confодной только перезагрузки было недостаточно; Обновление initramfs сделало свое дело.
nh2

3

Ни один из других ответов не работал для меня, но в Centos я использовал следующее руководство. Проблема в том, что /etc/mdadm.conf на самом деле не используется во время загрузки, а обновляется только при установке нового ядра или при ручном воссоздании initramfs. Так что по сути вам просто нужно:

dracut --force

источник: http://realtechtalk.com/mdadm_change_wrong_device_name_md127_fix_and_solution_in_Linux-1783-articles


2

Суперблоки версии 0.9 не имеют имени, они были представлены в версии 1. /dev/md127Это не имя массива, это имя файла устройства массива, что является прямым следствием младшего номера устройства raid block. Этот младший номер выбирается произвольно при сборке массива.

UUID предоставляет уникальный идентификатор для массива, если он вам нужен. Если вы предпочитаете удобочитаемое или структурированное имя, поместите физический том LVM в массив.


Мне известно о возможности --homehost из более поздней версии, поэтому я намеренно заявил, что это массив метаданных v0.90. Однако это не мое намерение и не совместимо. Просматривая мои посты, я также несколько не могу заметить, где я упомянул, что / dev / md127 было именем массива . Я думаю, что предоставил точные детали того, что я хочу сделать. Таким образом, вопрос все еще остается, как я могу изменить его и где хранится этот «младший номер»? Я предполагаю, что это часть суперблока? Будет ли он разрушать контрольную сумму суперблоков при шестнадцатеричном редактировании?
XXL

@XXL Это число нигде не хранится, оно выбирается произвольно при сборке массива.
Жиль "ТАК - перестань быть злым"

хм .. я не понимаю. Тогда почему я всегда получаю / dev / md127, когда я mdadm -Esv ? Разве я не должен получить что-то другое, случайное, кроме статического имени? То есть если это действительно "произвольно" ..
XXL
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.