Il RAID 10 ha fama di essere il livello facile. Nessuna parità da ricostruire, nessuna aritmetica di stripe, solo coppie in mirror: si trova la metà superstite di ogni coppia, si copiano i file, fine. Quella fama viene dalla definizione da manuale del RAID 1+0.
Il driver md di Linux, su cui gira la maggior parte degli array RAID 10 al di fuori dei controller hardware, non implementa quella definizione da manuale. Ne implementa una più ampia, che la contiene. Se il vostro piano di recupero presuppone delle coppie, potrebbe essere il piano di un array che non avete.
Il nome promette coppie, il driver non le pretende
Il manuale md apre la sezione esattamente come tutti si aspettano. Descrive il RAID10 come « a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 », e aggiunge che « every datablock is duplicated some number of times, and the resulting collection of datablocks are distributed over multiple drives ».
Rileggete la seconda frase, perché è quella che fa il lavoro vero. Non dice che i dischi vengono raggruppati in mirror. Dice che le copie vengono distribuite. Il manuale enuncia poi la conseguenza senza giri di parole: « It should be noted that the number of devices in a RAID10 array need not be a multiple of the number of replica of each data block; however, there must be at least as many devices as replicas. »
Un RAID 10 di tre dischi con due copie di tutto è dunque un array legittimo e ordinario. Anche uno di cinque dischi. Nessuno dei due si scompone in coppie, per la semplice ragione che coppie non ce ne sono. La ridondanza è reale, ma è distribuita sull'insieme invece che chiusa in coppie, e ogni riflesso di recupero costruito su « trovare l'altra metà di questo mirror » non ha più nulla a cui aggrapparsi.
Tre layout si nascondono dietro un solo numero di livello
Alla creazione dell'array vengono decise due cose che poi non compaiono mai nel numero di livello: quante copie di ogni blocco esistono e dove finiscono. Il manuale è esplicito: « When configuring a RAID10 array, it is necessary to specify the number of replicas of each data block that are required (this will usually be 2) and whether their layout should be 'near', 'far' or 'offset'. »
I tre differiscono soltanto per la collocazione.
Near avvicina le copie. Il manuale le descrive disposte « consecutively ('as close to each other as possible') across the stripes of the array », e nota che con un numero pari di dischi finiscono probabilmente allo stesso offset su dischi diversi. È la disposizione che si comporta come il manuale scolastico, e lo stesso manuale md la chiama « the 'classic' RAID1+0 ».
Far le allontana deliberatamente, « quite distant ('as far as reasonably possible') from each other ». Il motivo è la velocità, non la sicurezza: « The advantage of this layout is that MD can easily spread sequential reads over the devices, making them similar to RAID0 in terms of speed. » Un array montato per il throughput in lettura è molto spesso un array far, e la sua seconda copia non si trova da nessuna parte vicino alla prima.
Offset è il compromesso, in cui « all the copies of a given chunk are striped consecutively ('offset by the stripe length after each other') over the devices ». Il manuale se ne attende caratteristiche di lettura vicine a far con una dimensione di chunk sufficientemente grande, senza altrettanti spostamenti di testina in scrittura.
Dal lato dei dati non cambia nulla tra i tre. Dal lato di dove cercarli cambia tutto.

