Come posso rendere mdadm auto-assemblare RAID dopo ogni avvio?


43

Ho creato con successo un RAID (mirroring) utilizzando mdadm. Tuttavia, devo eseguire i seguenti comandi dopo ogni avvio:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

Cosa sto facendo di sbagliato / perché devo eseguire questi comandi all'avvio? Qual è il modo giusto per avviare automaticamente il RAID con ogni (re) avvio?

Risposte:


36

NB: o devi essere loggato come root, o usare sudo per fare tutto questo ...

  • Usa il tuo editor preferito per creare o modificare il file /etc/mdadm/mdadm.conf come segue:

Se il file non esiste, incolla quanto segue nel nuovo file vuoto:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • Salva il file

  • Eseguire il comando seguente per aggiungere un riferimento alla configurazione dell'array alla fine del file:

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Ciò dovrebbe aggiungere una riga come la seguente alla fine di mdadm.conf:

ARRAY / dev / md0 livello = raid5 num-devices = 3 metadata = 00.90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

Se il comando mdadm ha aggiunto altri elementi sopra la riga ARRAY, rimuoverlo. Ad esempio, su una delle mie macchine, il comando restituisce "mdadm: formato metadati 00.90 sconosciuto, ignorato". prima della linea ARRAY.

Il tuo array dovrebbe ora compilarsi automaticamente all'avvio e quindi puoi aggiungere una voce a / etc / fstab per montarlo (se non è già lì)


6
Vorrei forse aggiungere: dovresti anche aggiornare i tuoi initramfs conupdate-initramfs -u
Pablo Montepagano,

1
mdadm --detail --scan non stampa nulla sul mio sistema, anche se so per certo che ho due partizioni che fanno parte di un raid0 (mirror). Qualsiasi consiglio generale su questo è il benvenuto.
Lennart Rolland,

1
@LennartRolland - prova mdadm -Esinvece.
slm

questo non ha funzionato per me, ho dovuto fare grub-install /dev/sdaper farlo funzionare (sostituisci sda con qualcosa di appropriato per te)
gorn

In alternativa puoi semplicemente usare l'opzione del kernel: md.auto=1... Non l'ho ancora testato a fondo ma presumibilmente li rileva e li assembla (o almeno prova a farlo). Ma poi kernel.org/doc/html/v4.15/admin-guide/md.html è un po 'ambiguo al riguardo: quando md viene compilato nel kernel (non come modulo), le partizioni di tipo 0xfd vengono scannerizzate e assemblate automaticamente in array RAID. [...] A partire dal kernel 2.6.9, solo le unità con un superblocco di tipo 0 possono essere rilevate automaticamente ed eseguite all'avvio. E non si riferisce a md.auto (o qualunque cosa fosse) quindi non sono sicuro ora.
Pryftan,

7

Mi rendo conto che questa è una domanda più vecchia, ma mi sono divertito molto con questa versione a 32 bit di Ubuntu Server 12.04.

L'esecuzione ha mdadm --detail --scan >> /etc/mdadm/mdadm.confaggiunto la linea

ARRAY / dev / md0 metadata = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

Dopo un riavvio non sono mai riuscito a vedere / dev / md0. Eseguendo di mdadm --detail --scannuovo (senza mettere il risultato in un file) vedrei

ARRAY / dev / md / ubuntu: 0 metadata = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

e il montaggio manuale /dev/md/ubuntu:0funzionerebbe. Alla fine, è quello che ho inserito anche nel file fstab.

Non sono sicuro di cosa ho sbagliato, se è così che funziona in Ubuntu 12.04 o se questa è una cattiva pratica. Volevo solo condividere ciò che ha funzionato per me.


Lo stesso "problema" qui. Non sono sicuro che si tratti di un problema, però ...
Christophe De Troyer,

3

Su Debian wheezy è richiesto un ulteriore passo: in /etc/default/mdadmset l' avvio automatico da falso a vero

