Come recuperare i dati da Linux MD RAID 6 con crittografia LUKS e fscrypt
Il recupero dei dati da Linux MD RAID 6, ulteriormente protetto da crittografia LUKS e fscrypt, è un processo complesso a più livelli in cui è importante determinare correttamente lo stato dell’array RAID, la sequenza di connessione dei dischi e i livelli di crittografia. Un errore in qualsiasi fase, dall’assemblaggio errato dell’array al tentativo di montare un file system danneggiato, può complicare significativamente il successivo recupero. Questo articolo descrive un approccio sicuro alla diagnosi e alla ricostruzione di RAID 6, all’apertura del contenitore LUKS e all’ulteriore lavoro con i dati protetti da fscrypt.

- Configurazione di RAID, LUKS2 e fscrypt
- Connessione dei dischi dell’array RAID
- Come recuperare i dati da Linux RAID 6
- Conclusione
- Domande frequenti
- Commenti
La particolare natura di una configurazione di questo tipo consiste nel fatto che i dati attraversano simultaneamente diversi livelli di astrazione. Anzitutto, i dischi fisici vengono combinati in un array RAID 6 mediante Linux MD; quindi l’array risultante può contenere un contenitore LUKS crittografato; e all’interno del file system, singole directory o file possono essere ulteriormente protetti con fscrypt. Pertanto, anche dischi pienamente funzionanti e un RAID assemblato correttamente non garantiscono ancora l’accesso ai dati richiesti.
Durante il processo di recupero, è fondamentale seguire la corretta sequenza delle operazioni. Prima di qualsiasi tentativo di scrittura sulle unità, occorre valutarne le condizioni, identificare i parametri dell’array RAID, verificare i metadati e, se possibile, creare copie bit per bit dei dischi problematici. Particolarmente pericolosi sono il rebuild automatico dell’array, i controlli del file system con correzione degli errori o la reinizializzazione del contenitore LUKS: queste operazioni possono modificare le strutture necessarie per il recupero successivo.
La crittografia aggiunge un ulteriore livello di complessità. Per LUKS, è necessario preservare l’accesso all’intestazione del contenitore, agli slot chiave e alle corrispondenti passphrase o file chiave. Nel caso di fscrypt, l’accesso al file system da solo può non essere sufficiente: la decrittazione di specifiche directory richiede le chiavi appropriate e i metadati delle policy di crittografia. Se anche solo uno di questi elementi viene perso, le possibilità di recupero possono essere notevolmente limitate.
Di seguito esamineremo la procedura per lavorare con un sistema di questo tipo: dalla diagnosi delle unità fisiche e dall’assemblaggio manuale di Linux MD RAID 6 in una modalità che riduca al minimo il rischio di scrittura, fino all’apertura del contenitore LUKS, al controllo del file system e al ripristino dell’accesso ai dati protetti da fscrypt. Il principio fondamentale in ogni fase è preservare prima di tutto la massima quantità possibile di informazioni originali e solo successivamente procedere con i tentativi di recupero.
Come recuperare dati da Linux RAID 6 con LUKS2 e fscrypt | 2 dischi mancanti
| Livello / tecnologia | Scopo | Caratteristica principale | Aspetti importanti durante il recupero |
|---|---|---|---|
| Linux MD RAID 6 | Combina più dischi in un array tollerante ai guasti | Utilizza doppia parità e tollera il guasto di un massimo di due dischi | È importante determinare correttamente l’ordine dei dischi, i parametri dell’array, l’UUID e lo stato dei metadati; non avviare il rebuild automatico senza un’analisi preliminare |
| LUKS | Crittografia dell’intero disco o a livello di blocco | Crittografa l’intero volume logico o contenitore | L’accesso richiede un’intestazione LUKS valida e una passphrase o una chiave; il danneggiamento dell’intestazione può rendere i dati inaccessibili anche se il RAID è integro |
| File system | Archivia directory, file e metadati | Si trova all’interno del contenitore LUKS sbloccato | È preferibile lavorare su una copia prima di correggere gli errori; le operazioni di riparazione automatica possono modificare strutture importanti |
| fscrypt | Crittografa directory o file individuali | Opera a livello di file system e può proteggere solo dati selezionati | Sono necessarie chiavi appropriate, policy di crittografia e metadati; lo sblocco di LUKS non concede automaticamente l’accesso ai dati protetti da fscrypt |
| Chiavi e metadati | Forniscono accesso alle informazioni crittografate | Le chiavi possono essere archiviate separatamente dai dati stessi | La perdita della password, del file chiave, del backup dell’intestazione LUKS o delle chiavi fscrypt può limitare in modo critico le opzioni di recupero |
| Sequenza dei livelli | Definisce l’ordine di accesso ai dati | Schema tipico: dischi → MD RAID 6 → LUKS → file system → fscrypt → file | Il recupero deve essere eseguito nello stesso ordine, dal livello inferiore a quello superiore |
| Rischio di scrittura | Influisce sulla conservazione dei dati sorgente | Qualsiasi rebuild, montaggio in lettura-scrittura o operazione di riparazione può modificare le strutture | È preferibile creare prima le immagini dei dischi e lavorare in modalità sola lettura |
| Complessità diagnostica | Determina il numero di potenziali punti di guasto | Il problema può trovarsi a livello di disco, RAID, LUKS, file system o fscrypt | Il guasto deve essere isolato passo dopo passo, senza confondere problemi di livelli diversi |
Configurazione di RAID, LUKS2 e fscrypt
Per testare Hetman RAID Recovery abbiamo preparato un server Dell PowerEdge R710 con controller RAID PERC H700 e Ubuntu Server 24.04 LTS installato.
Da quattro HDD da 60 GB abbiamo creato un array software Linux MD RAID 6 con una capacità totale di circa 120 GB utilizzando mdadm. La dimensione del chunk era 512 KB (in Hetman RAID Recovery questo parametro è visualizzato come Block size).

