Как переименовать массив mdadm raid?

23

По какой-то причине, когда я пытаюсь переименовать массив mdadm raid в текстовое имя, изменение не происходит.

Я попробовал совет из этого вопроса о неисправности сервера , но безрезультатно.

~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010

~$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 17:59:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

~$ sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.

~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 18:06:11 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md126 : active (auto-read-only) raid1 sdd[0] sde[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md127 : active (auto-read-only) raid1 sdb[0] sda[1]
      976762496 blocks [2/2] [UU]

unused devices: <none>

Как вы можете видеть, имя все еще сообщается omicron:0и все еще доступно через старый файл устройства. Попытка sudo mdadm --detail /dev/md/alphaбудет работать, и сообщать то же самое, неправильное имя до следующей перезагрузки, когда он перестанет работать.

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


В СТОРОНУ

Есть ли способ заставить mdadm принудительно обновить часть имени суперблока (т. Е. Явно указать имя, которое должен иметь массив) без необходимости явного повторного создания суперблока? (то есть sudo mdam --zero-superblock /dev/sd[fg]; sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg])


Проблема в том, что после перезагрузки, несмотря на добавление ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...в mdadm.conf, указанный файл устройства исчезает и заменяется файлом стандартного формата. (/ dev / md125 или аналогичный)

Как сделать так, чтобы переименованный массив mdadm сохранил свое имя? - Как я могу сделать так, чтобы Ubuntu сохранял файлы устройств между загрузками?

Zaz
источник

Ответы:

19

Вы должны дать ему имя на самом деле, --name=как:

sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]

Чтобы обеспечить согласованное поведение при перезагрузке, вы должны использовать то же имя в аргументе --name, что и в последней части устройства. Здесь это будет: sudo mdadm --assemble / dev / md / alpha --name = alpha --update = name / dev / sd [gf]

Смотрите пост Хассада ниже для полного объяснения.

Пиль
источник
1
Небольшое обновление этой командной строки, для ясности, как сиська, я вводил оригинальное имя массива после '--update ='. sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] Надеюсь, что это имеет смысл или проясняет
ситуацию
Привет, после выдачи команды # sudo mdadm --assemble / dev / md127 --name = md0 --update = name / dev / sd [ab] я получаю mdadm: / dev / sda занят - пропуск mdadm: / dev / sdb занят - пропускает какие-либо мысли? Конечно, я сначала размонтировал массив!
razor7
2
@ razor7mdadm --stop --scan md127
Даниэль Динниес
12

Способ заставить Ubuntu сохранять изменения имени при загрузке - обновить ваши initramfs. После обновления имени массива и mdadm.conf вам необходимо выполнить следующую команду:

sudo update-initramfs -u

Весь процесс:

sudo mdadm --stop /dev/md125
sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
sudo mdadm -Db /dev/md/alpha

Третья команда должна вернуть что-то вроде:

ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f

Вставьте результат в /etc/mdadm/mdadm.conf (заменив старую строку). Или выполнить:

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

Следующий прогон:

sudo update-initramfs -u

Наконец, перезагрузите компьютер.

Это обсуждение было полезным .

Swoogan
источник
8

Первый ответ по pille и NN работает.

Хитрость в том, что если вы не укажете эту --nameопцию, единственное переименование выполняется путем mdadmприсвоения имени массива из номера устройства, которое он выделил. В этом вопросе это 0, поэтому новое имя массива 0.

Поскольку вы указываете имя устройства (здесь «альфа») для использования в команде сборки, оно будет создавать и использовать это имя устройства. Но при автозапускеmdadm создает устройство на основе имени, которое оно видит в суперблоке, в данном случае это 0, поэтому имя устройства, указанное в команде ассемблера, теряется.

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

mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]

Вы также можете изменить имя хоста, для этого вы должны явно объявить его с помощью -name=<hostname>:<array_name>синтаксиса.

Это может быть полезно, например, после изменения имени машины.

Khassad
источник
2

Кажется, что ответ, который вы ищете, находится прямо на странице руководства mdadm

[create, build, grow]
      -N, --name=
          Set  a name for the array.  This is **currently only effective when creat‐
          ing an array** with a version-1 superblock, or an  array  in  a  DDF  con‐
          tainer.   The  name is a simple textual string that can be used to iden‐
          tify array components when assembling.  If name is needed but not speci‐
          fied, it is taken from the basename of the device that is being created.
          e.g. when creating /dev/md/home the name will default to home.

и для изготовления

       -N, --name=
          Specify the name of the array to assemble.  **This must be the  name  that
          was  specified  when  creating the array**.  It must either match the name
          stored in the superblock exactly, or it  must  match  with  the  current
          homehost prefixed to the start of the given name.

Что объясняет, почему атрибут name не является липким после его установки. Если вы все же сделали это, пожалуйста, ответьте с комментарием, ответ которого помог вам. Кроме того, вы всегда можете создать символические ссылки, используя правило udev и UUID массива в качестве привязки.

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

Помимо этих наблюдений, лучшее место, чтобы понять, почему вы просто не можете обновить имя во время выполнения, - это пинговать список рассылки linux-raid.

ppetraki
источник
1

после изменения имени пытались ли вы обновить свой mdadm.conf?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
maniat1k
источник
0

В mdadm есть ошибка, когда тома raid были созданы внутри с пробелом в имени. Эти тома не будут правильно подключены из-за ошибки формата в сгенерированном файле /etc/mdadm/mdadm.conf. Вам нужно переименовать их там, но это не будет постоянным. Поэтому переименование внутренних имен необходимо ... но оно не поддерживается всеми контроллерами RAID, которые блокируют свои метаданные и не поддерживают параметр имени. Я не вижу, как переименовать эти тома (даже если на них ссылается внутренний UUID, это имена, используемые Linux; в Windows, напротив, такой ошибки нет, и они прекрасно монтируют тома RAID, содержащие пробелы в своих именах)!

verdy_p
источник