#AVVIO AUTOMATICO:
# dovrebbe mdadm avviare automaticamente gli array elencati in /etc/mdadm/mdadm.conf
# durante l'avvio?
AUTOSTART = true

Inoltre ho dovuto usare al mdadm -Es >>/etc/mdadm/mdadm.confposto --scandell'opzione, poiché non ha funzionato per me.


3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Ora modifica le righe aggiunte a /etc/mdadm/mdadm.conf nel modo seguente. Elimina tutto, tranne le parti di base. Dovrebbe apparire

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Nota: puoi scegliere X in mdX per tua comodità.

Ora riavvia

sudo update-initramfs -u
sudo reboot

EDIT: comando corretto.


Ho scritto questo perché la risposta di Linker3000 non ha funzionato per me.
Gorn

3

Ho avuto questo problema sul mio Raspberry Pi 2 con Raspbian GNU / Linux 8 (jessie). Avevo un array RAID acceso /dev/sda1e /dev/sdb1che non è stato possibile assemblare all'avvio. Nel mio /etc/mdadm/mdadm.conffile avevo la voce

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(i tuoi numeri saranno diversi; vedi altre risposte su come ottenerlo.)

Nel mio /etc/fstabfile avevo la voce

/dev/md0        /data           ext4    defaults          0       0

(e ovviamente /dataesisteva davvero)

Come l'OP, ho potuto assemblare e montare l'array RAID a mano dopo l'avvio, ma non sono riuscito a farlo accadere automaticamente durante l'avvio nonostante apparentemente correttamente impostato.

Sono stato in grado di risolvere il problema come segue. Ho studiato lo script /etc/init.d/mdadm-raide ho inserito una riga di codice di debug

ls /dev > /home/pi/devices.txt

Riavvio e controllando questo file ho imparato che i dispositivi /dev/sdaed /dev/sdbesistente al momento della mdadm-raidinizializzazione del successo, ma le partizioni /dev/sda1e /dev/sdb1mancavano. Ho modificato il /etc/init.d/mdadm-raidfile e inserito la riga

partprobe

dopo l'intestazione (cioè dopo ### END INIT INFOma prima dell'inizio dello script). Ciò ha causato il rilevamento delle partizioni e quindi lo mdadm-raidscript è stato in grado di assemblare l'array RAID, risolvendo il problema. Spero che questo aiuti qualcuno!


0

Ho combattuto con questo su Raspbian usando un paio di HDD USB esterni su un Raspberry Pi. Ho dovuto scherzare con l'ordine di avvio dei servizi per assicurarmi che mdadm-raid sia iniziato dopo che le unità USB sono state riconosciute da udev ma prima di checkfs.sh (che controlla i filesystem all'avvio). Se mdadm-raid è iniziato troppo presto, le unità non erano disponibili e quindi l'array non era assemblato. Ciò significa che fsck successivamente non è riuscito e il processo di avvio è stato abbandonato a un prompt di manutenzione (poiché l'array raid è richiesto per altri servizi).

La modifica delle dipendenze di avvio per avviare mdadm-raid dopo checkroot.sh ma prima che checkfs.sh e in esecuzione update-rc.d mdadm-raid defaults, seguita da update-initramfs -uv -k `uname -r`(note backtick in giro uname) lo ha risolto (finalmente). Per me, comunque, YMMV.


Si noti che uname -r in quanto sopra dovrebbe essere in back-tick ma non riesco a capire come sfuggirli, quindi sono stampati qui ...
Rodney,

Quale versione di raspbian era questa? L'ho fatto funzionare bene su Wheezy, ma l'offesa a Jessie ha rotto il gruppo sullo stivale.
nwaltham,

0

Ci ho provato

mdadm --create /dev/md/abcdef ...

Vedo che il softlink /dev/md/abcdefpersiste al riavvio e, se necessario, accedere al dispositivo tramite soft link.

È una soluzione accettabile?


0

Avere il Raspberry Pi 3, aggiungendo rootdelay=5il /boot/cmdline.txtrisolto questo problema per me.

Il merito va qui .

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.