Sull’array è stato configurato un volume crittografato LUKS2 e al suo interno è stato creato un file system EXT4. Una cartella aggiuntiva su questa partizione è stata crittografata con fscrypt utilizzando una propria passphrase.

Dopo la preparazione dello storage, sono stati scritti file di test e successivamente alcuni dati ordinari sono stati eliminati da EXT4 e alcuni file dalla directory protetta da fscrypt.
Connessione dei dischi dell’array RAID
METODO 1. Connessione dei dischi fisici.
I dischi dell’array RAID possono essere collegati tramite:
- SATA;
- SAS;
- Fibre Channel;
- HBA;
- controller RAID.
Tuttavia, è importante che il controller fornisca al programma l’accesso a ciascun disco fisico separatamente.
È inoltre possibile utilizzare:
- adattatori USB;
- dock station;
- enclosure esterne.
Per l’analisi a lungo termine, è preferibile utilizzare una connessione diretta tramite SATA, SAS, HBA o il controller appropriato: in genere è più veloce e più stabile.

Non sempre è necessario collegare tutti i dischi dell’array. Hetman RAID Recovery terrà conto dei dischi mancanti e sarà in grado di ricostruirne i dati se il livello RAID lo consente e se le unità sane rimanenti sono sufficienti per ripristinare l’array. Ad esempio, RAID 5 consente un disco mancante e RAID 6 ne consente due.
Dopo il collegamento dei dischi, Windows può richiedere di inizializzarli o formatarli. Non accettare: chiudi questo messaggio per evitare di modificare i dati RAID e le informazioni di servizio.
METODO 2. Lavorare con le immagini dei dischi
L’uso delle immagini è utile se non ci sono abbastanza porte per collegare tutti i dischi contemporaneamente, oppure se le unità presentano indicatori SMART scadenti, errori di lettura o funzionamento instabile.
Per creare un’immagine in Hetman RAID Recovery, selezionare il disco fisico richiesto nella finestra principale del programma e fare clic su Save Disk.

Nella procedura guidata di salvataggio, scegliere di creare un’immagine dell’intero disco, specificare la cartella e il nome del file, quindi avviare la copia.
È preferibile salvare l’immagine su un altro disco integro con spazio libero sufficiente.
Per lavorare successivamente, fare clic su Mount Disk – RAW Disk Images. Selezionare i file immagine creati e aggiungerli al programma.

Dopodiché, Hetman RAID Recovery lavorerà con essi come con dischi fisici ordinari e potrà utilizzarli per la ricostruzione automatica o manuale del RAID.

METODO 3. Connessione dei dischi tramite SSH
Se il server Linux rimane accessibile in rete, i dischi possono essere aggiunti in remoto tramite Tools – Connect via SSH.

Specificare l’indirizzo del server, la porta e i dati di autenticazione, quindi selezionare i dischi fisici o i volumi richiesti. Verranno aggiunti a Hetman RAID Recovery e saranno disponibili per l’analisi e la ricostruzione del RAID senza una connessione fisica al computer.

