Як перейменувати рейдовий масив mdadm?


23

Чомусь, коли я намагаюся перейменувати масив рейду mdadm у текстове ім'я, зміна не приймається.

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

~$ 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 зберігати файли пристрою між черевиками?

Відповіді:


19

Ви мусите дати йому ім'я фактично за допомогою --name=:

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

Для послідовної поведінки при перезавантаженні вам потрібно використовувати те саме ім'я в аргументі --name, як в останній частині пристрою. Ось це було б: sudo mdadm - асамблея / dev / md / alpha --name = alpha --update = ім'я / dev / sd [gf]

Дивіться пост Хассада нижче для повного пояснення.


1
Незначне оновлення цього командного рядка, для наочності, як боб я вводив початкове ім'я масиву після '--update ='. sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] Сподіваюся, що це має сенс або робить його більш зрозумілим ....
anastrophe

Привіт, після видачі команди # sudo mdadm --assemble / dev / md127 --name = md0 --update = ім'я / 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

Нарешті, перезавантажте.

Ця дискусія була корисною .


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>синтаксису.

Це може бути корисно, наприклад, після зміни назви машини.


2

Схоже, що відповідь, яку ви шукаєте, є правильною на сторінці mdadm man

[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.

Що пояснює, чому атрибут імені не стає липким після його встановлення. Якщо у вас все-таки вийшло на роботу, напишіть коментар, який відповідь зробив для вас трюк. Крім того, ви завжди можете створювати символьні посилання, використовуючи правило udev та UUID масиву як якір.

Я не бачу сенсу додавати підроблене ім’я до /etc/mdadm.conf, ви вже використовуєте UUID, який є канонічним ім'ям масиву. Додавання іншої змінної, яку ви вважаєте за потрібне змінити, - це лише непотрібне обслуговування та прохання про проблеми, наприклад, масив не запускається.

Крім цих спостережень, найкраще зрозуміти, чому ви просто не можете оновити ім’я під час виконання, - це ввести список розсилки Linux-raid.


1

після зміни імені ви спробували оновити своє mdadm.conf?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf

0

mdadm має помилку, коли обсяги рейду були створені внутрішньо з пробілом у їх назві. Ці томи не зможуть правильно встановитись через помилку формату в створеному файлі /etc/mdadm/mdadm.conf. Вам потрібно перейменувати їх там, але це не буде стійким. Тому перейменування внутрішніх імен є необхідним ... але воно не підтримується на всіх контролерах RAID, які блокують їх метадані та не підтримують параметр імені. Я не бачу, як перейменувати ці томи (навіть якщо на них внутрішньо посилається їх UUID, імена використовуються Linux; Windows навпаки не має такої помилки і чудово монтує томи RAID, що містять пробіли у своїх назвах)!

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