mdadm: rimuove il disco da RAID0


11

Quindi, vorrei sapere, è possibile fare quanto segue con mdadm:

  1. Comincio con la configurazione RAID0 su 2 dischi: sdae sdb.
  2. Vorrei aggiungere un altro disco all'array sdce spostare da sdbesso tutti i dati .
  3. Disconnect sdb.

In questo momento vedo solo una possibilità - mi fermo l'array, copiare sdba sdccon ddo qualsiasi altro strumento di blocco-copy e inizio la parte posteriore array.

Mi manca qualcosa? È possibile farlo con mdadm?


Puoi fare sdb su un mirror temporaneo e quindi sincronizzare sdc con esso in background - questo ha ridotto i tempi di inattività necessari, anche se non l'ho fatto come un principiante al posto tuo.
Peter - Ripristina Monica il

Non sono certo un principiante :) Puoi dirmi di più sul mirror temporaneo? È la funzione mdadm?
maniaque,

No, è una semplice funzione raid. Ho pensato a un array raid1 temporaneo, che potrebbe essere il posto di sdb nel tuo array raid1. Mentre sincronizzi sdb con sdc, puoi anche usarlo come parte dell'array raid0.
Peter - Ripristina Monica il

Quindi, ti capisco giusto? 1. Arrestare l'array. 2. Creare un altro array RAID1 con sbd e sdc. 3. E come potrei chiedere a mdadm, quindi avvia il mio RAID0 con md1 invece di sdb?
maniaque,

Non ho studiato molto, ma sembra che dovresti essere in grado di crescere da un RAID0 -> RAID5. Quindi riduci a un RAID0.
Zoredache,

Risposte:


17

Prima di tutto: per quelli che credono ancora in "RAID0 non ha hot spare". Potrebbe avere un ricambio manuale, fatto da umani, che comprendono i livelli RAID e mdadm. mdadm è un software RAID, quindi potrebbe fare molte cose interessanti.

Ringraziamo Zoredache per l'idea!

Quindi, la situazione:

  • hai un array RAID0 di due dischi
  • si desidera sostituirne uno senza tempi di inattività dell'array

Se il tempo di inattività è accettabile, puoi sempre semplicemente fare una copia a blocchi del disco con dd e riassemblare l'array, mdadm farà OK.

Soluzione: utilizzare RAID4 come soluzione intermedia

RAID0 -> RAID4 -> RAID0

Quindi, se non ricordi RAID4, è semplice. Ha un blocco di parità, ma a differenza di RAID5 non è distribuito attraverso l'array, ma risiede su UN disco. Questo è il punto, questo è importante e questo è il motivo per cui RAID5 non funzionerà.

Cosa ti servirà: altri due dischi della stessa dimensione, come il disco che desideri sostituire.

Ambiente:

  • Ubuntu 14.04 Thrusty Thar
  • mdadm - v3.2.5 - 18 maggio 2012
  • / dev / sdb - inizia con esso, lo sostituirà
  • / dev / sdc - inizia con esso
  • / dev / sdd: verrà utilizzato temporaneamente
  • / dev / sde - verrà usato al posto di sdb

L'ultima guida mdadm RAID0 hot-spare;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

Abbiamo creato l'array raid0, sembra dolce.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Questo è il nostro punto di controllo - se anche un solo bit differirà nel risultato /dev/md0- abbiamo fallito.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Quindi, abbiamo sviluppato il nostro array per essere RAID4. Non abbiamo ancora aggiunto il disco di parità, quindi facciamolo. La crescita sarà istantanea: non c'è nulla da ricalcolare o ricalcolare.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

Abbiamo aggiunto sddcome disco di parità. Questo è importante da ricordare: l'ordine dei dischi nella prima riga non è sincronizzato con l'immagine nella seconda riga! [UU_]

sdd viene visualizzato per primo, ma in realtà è l'ultimo e non contiene i dati, ma la parità.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

Abbiamo reso difettoso il nostro disco sdb, per rimuoverlo nei passaggi successivi.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

I dettagli ci mostrano la rimozione del primo disco e qui possiamo vedere il vero ordine dei dischi nell'array. È importante tenere traccia del disco con parità, non dovremmo lasciarlo nell'array quando si torna a RAID0.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb viene completamente rimosso, potrebbe essere rimosso.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

Abbiamo aggiunto la sostituzione per il nostro disco sdb. Ed eccoci qui: ora i dati di sdb vengono recuperati usando la parità. Sweeeeet.

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

Fatto. In questo momento siamo completamente al sicuro: tutti i dati di sdb vengono recuperati e ora dobbiamo rimuovere sdd (ricordate, mantiene la parità).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Reso difettoso.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Rimosso sdd dal nostro array. Siamo pronti a diventare di nuovo RAID0.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

Aaaaaa e botto!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

Fatto. Diamo un'occhiata al checksum md5.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

Altre domande? Quindi RAID0 potrebbe avere un hot spare. Si chiama "utente";)


1

Per quanto ne so, una volta impostato un RAID0 non è possibile modificare uno dei dischi. È possibile eseguire un backup, cambiare i dischi e ripristinare il backup. Vorrei solo RAID5 quei 3 dischi che hai. In questo modo in futuro puoi rilasciare un disco e ricostruirlo ancora.


Bene, so come fare la cosa di cui parlo con RAID5: posso aggiungere un nuovo disco all'array (come ricambio), quindi contrassegnare il disco che mi piace spostare come difettoso e rimuoverlo dall'array, pulendo successivamente il superblocco. Ma sono interessato alla stessa operazione con RAID0 :)
maniaque

@maniaque Si chiama RAID 0 perché zero è quanto RAID ottieni. Assolutamente nulla di importante dovrebbe mai essere posto su un RAID 0.
Michael Hampton,

@MichaelHampton Penso che intendi ridondanza non RAID ma la tua affermazione è corretta al 100%.
joeg1ff,

@MichaelHampton Si prega di vedere la mia risposta di seguito :)
maniaque

0

RAID 0 non fornisce ridondanza.

Quindi non supporta la sostituzione di hot drive.


1
Guarda qui sotto, per favore. Non c'è nulla di impossibile, quando capisci i livelli RAID;)
maniaque
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.