Come rinominare un array raid mdadm?


23

Per qualche motivo, quando provo a rinominare un array raid mdadm con un nome testuale, la modifica non prende.

Ho provato il consiglio da questa domanda serverfault , ma inutilmente.

~$ 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>

Come puoi vedere, il nome è ancora riportato come omicron:0ed è ancora raggiungibile attraverso il vecchio file del dispositivo. La prova sudo mdadm --detail /dev/md/alphafunzionerà e riporterà lo stesso nome, sbagliato, fino al prossimo riavvio, quando smette di funzionare.

Sembra che quando si capisce quale nome inserire, mdadm viene confuso e crea semplicemente il file del dispositivo.


A PARTE

Esiste un modo per fare in modo che mdadm forza un aggiornamento della parte del nome del superblocco (ovvero impostare esplicitamente il nome che si desidera abbia l'array) senza dover ricreare esplicitamente il superblocco? (ie 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])


Il problema è che dopo il riavvio, nonostante l'aggiunta ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...a mdadm.conf, il file del dispositivo denominato scompare e viene sostituito con uno di formato standard. (/ dev / md125 o simile)

Come posso fare in modo che un array mdadm rinominato mantenga il suo nome? - Cioè - Come posso fare in modo che Ubuntu mantenga i file del dispositivo tra gli stivali?

Risposte:


19

Devi dargli il nome in realtà con --name=like:

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

Per avere un comportamento coerente al riavvio, è necessario utilizzare lo stesso nome nell'argomento --name rispetto all'ultima parte del dispositivo. Eccolo qui: sudo mdadm --assemble / dev / md / alpha --name = alpha --update = name / dev / sd [gf]

Vedi il post di Khassad qui sotto per una spiegazione completa.


1
Un piccolo aggiornamento a questa riga di comando, per chiarezza, come un boob, ho inserito il nome originale dell'array dopo '--update ='. sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] Spero che abbia un senso o che lo renda più chiaro ....
anastrophe

Ciao, dopo aver emesso il comando # sudo mdadm --assemble / dev / md127 --name = md0 --update = nome / dev / sd [ab] Ottengo mdadm: / dev / sda è occupato - saltando mdadm: / dev / sdb è occupato - saltare qualche thougths? Ovviamente, ho smontato prima l'array!
Razor7,

2
@ razor7mdadm --stop --scan md127
Daniel Dinnyes,

12

Il modo per far sì che Ubuntu continui a cambiare nome negli stivali è aggiornare i tuoi initramfs. Dopo aver aggiornato il nome dell'array e mdadm.conf, è necessario emettere il comando seguente:

sudo update-initramfs -u

L'intero processo:

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

Il terzo comando dovrebbe restituire qualcosa del tipo:

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

Incolla il risultato in /etc/mdadm/mdadm.conf (sostituendo la vecchia riga). O esegui:

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

Prossima corsa:

sudo update-initramfs -u

Infine, riavvia.

Questa discussione è stata utile .


8

La prima risposta di Pille e NN funziona.

Il trucco qui è che quando non specifichi l' --nameopzione l'unica rinomina fatta mdadmè l'assegnazione del nome dell'array dal numero di dispositivo che ha assegnato. In questa domanda è 0, quindi il nuovo nome dell'array è 0.

Poiché si specifica il nome del dispositivo ("alfa" qui) da utilizzare nel comando assemblare, verrà creato e utilizzato questo nome del dispositivo. Ma all'avvio automatico mdadmcrea un dispositivo basato sul nome che vede nel superblocco, ovvero 0 in questo caso, quindi il nome del dispositivo specificato nel comando di assemblaggio viene perso.

Per rendere il tuo nome appiccicoso e coerente, devi usare lo stesso nome nell'ultima parte del nome del dispositivo e nel nuovo nome dell'array. In questo caso, per il dispositivo "alpha" dovresti usare questa riga di comando:

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

Puoi anche cambiare il nome host, per fare questo devi dichiararlo esplicitamente usando la -name=<hostname>:<array_name>sintassi.

Ciò può essere utile, ad esempio, dopo una modifica del nome della macchina.


2

Sembra che la risposta che cerchi sia nella pagina man di 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.

e per assemblare

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

Il che spiega perché l'attributo name non è appiccicoso dopo che è stato impostato. Se hai fatto in modo che funzioni, ti preghiamo di rispondere con un commento che ha fatto la risposta per te. In alternativa, è sempre possibile creare collegamenti simbolici utilizzando una regola udev e l'UUID dell'array come ancora.

Non vedo il punto nell'aggiungere il nome falso in /etc/mdadm.conf, stai già usando l'UUID che è il nome canonico dell'array. L'aggiunta di un'altra variabile, che ritieni opportuna da modificare, è solo una manutenzione non necessaria e la richiesta di problemi, ad esempio l'array, non si avvia.

Al di là di queste osservazioni, il posto migliore dove andare a capire perché non è possibile aggiornare il nome in fase di esecuzione è il ping della mailing list di linux-raid.


1

dopo aver cambiato il nome, hai provato ad aggiornare il tuo mdadm.conf?

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

0

mdadm ha un bug quando i volumi dei raid sono stati creati internamente con uno spazio nel loro nome. Questi volumi non verranno montati correttamente a causa di un errore di formattazione nel file /etc/mdadm/mdadm.conf generato. Devi rinominarli lì, ma non sarà persistente. Quindi è necessario rinominare i nomi interni ... ma non è supportato su tutti i controller RAID che bloccano i loro metadati e non supportano l'opzione name. Non vedo come rinominare questi volumi (anche se sono referenziati internamente dal loro UUID, i nomi sono quelli usati da Linux; Windows al contrario non ha questo bug e monta perfettamente i volumi RAID contenenti spazi nei loro nomi)!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.