Passa al contenuto principale
file-recoveryINFO

Recupero RAID 1: di solito basta un solo mirror, e due comandi li distruggono entrambi

Il RAID 1 è il livello in cui il recupero dovrebbe essere facile, perché ogni disco contiene una copia completa. A rovinare tutto non è il guasto, è il comando successivo. Contro cosa mette in guardia il Linux RAID wiki, e perché la versione di metadati predefinita oggi non ti permette di montare semplicemente un singolo membro.

Di Eric Gerard · Editore · Save My Disk8 min di letturaPhoto via Pixabay

Il RAID 1 è il livello in cui il recupero dovrebbe essere semplice. Non c'è parità da ricostruire, nessun ordine delle strisce da ricavare, e ogni disco contiene una copia completa di tutto. Nella pratica è anche il livello in cui le persone distruggono i propri dati con più leggerezza, perché l'array sembra ancora vivo e la soluzione sembra ovvia.

Raramente è il guasto a far perdere i dati. È il comando successivo.

Cosa ti dà il mirroring, e l'unica cosa che non ha mai fatto

Il RAID 1 mantiene identici due o più dischi. Ogni scrittura va su ogni membro, quindi un qualsiasi membro preso da solo è una copia integrale dell'intero insieme. È tutto qui il meccanismo, ed è per questo che le probabilità di recupero sono buone.

È anche il motivo per cui la protezione è più stretta di quanto si supponga. Una cancellazione è una scrittura. Lo è anche una cifratura da ransomware, un file sovrascritto, un salvataggio corrotto. Il mirroring li propaga tutti su entrambi i dischi alla velocità della macchina, fedelmente, perché è precisamente il suo lavoro.

Il RAID 1 protegge dalla morte di un disco. Non ha mai protetto da nulla che raggiunga i dati attraverso il filesystem. Se i tuoi file sono spariti e le unità sono sane, l'array ha fatto esattamente ciò per cui è stato costruito, e nessuna conoscenza del RAID li riporterà indietro. Quello è un problema di recupero file su un mirror, non un problema di RAID.

La regola che decide come va a finire

Prima di qualsiasi diagnosi, il Linux RAID wiki dà una sola istruzione, e la parentesi è la parte importante:

non impartire alcun comando che scriva sui dischi (come mdadm -C, fsck o persino mount ecc.).

La maggior parte legge quell'elenco e si ferma ai primi due. mount è nell'elenco. Un filesystem journaled riproduce il proprio journal quando viene montato, e questa è una scrittura, eseguita prima che tu abbia deciso qualcosa. Su un array degradato con un membro che non hai ancora identificato come buono, quella scrittura può finire nel punto peggiore possibile.

La stessa pagina esclude l'approccio che quasi tutti adottano sotto pressione:

Non provare a sistemare le cose per tentativi ed errori, fai revisionare a qualcuno le misure che stai per prendere per riavere i tuoi dati prima di metterle in pratica.

Tentativi ed errori funzionano quando i tentativi sono gratis. Qui ogni tentativo può essere quello che elimina la copia di cui avevi bisogno.

Tre situazioni, e una sola è difficile

Un membro si è guastato e l'array gira ancora. Questo è il caso buono e non merita alcun dramma. Hai una copia completa. Copia i tuoi dati altrove adesso, prima di occuparti del disco guasto. Sostituirlo per primo e avviare la ricostruzione sottopone la tua unica copia superstite a una lettura dell'intero disco esattamente nel momento in cui non puoi permetterti un secondo guasto.

Il controller o la macchina sono morti e i dischi stanno bene. Non è andato perso nulla. I dati sono intatti su ciascun membro, e l'unica domanda è come raggiungerli, alla quale risponde più avanti la versione dei metadati.

I membri divergono e non sai quale sia aggiornato. Questo è l'unico caso davvero difficile, ed è un problema di diagnosi, non di riparazione. Tutto ciò che distrugge i dati abita qui.

Una fotocamera reflex biottica fotografata di lato, con i suoi due obiettivi uno sopra l'altro.
Una fotocamera reflex biottica fotografata di lato, con i suoi due obiettivi uno sopra l'altro.

Due obiettivi dall'aspetto identico, e uno solo sta mettendo qualcosa sulla pellicola. Sapere quale sia quale è tutto il lavoro.

Perché il tuo disco singolo sembra non formattato