Come recuperare i dati da Linux RAID 6
FASE 1. Rilevamento automatico dell’array RAID
Dopo l’avvio di Hetman RAID Recovery, il programma analizza automaticamente le unità disponibili e ne ricerca i segni di array RAID. Se i dischi richiesti sono già collegati al computer, l’array individuato viene visualizzato nella sezione RAID Arrays subito dopo l’avvio.
Se i dischi vengono aggiunti in seguito — collegati fisicamente, montati da immagini o aggiunti tramite SSH — il programma riesamina i membri RAID disponibili e, se sono presenti informazioni sufficienti, ricostruisce automaticamente l’array.

Per il RAID rilevato, Hetman RAID Recovery mostra i parametri principali:
- tipo e capacità dell’array;
- dimensione del settore e del blocco;
- schema di disposizione dei dati;
- stato del RAID;
- elenco dei dischi membri, il loro ordine e gli offset.

Nel nostro caso, il programma ha rilevato automaticamente un Linux MD RAID 6 di circa 118 GB e lo ha mostrato come pronto per ulteriori analisi. Esamineremo in seguito i parametri dettagliati dell’array durante la ricostruzione manuale.
Se alcuni dischi mancano, il programma li mostra come Empty disk e determina se le unità disponibili sono sufficienti per la ricostruzione. Nel nostro test, anche con due dei quattro dischi di RAID 6 mancanti, l’array ha lo stato Recoverable e rimane disponibile per l’analisi e il recupero dei dati.
FASE 2. Analisi del RAID e decrittazione dei dati
Per iniziare la ricerca dei dati, fare doppio clic sull’array RAID o sulla partizione trovata. Se Hetman RAID Recovery determina che il volume è crittografato con LUKS, il programma richiederà immediatamente di inserire una password o di specificare un file chiave.

Per decrittarlo, è necessaria una password valida o una chiave, nonché dati di servizio LUKS integri.
Dopo lo sblocco di LUKS, selezionare il tipo di analisi. Per prima cosa è possibile eseguire una Fast Scan: spesso è sufficiente se la struttura della partizione e il file system non sono danneggiati e occorre solo individuare i file eliminati di recente.

Se sul disco sono state eseguite operazioni distruttive — eliminazione o creazione di partizioni, formattazione, modifiche del file system, danneggiamento della tabella delle partizioni o altre operazioni che potrebbero alterare la struttura dei dati — si consiglia di utilizzare Full Analysis. Durante l’analisi completa, specificare il file system utilizzato sull’array. Nel nostro caso, si tratta di Ext2/3/4.
Se durante l’analisi il programma rileva dati crittografati con fscrypt, richiederà di inserire la passphrase corrispondente. Dopo la decrittazione, è possibile procedere alla ricerca sia dei file esistenti sia di quelli eliminati.

FASE 3. Visualizzazione e salvataggio dei file recuperati
Al termine dell’analisi, esaminare i file trovati. Utilizzare la modalità miniature, l’anteprima e gli strumenti di ricerca e filtro per individuare rapidamente i dati richiesti e verificarne il contenuto.
Il programma contrassegna i file eliminati con una croce rossa. Selezionare i file e le cartelle da salvare, quindi fare clic su Recovery.

Non salvare i dati recuperati sui dischi che sono membri dell’array RAID. La scrittura su di essi potrebbe sovrascrivere informazioni non ancora recuperate. Utilizzare un disco fisico separato per il salvataggio.
Nella procedura guidata, specificare la destinazione e avviare il salvataggio dei file.
FASE 4. Ricostruzione manuale del RAID
Il rilevamento automatico del RAID può risultare impossibile se le informazioni di servizio dell’array sono danneggiate, sovrascritte, mancanti o incoerenti tra i dischi.
Ciò può accadere dopo operazioni eseguite direttamente sui dischi membri che potrebbero aver danneggiato o sovrascritto i metadati RAID:
- inizializzazione dei dischi in Windows;
- esecuzione di mdadm –zero-superblock;
- creazione di un nuovo RAID sopra uno esistente;
- modifica della tabella delle partizioni;
- sovrascrittura parziale delle unità;
- oppure un rebuild non riuscito.

La ricostruzione manuale può essere necessaria anche se alcuni dischi mancano o sono danneggiati, se sulle unità rimangono metadati di diversi array RAID, se l’ordine dei dischi o gli offset sono stati modificati oppure se un’immagine di uno dei dischi è stata creata in modo incompleto.
Se Hetman RAID Recovery non è riuscito a determinare automaticamente la configurazione dell’array, è possibile ricostruirla manualmente tramite RAID Constructor.
Aprire RAID Constructor, selezionare Manual mode e specificare i parametri noti dell’array.