Perché questo decide se la ricostruzione restituisce file o rumore
Ricostruire un array a stripe significa rispondere a tre domande: quali dischi, in quale ordine, con quale dimensione di chunk. Il RAID 10 ne aggiunge una quarta che i livelli con parità non hanno: dove si trova la seconda copia di ogni blocco. Sbagliatela, e la ricostruzione arriva comunque in fondo. Semplicemente intreccia blocchi presi da offset sbagliati, e il risultato è un volume che non monta nulla o, peggio, che monta un albero di cartelle pieno di file che si aprono su spazzatura.
È la ragione pratica per cui il layout va recuperato prima dei dati. È scritto nei metadati dell'array, ed è per questo che leggere i metadati di ogni membro prima di toccare qualsiasi cosa conta qui più che a ogni altro livello. Se i metadati sono spariti e il layout è ignoto, diventa un piccolo problema di ricerca: tre layout, una manciata di numeri di copie e dimensioni di chunk plausibili, provati su una copia finché non compare un filesystem. Quella ricerca è sicura solo sulle immagini, perché ogni tentativo è una scrittura nella direzione sbagliata se lo eseguite sui dischi.
A cosa sopravvive un RAID 10, e perché nessuno ve lo dirà in anticipo
L'affermazione più ripetuta sul RAID 10 è che sopravvive a un guasto per coppia, quindi un array di quattro dischi può perderne due purché non siano della stessa coppia. È vero di un RAID 1+0 classico, e il manuale md si guarda bene dal generalizzarlo.
Dove elenca quanti dischi ogni livello tollera di perdere, dà cifre concrete per gli altri: « this number is one for RAID levels 4 and 5, two for RAID level 6, and all but one (N-1) for RAID level 1. » Per il livello 10 si limita a indicare che la sopravvivenza « is dependent on configuration ».
È la risposta onesta, e discende da tutto quanto precede. Con due copie distribuite su cinque dischi in layout far, che due dischi morti siano recuperabili dipende dall'esistenza di un blocco che aveva entrambe le copie proprio su quei due. Due array che dichiarano lo stesso livello, lo stesso numero di dischi e la stessa capacità possono differire su questo. Si decide alla creazione e non si legge nel numero di livello.
La conseguenza operativa è semplice: dopo un secondo guasto al livello 10, non date per scontato né che vada tutto bene né che sia tutto perduto. Entrambe le conclusioni sono scommesse.
L'ordine che vi conserva le opzioni
Smettete di scrivere. Un array degradato lasciato in servizio è una ricostruzione in attesa di autorizzazione, e a questo livello potreste ignorare quale copia prenderà come sorgente.
Rilevate i metadati di ogni membro prima di ogni altra cosa. Layout, numero di copie, dimensione di chunk, ordine dei dischi e contatori di eventi. È l'informazione che trasforma il recupero in una procedura invece che in una ricerca, ed è anche quella che un recreate affrettato distrugge.
Fate un'immagine di tutti i membri, non solo dei superstiti. L'imaging è una lettura. Non può peggiorare nulla, e rende reversibile ogni errore successivo. Su un array in cui il layout corretto richiederà forse più tentativi, lavorare sulle immagini non è prudenza: è l'unico modo di avere diritto a più di un tentativo.
Assemblate in sola lettura e verificate di vedere un filesystem prima di credere ai parametri. Una ricostruzione con il layout sbagliato non si annuncia. Un filesystem montabile, esplorabile, i cui file si aprono: quello è il test.
Ricostruite per ultimo, su hardware già collaudato, una volta che i dati esistono altrove rispetto a questo array.
Rileggere i file una volta fatte le immagini e trovato il layout
Funziona su un'immagine o su un volume che riuscite già a montare. Non determina al posto vostro il layout near, far o offset, e non sostituisce l'imaging preventivo dei membri.
In sintesi
Il RAID 10 su Linux non è l'array di coppie in mirror che il nome suggerisce. Il manuale md ammette un numero di dischi che non è multiplo del numero di copie, il che produce array senza alcuna coppia da recuperare una alla volta. Offre i layout near, far e offset sotto lo stesso numero di livello, e solo near con un numero pari di dischi somiglia al RAID 1+0 classico.
Poiché le copie possono essere collocate lontane tra loro per progetto, il layout va conosciuto prima di qualunque tentativo di ricostruzione, altrimenti la ricostruzione arriverà in fondo e produrrà sciocchezze. E poiché la collocazione si decide alla creazione, il manuale rifiuta di dire quanti dischi un RAID 10 possa perdere: a questo livello, la sopravvivenza dipende dalla configurazione.
Rilevate i metadati di ogni membro, createne le immagini, provate i layout sulle copie e ricostruite solo quando i vostri file sono altrove.
La descrizione del RAID10 come combinazione di RAID1 e RAID0, l'affermazione che il numero di dischi non deve essere un multiplo del numero di copie, le definizioni dei layout near, far e offset, l'osservazione che near con un numero pari di dischi è il RAID1+0 classico, e l'affermazione che la sopravvivenza dipende dalla configurazione al livello 10, provengono tutte dalla pagina di manuale Linux md(4), consultata al momento della stesura. Le citazioni sono lasciate nella lingua originale. Verificate sulla versione di kernel e mdadm che state usando. I link commerciali portano l'attributo rel="sponsored nofollow"; può essere applicata una commissione di affiliazione, senza costi aggiuntivi per voi.
Guide correlate
- Recupero RAID 1: un solo mirror basta quasi sempre - la logica di mirror che i layout near ereditano, e i due comandi che distruggono entrambe le copie.
- Recupero dati RAID: il metodo completo per RAID 0, 1, 5, 6 e 10 - la visione d'insieme per livello, compresa l'aritmetica di parità che il RAID 10 non usa.
Recupera i tuoi file cancellati → EaseUS
Scansione gratuita · file cancellati, formattati, persi · Windows & Mac