Il consiglio che troverai ovunque è che puoi estrarre un disco da un mirror e leggerlo come un'unità normale. Era vero, e l'impostazione predefinita è cambiata.

Il manuale di mdadm è preciso:

Le diverse sottoversioni memorizzano il superblocco in posizioni differenti sul dispositivo, alla fine (per la 1.0), all'inizio (per la 1.1) oppure a 4K dall'inizio (per la 1.2).

Leggi cosa comporta. Con la 1.0, il superblocco sta alla fine, il filesystem comincia all'offset zero, e un singolo membro si comporta davvero come un disco ordinario. Con la 1.1 e la 1.2, i metadati occupano l'inizio, quindi il filesystem comincia più avanti. Uno strumento che guarda all'offset zero trova metadati dove si aspettava una tabella delle partizioni, e segnala il disco come non formattato o grezzo.

La 1.2 è l'impostazione predefinita moderna. Quindi l'esito più comune, sulla configurazione più comune, è un disco che sembra vuoto ed è completamente intatto. Chi accetta una proposta di formattazione in quel momento perde tutto, e il disco non è mai stato danneggiato. Era spostato.

Il comando che divora gli array

Quando l'assemblaggio fallisce, internet ti suggerirà di ricreare l'array con gli stessi parametri. Il wiki affronta la cosa direttamente:

La ricreazione va considerata un'ultima risorsa, da usare solo quando tutto il resto ha fallito. Le persone che sbagliano questo passaggio sono una delle ragioni principali per cui si perdono dati.

E spiega la trappola che la rende così spietata:

Usare un mdadm con valori predefiniti diversi da quello usato in origine per creare l'array renderà l'array completamente inaccessibile.

I parametri che contano non sono soltanto quelli che digiti. Comprendono i valori predefiniti della versione di mdadm che ha costruito l'array anni fa, su una distribuzione che forse non usi più. Ricreare con i valori predefiniti di oggi scrive la disposizione dei metadati di oggi sopra quella di ieri, e questo disallineamento non si recupera riprovando.

--assemble riutilizza ciò che è già sui dischi. Il manuale lo descrive come l'assemblaggio dei componenti di un array creato in precedenza in un array attivo. È la direzione sicura: legge la descrizione esistente invece di sostituirla. E quando assembli, --readonly esiste esattamente per questo momento. Il manuale afferma che avvierà l'array in sola lettura anziché in lettura-scrittura come di consueto, senza permettere scritture sull'array, e senza avviare alcuna risincronizzazione, recupero o reshape. Una ricostruzione che parte da sola, prima che tu abbia identificato il membro aggiornato, è proprio la modalità di guasto da cui ti stai difendendo.

Scelta editoriale
4.5 / 5

Rileggere i file dall'immagine di un mirror

Si applica a un'immagine disco che hai già realizzato, o a un membro che riesci a leggere. Non identifica quale mirror sia aggiornato, e non ti aiuterà prima che tu abbia smesso di scrivere sull'array.

Fondata nel 2004Garanzia di 30 giorniVersione gratuita da 2 GB
Vedi l'offerta

L'ordine che ti tiene aperte le opzioni

Spegni invece di sperimentare. Un array degradato lasciato in funzione è una ricostruzione in attesa di partire.

Fai un'immagine di entrambi i membri prima di ogni altra cosa. Non di quello buono, di entrambi. Clonare un disco è una lettura, quindi non ti costa nulla, e ogni errore successivo diventa reversibile. È questo singolo passaggio a separare un brutto pomeriggio da una perdita definitiva.

Lavora sulle copie. Assembla in sola lettura, monta in sola lettura, recupera dalle immagini.

Identifica il membro aggiornato prima di ricostruire, non dopo. Se entrambi i dischi erano online fino a poco fa, confronta ciò che i metadati dicono di ciascuno. Se non riesci a stabilirlo, è un motivo per fermarti, non un motivo per sceglierne uno.

Ricostruisci per ultimo. Una volta che i tuoi dati sono del tutto altrove, un'ipotesi sbagliata non costa nulla.

La versione breve

Il RAID 1 è il livello più recuperabile che esista, perché ogni disco è una copia completa e non c'è nulla da ricostruire. A rovinare tutto è scrivere prima di diagnosticare, e il Linux RAID wiki mette mount nell'elenco delle cose che scrivono.