Per il Linux MD RAID 6 creato con mdadm nel nostro test con layout standard, RAID Constructor utilizza lo schema Left Synchronous P+Q. Nel nostro caso, la dimensione del blocco era 512 KB.

Per la maggior parte delle unità, nel campo Bytes per sector utilizzare 512 bytes. Se il disco utilizza una dimensione del settore logico di 4K, scegliere 4096 bytes.
Per il Linux MD RAID standard, lasciare il parametro Byte order impostato su Standard, salvo che l’array sia stato creato con altre impostazioni specifiche.
Successivamente, impostare la sequenza corretta delle unità e specificare per ciascuna l’offset dei dati — Offset. Nel nostro test era pari a 34,603,008 bytes per ciascun disco.

Se una o più unità non sono disponibili, aggiungere invece un Empty disk.
Dopo aver assemblato la configurazione, aggiungere il RAID ricostruito alla finestra principale del programma facendo clic su Add.

Dopodiché sarà possibile lavorare con esso allo stesso modo di un array rilevato automaticamente: sbloccare LUKS, analizzare il file system e recuperare i file richiesti.

FASE 5. Come determinare i parametri sconosciuti dell’array
Se alcuni parametri RAID sono sconosciuti, è possibile determinarli dalla struttura dei dati memorizzati sull’array. Nel nostro caso, sappiamo che è stato utilizzato Linux MD RAID 6 e direttamente su di esso era presente un volume crittografato LUKS2.

Iniziamo determinando l’offset dei dati — Offset. Aprire ogni disco dell’array in HEX Editor, avviare una ricerca per valore HEX e inserire la firma LUKS: 4C 55 4B 53 BA BE. Nelle impostazioni di ricerca, impostare la direzione su Down, la posizione su Begin of sector e avviare la ricerca.

Nell’array di prova, la firma LUKS è stata trovata all’indirizzo 34,603,008 bytes dall’inizio del disco. Questo è il valore da utilizzare come Offset per tutti i dischi del nostro array.

Il disco su cui è stata trovata la firma contiene l’inizio del volume logico LUKS. Ciò consente di determinare l’offset dei dati e ottenere un disco di riferimento, ma la firma stessa non indica l’intera sequenza di tutte le unità. Pertanto, se l’ordine dei dischi è sconosciuto, lasciarlo al rilevamento automatico tramite Detect the disk order automatically.

Successivamente, impostare i parametri RAID già noti. Se l’array è stato creato con mdadm utilizzando le impostazioni predefinite, lo schema tipico per RAID 5 è Left Synchronous, mentre per RAID 6 è Left Synchronous P+Q. Nel nostro caso, la dimensione del blocco è 512 KB. Se questo parametro è stato modificato durante la creazione del RAID, può avere un altro valore, ad esempio 64, 128, 256 KB o 1 MB.
Per i parametri che è stato possibile determinare, specificare valori esatti. Lasciare Detect automatically solo per i parametri sconosciuti. Ciò riduce significativamente il numero di configurazioni possibili e velocizza la ricerca.
Quindi fare clic su Next e attendere il completamento della convalida delle varianti.
Durante la ricerca, Hetman RAID Recovery mostra l’avanzamento, il tempo trascorso e il numero di configurazioni trovate. Al termine della ricerca, selezionare la configurazione più adatta e aggiungere il RAID ricostruito alla finestra principale del programma.
La correttezza dei parametri può essere verificata dalla struttura dei dati risultanti. Nel nostro caso, Hetman RAID Recovery dovrebbe rilevare un volume LUKS2 di dimensioni previste. Se viene sbloccato correttamente con la password corretta e al suo interno viene identificato il file system EXT4, la configurazione RAID è stata selezionata correttamente.

Conclusione
Hetman RAID Recovery ha rilevato automaticamente il test Linux MD RAID 6, ha sbloccato LUKS2 utilizzando la password nota e, durante Fast Scan, ha trovato sia i file esistenti sia quelli eliminati. Dopo l’inserimento della passphrase fscrypt, il programma ha ottenuto l’accesso anche ai file esistenti e a quelli eliminati nella directory ulteriormente crittografata.
Se i metadati RAID sono insufficienti, l’array può essere ricostruito manualmente in RAID Constructor utilizzando i parametri noti, oppure è possibile usare la selezione automatica dei valori sconosciuti. La ricerca della firma LUKS2 in HEX Editor aiuta a determinare l’offset dei dati, e la correttezza della configurazione può essere verificata sbloccando con successo LUKS e rilevando il file system EXT4.

