Come rinominare un array RAID mdadm?

19

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

Ho provato il consiglio di questa domanda serverfault , ma senza risultato.

~$ 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:0 ed è ancora raggiungibile attraverso il vecchio file del dispositivo. Provando sudo mdadm --detail /dev/md/alpha funzionerà e riporterà lo stesso, errato, nome fino al prossimo riavvio, quando smetterà di funzionare.

Sembra che quando si cerca di capire quale nome inserire, mdadm si confonde e crea semplicemente il file del dispositivo.

PARTE

C'è un modo per fare mdadm forzare un aggiornamento della parte name del superblock (ad esempio, impostare esplicitamente il nome che si desidera che la matrice abbia) senza dover ricreare esplicitamente il superblocco? (cioè 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 di ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267... a mdadm.conf, il file del dispositivo specificato scompare e viene sostituito con uno di formato standard. (/ dev / md125 o simile)

Come posso far sì che un array mdadm rinominato mantenga il suo nome? - I.e. - Come posso rendere ubuntu persistere i file del dispositivo tra gli scarponi?

    
posta Zaz 02.10.2011 - 18:31

6 risposte

16

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

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

Per avere un comportamento coerente al riavvio devi usare lo stesso nome nell'argomento --name che nell'ultima parte del dispositivo. Qui sarebbe: sudo mdadm --assemble / dev / md / alpha --name = alpha --update = nome / dev / sd [gf]

Vedi il post di Khassad sotto per una spiegazione completa.

    
risposta data pille 05.10.2011 - 09:49
9

Il modo per fare in modo che Ubuntu mantenga il cambio di nome tra gli stivali è aggiornare il tuo initramfs. Dopo aver aggiornato il nome dell'array e mdadm.conf, è necessario emettere il seguente comando:

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 eseguire:

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

Prossima esecuzione:

sudo update-initramfs -u

Infine, riavvia.

Questa discussione è stata utile .

    
risposta data Swoogan 01.10.2013 - 04:45
6

La prima risposta di Pille e N.N funziona.

Il trucco qui è che quando non si specifica l'opzione --name l'unica ridenominazione eseguita da mdadm sta assegnando il 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 ("alpha" qui) da utilizzare nel comando assemblare, creerà e utilizzerà questo nome dispositivo. Ma ad autostart mdadm crea un dispositivo basato sul nome che vede nel superblocco, che è 0 in questo caso, quindi il nome del dispositivo che hai specificato nel tuo comando assemblare è stato perso.

Per far sì che il tuo nome cambi appiccicoso e coerente, devi usare lo stesso nome nell'ultima parte del nome del tuo dispositivo e nel tuo nuovo nome di 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 farlo devi dichiararlo esplicitamente usando la sintassi -name=<hostname>:<array_name> .

Questo può essere utile ad esempio dopo il cambio di nome di una macchina.

    
risposta data Khassad 08.12.2011 - 11:25
1

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

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
    
risposta data maniat1k 05.10.2011 - 15:52
1

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

Questo spiega perché l'attributo name non è appiccicoso dopo che è stato impostato. Se l'hai fatto funzionare, ti preghiamo di rispondere con un commento la cui risposta è stata la soluzione giusta per te. In alternativa, puoi sempre creare collegamenti simbolici usando una regola udev e l'UUID dell'array come ancoraggio.

Non vedo il punto nell'aggiunta del nome falso a /etc/mdadm.conf, stai già usando l'UUID che è il nome dell'array canonico. Aggiungere un'altra variabile, che ritieni opportuno modificare, è solo una manutenzione non necessaria e richiede problemi, ad es. l'array non si avvia.

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

    
risposta data ppetraki 29.11.2011 - 13:26
0

mdadm ha un bug quando i volumi 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 internamente referenziati dal loro UUID, i nomi sono quelli usati da Linux, Windows al contrario non ha tale bug e monta perfettamente volumi RAID contenenti spazi nei loro nomi)!

    
risposta data verdy_p 28.06.2017 - 02:01

Leggi altre domande sui tag