Ricerca nel sito web

Come recuperare dati e ricostruire RAID software guasti - Parte 8


Negli articoli precedenti di questa serie RAID sei passato da zero a RAID hero. Abbiamo esaminato diverse configurazioni RAID software e spiegato gli elementi essenziali di ciascuna, insieme ai motivi per cui preferiresti l'una o l'altra a seconda dello scenario specifico.

In questa guida discuteremo come ricostruire un array RAID software senza perdita di dati in caso di guasto del disco. Per brevità, prenderemo in considerazione solo una configurazione RAID 1, ma i concetti e i comandi si applicano allo stesso modo a tutti i casi.

Scenario di test RAID

Prima di procedere oltre, assicurati di aver impostato un array RAID 1 seguendo le istruzioni fornite nella Parte 3 di questa serie: Come impostare RAID 1 (Mirror) in Linux.

Le uniche variazioni nel nostro caso presente saranno:

1) una versione diversa di CentOS (v7) rispetto a quella utilizzata in quell'articolo (v6.5) e
2) diverse dimensioni del disco per /dev/sdb e /dev/sdc (8 GB ciascuno).

Inoltre, se SELinux è abilitato in modalità di applicazione, dovrai aggiungere le etichette corrispondenti alla directory in cui monterai il dispositivo RAID. Altrimenti, ti imbatterai in questo messaggio di avviso mentre tenti di montarlo:

Puoi risolvere questo problema eseguendo:


restorecon -R /mnt/raid1

Configurazione del monitoraggio RAID

Esistono diversi motivi per cui un dispositivo di archiviazione può guastarsi (gli SSD hanno tuttavia ridotto notevolmente le possibilità che ciò accada), ma indipendentemente dalla causa puoi essere certo che i problemi possono verificarsi in qualsiasi momento e devi essere pronto a sostituire il dispositivo guasto. parte e per garantire la disponibilità e l'integrità dei tuoi dati.

Prima un consiglio. Anche quando puoi controllare /proc/mdstat per verificare lo stato dei tuoi RAID, esiste un metodo migliore e che fa risparmiare tempo che consiste nell'eseguire mdadm in monitor + scan modalità, che invierà avvisi via email a un destinatario predefinito.

Per configurarlo, aggiungi la seguente riga in /etc/mdadm.conf:


MAILADDR user@<domain or localhost>

Nel mio caso:


MAILADDR gacanepa@localhost

Per eseguire mdadm in modalità monitor + scansione, aggiungi la seguente voce crontab come root:


@reboot /sbin/mdadm --monitor --scan --oneshot

Per impostazione predefinita, mdadm controllerà gli array RAID ogni 60 secondi e invierà un avviso se rileva un problema. Puoi modificare questo comportamento aggiungendo l'opzione --delay alla voce crontab sopra insieme al numero di secondi (ad esempio, --delay 1800 significa 30 minuti).

Infine, assicurati di avere un Mail User Agent (MUA) installato, come mutt o mailx. In caso contrario, non riceverai alcun avviso.

Tra un minuto vedremo come appare un avviso inviato da mdadm.

Simulazione e sostituzione di un dispositivo di archiviazione RAID guasto

Per simulare un problema con uno dei dispositivi di archiviazione nell'array RAID, utilizzeremo le opzioni --manage e --set-faulty come segue:


mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

Ciò comporterà che /dev/sdc1 venga contrassegnato come difettoso, come possiamo vedere in /proc/mdstat:

Ancora più importante, vediamo se abbiamo ricevuto un avviso via email con lo stesso avviso:

In questo caso, dovrai rimuovere il dispositivo dall'array RAID software:


mdadm /dev/md0 --remove /dev/sdc1

Successivamente puoi rimuoverlo fisicamente dalla macchina e sostituirlo con un pezzo di ricambio (/dev/sdd, dove è stata precedentemente creata una partizione di tipo fd):


mdadm --manage /dev/md0 --add /dev/sdd1

Fortunatamente per noi, il sistema inizierà automaticamente a ricostruire l'array con la parte che abbiamo appena aggiunto. Possiamo verificarlo contrassegnando /dev/sdb1 come difettoso, rimuovendolo dall'array e assicurandoci che il file tecmint.txt sia ancora accessibile in / mnt/raid1:


mdadm --detail /dev/md0
mount | grep raid1
ls -l /mnt/raid1 | grep tecmint
cat /mnt/raid1/tecmint.txt

L'immagine sopra mostra chiaramente che dopo aver aggiunto /dev/sdd1 all'array in sostituzione di /dev/sdc1, la ricostruzione dei dati è stata eseguita automaticamente dal sistema senza alcun intervento da parte nostra.

Sebbene non sia strettamente necessario, è una buona idea avere un dispositivo di riserva a portata di mano in modo che il processo di sostituzione del dispositivo difettoso con una buona unità possa essere eseguito in un attimo. Per fare ciò, aggiungiamo nuovamente /dev/sdb1 e /dev/sdc1:


mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md0 --add /dev/sdc1

Recupero da una perdita di ridondanza

Come spiegato in precedenza, mdadm ricostruirà automaticamente i dati quando un disco si guasta. Ma cosa succede se 2 dischi dell'array si guastano? Simuliamo questo scenario contrassegnando /dev/sdb1 e /dev/sdd1 come difettosi:


umount /mnt/raid1
mdadm --manage --set-faulty /dev/md0 /dev/sdb1
mdadm --stop /dev/md0
mdadm --manage --set-faulty /dev/md0 /dev/sdd1

I tentativi di ricreare l'array nello stesso modo in cui è stato creato in questo momento (o utilizzando l'opzione --assume-clean) potrebbero causare la perdita di dati, quindi dovrebbero essere lasciati come ultima risorsa.

Proviamo a recuperare i dati da /dev/sdb1, ad esempio, in una partizione del disco simile (/dev/sde1 – nota che ciò richiede la creazione di una partizione di digitare fd in /dev/sde prima di procedere) utilizzando ddrescue:


ddrescue -r 2 /dev/sdb1 /dev/sde1

Tieni presente che fino a questo punto non abbiamo toccato /dev/sdb o /dev/sdd, le partizioni che facevano parte dell'array RAID.

Ora ricostruiamo l'array utilizzando /dev/sde1 e /dev/sdf1:


mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

Tieni presente che in una situazione reale, in genere utilizzerai gli stessi nomi di dispositivo dell'array originale, ovvero /dev/sdb1 e /dev/sdc1 dopo i dischi guasti sono stati sostituiti con quelli nuovi.

In questo articolo ho scelto di utilizzare dispositivi aggiuntivi per ricreare l'array con dischi nuovi di zecca e per evitare confusione con le unità originali guaste.

Quando ti viene chiesto se continuare a scrivere l'array, digita Y e premi Invio. L'array dovrebbe essere avviato e dovresti essere in grado di osservarne l'avanzamento con:


watch -n 1 cat /proc/mdstat

Una volta completato il processo, dovresti essere in grado di accedere al contenuto del tuo RAID:

Riepilogo

In questo articolo abbiamo esaminato come ripristinare i sistemi RAID e le perdite di ridondanza. Tuttavia, è necessario ricordare che questa tecnologia è una soluzione di archiviazione e NON sostituisce i backup.

I principi spiegati in questa guida si applicano allo stesso modo a tutte le configurazioni RAID, così come i concetti che tratteremo nella guida successiva e finale di questa serie (gestione RAID).

Se hai domande su questo articolo, non esitare a inviarci una nota utilizzando il modulo di commento qui sotto. Restiamo in attesa della vostra risposta!