Come cambiare il nome di un dispositivo MD (mdadm)


25

Ecco l'output di mdadm -Esv :

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

Questo è un array v0.90. La domanda è la seguente: in che modo mdadm assegna il nome a un dispositivo corrispondente, dove lo memorizza e come si cambia?

Quello che voglio realizzare è rinominare md127 in qualcosa di diverso a mio piacimento.

Risposte:


31

Avvertenza : eseguire un backup prima di seguire qualsiasi consiglio fornito qui :-)

Opzione 1:

Modifica /etc/mdadm.conf:

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

Ho appena inserito il tuo output e ho cambiato 127 in 1. Riavvia e ora dovrebbe essere md1.

Opzione 2:

Se non lo hai mdadm.conf, e vuoi che si monti automaticamente su md1 , puoi farlo:

mdadm ha il concetto di "minore preferito". Ad esempio, quando un certo numero minore viene assegnato a un array e memorizzato nel superblocco, verrà utilizzato ogni volta che questo array viene assemblato automaticamente. Verifica questo:

mdadm --detail / dev / md127

Se dice "Preferred Minor: 127" questo è il tuo problema. Devi aggiornare il minore preferito. Come fare questo:

Non puoi semplicemente cambiare il minore preferito. È necessario avviare il ripristino o la modalità singolo utente se questo è il dispositivo principale, smontare il filesystem, dopo quello:

mdadm --stop / dev / md127
mdadm --assemble --update = super-minor / dev / md1 / dev / sdb8 / dev / sda8

Quindi avrai il tuo md127 assemblato come md1. E dovrebbe rimanere così anche in futuro.

Con array 1.x:

Le matrici più recenti non memorizzano un numero "Preferred Minor" e non supportano "--update = super-minor". Invece memorizzano un nome che può essere modificato con:

mdadm --stop / dev / md127
mdadm --assemble --update = name --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

Oppure puoi specificare 'hostname: 2' per mantenere tutto coerente con gli altri array (cerca il nome corrente con --detail).


molto bene! Proprio quello che stavo cercando. quindi il trucco era aggiornare anche il super-minore .. grazie!
XXL

Sei un salvavita! L'ho usato per rimuovere un dispositivo WD NAS che utilizza md.
Vlad,

Questa soluzione è teoricamente corretta, ma per me è stato difficile implementarlo sul sistema vivente. Anche l'opzione n. 1 non ha funzionato per me. Sono andato con superuser.com/questions/287462/...
Gorn

+1 per l'ultima parte della soluzione che è stata molto utile quando si è spostato l'array raid da una macchina all'altra. 'hostname: 2' e cambiare md127 in md1 era esattamente quello di cui avevo bisogno per mantenere coerenti i nomi
yahol

13

Solo per aggiungere all'ottima risposta di haimg. Può accadere che anche con un mdadm.conf, il sistema (almeno per Ubuntu) possa ancora assemblare automaticamente gli array prima di leggere mdadm.conf. Quindi, quando lo trova, ignora solo gli array che sono stati appena assemblati.

Per tener conto di ciò, eseguire sudo update-initramfs -uper rigenerare il initrd corretto.

Link rilevanti: http://ubuntuforums.org/showthread.php?t=1764861%29%3a


2
Ciò ha risolto il problema per me (dopo un altro riavvio) su Ubuntu 16.04. Nel mio caso era perché avevo ricreato l'array e aveva un nuovo UUID. Dopo averlo aggiornato in mdadm.conf, il riavvio da solo non è stato sufficiente; l'aggiornamento di initramfs ha funzionato.
nh2,


2

I superblocchi versione 0.9 non hanno un nome, sono stati introdotti nella versione 1. /dev/md127Non è il nome dell'array, è il nome del file del dispositivo dell'array, che è una conseguenza diretta del numero minore del dispositivo del blocco raid. Questo numero minore viene scelto in modo piuttosto arbitrario quando l'array viene assemblato.

L'UUID fornisce un identificatore univoco per l'array, se necessario. Se si preferisce un nome leggibile o strutturato, inserire un volume fisico LVM nell'array.


Sono consapevole della possibilità di --homehost dalla versione successiva, per questo motivo ho deliberatamente dichiarato che si tratta di un array di metadati v0.90. Tuttavia, questa non è la mia intenzione né è compatibile. Guardando attraverso i miei post non riesco nemmeno a notare dove ho menzionato che / dev / md127 era il nome dell'array . Penso di aver fornito i dettagli esatti di ciò che voglio fare. Quindi la domanda rimane, come posso cambiarla e dove è memorizzato questo "numero minore"? Presumo che faccia parte del superblocco? Rovinerà il checksum dei superblocchi, quando viene modificato in esadecimale?
XXL

@XXL Quel numero non è memorizzato da nessuna parte, è scelto piuttosto arbitrariamente quando l'array è assemblato.
Gilles 'SO- smetti di essere malvagio'

hmm .. non capisco. Allora perché ottengo sempre / dev / md127 quando mdadm -Esv ? Non dovrei ottenere qualcos'altro, casuale, diverso da un nome statico? Cioè se è davvero "arbitrario" ..
XXL
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.