Se il tuo disco sembra non formattato dopo che l'hai tolto dall'array, controlla la versione dei metadati prima di crederci. Con la 1.1 e la 1.2, i valori predefiniti moderni, il filesystem non comincia all'offset zero e il disco è intatto. E tratta la ricreazione dell'array come l'ultima cosa che proverai mai, perché i valori predefiniti che l'hanno costruito contano quanto i parametri che ricordi.

Fai l'immagine di entrambi i dischi, assembla in sola lettura, e ricostruisci solo quando i dati sono al sicuro da qualche parte che non sia l'array.

L'istruzione di non impartire comandi che scrivono sui dischi, mount incluso, l'avvertimento contro la riparazione per tentativi ed errori, la descrizione della ricreazione come ultima risorsa e la nota sui valori predefiniti divergenti di mdadm sono tratti dal Linux RAID wiki. Le posizioni del superblocco dei metadati per le versioni 1.0, 1.1 e 1.2, la descrizione di --assemble e il comportamento di --readonly sono tratti dalla pagina di manuale di mdadm. Entrambi sono stati verificati al momento della stesura; riscontrali con la versione di mdadm che stai usando. I link commerciali portano l'attributo rel="sponsored nofollow"; può applicarsi una commissione di affiliazione senza alcun costo aggiuntivo per te.

Guide correlate

Scelta editoriale
4.5 / 5

Recupera i tuoi file cancellati → EaseUS

Scansione gratuita · file cancellati, formattati, persi · Windows & Mac

Fondata nel 2004Garanzia di 30 giorniVersione gratuita da 2 GB
Vedi l'offerta

Domande frequenti

Posso semplicemente togliere un disco da un array RAID 1 e leggerlo?

Dipende interamente dalla versione dei metadati, e l'impostazione predefinita moderna gioca contro di te. Il manuale di mdadm afferma che le diverse sottoversioni memorizzano il superblocco in posizioni differenti sul dispositivo, alla fine (per la 1.0), all'inizio (per la 1.1) oppure a 4K dall'inizio (per la 1.2). Con la 1.0 il superblocco sta alla fine, quindi il filesystem comincia all'offset zero e un singolo membro spesso si legge come un disco ordinario. Con la 1.1 e la 1.2 il superblocco occupa l'inizio, quindi il filesystem non comincia dove uno strumento se lo aspetta, e il disco sembra non formattato. Non è danneggiato. È spostato.

Il RAID 1 mi protegge dalla cancellazione accidentale di un file?

No, ed è proprio questo il guasto che le persone sperimentano davvero. Il mirroring significa che i due dischi vengono mantenuti identici, quindi una cancellazione viene scritta su entrambi nello stesso momento. Lo stesso vale per la cifratura da ransomware, un salvataggio sbagliato o un file corrotto. Il RAID 1 protegge dalla morte di un disco. Non ha mai protetto da nulla di ciò che tu o il tuo software fate ai dati, ed è per questo che non sostituisce un backup.

Devo ricostruire l'array prima di recuperare i miei dati?

No. Una ricostruzione scrive su un membro, e se hai scelto la direzione sbagliata sovrascrive la copia buona con quella cattiva. Recupera prima, dalle immagini, e ricostruisci dopo su hardware di cui hai già la prova che funzioni. Il Linux RAID wiki è netto sulle scritture durante il recupero: non impartire alcun comando che scriva sui dischi, e cita mount tra questi.

Qual è la differenza tra --assemble e --create?

Assemble riutilizza i metadati già presenti sui dischi. Il manuale lo descrive come l'assemblaggio dei componenti di un array creato in precedenza in un array attivo. Create scrive nuovi metadati, il che significa che può sovrascrivere la descrizione del tuo array esistente. Il wiki tratta la ricreazione come un'ultima risorsa, da usare solo quando tutto il resto ha fallito, e dice che le persone che sbagliano questo passaggio sono una delle ragioni principali per cui si perdono dati.

Mi serve un software di recupero RAID per un mirror di due dischi?

Spesso no. Il RAID 1 non ha parità da ricostruire né ordine delle strisce da ricavare, quindi una volta che hai un membro leggibile e l'offset giusto, un normale recupero file su un'immagine di quel membro di solito basta. Ricorri a strumenti RAID dedicati quando i membri divergono e non riesci a stabilire quale sia aggiornato, il che è un problema di diagnosi più che di ricostruzione.