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.

Come recuperare i dati da Linux MD RAID 6 con crittografia LUKS e fscrypt

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.

Vai a vedere
Come recuperare dati da Linux RAID 6 con LUKS2 e fscrypt | 2 dischi mancanti

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.

Per recuperare dati da array RAID guasti, dispositivi NAS e altri sistemi di archiviazione multidisco.

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).

Dell PowerEdge R710: creare il dispositivo RAID

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.

Dell PowerEdge R710: formattare e montare il dispositivo RAID

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.

Metodo di connessione dei dischi dell’array RAID

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.

Per recuperare dati da array RAID guasti, dispositivi NAS e altri sistemi di archiviazione multidisco.

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.

Hetman RAID Recovery: creazione di un'immagine del disco (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.

Hetman RAID Recovery: montaggio di un'immagine del disco (mount disk)

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

Hetman RAID Recovery: immagine del disco montata

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.

Hetman RAID Recovery: connessione dei dischi tramite 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.

Hetman RAID Recovery: connessione a un server remoto

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.

Hetman RAID Recovery: rilevamento automatico dell'array RAID

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.
Hetman RAID Recovery: parametri dell'array RAID rilevato automaticamente

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.

Hetman RAID Recovery: il volume è crittografato con LUKS

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.

Hetman RAID Recovery: dopo lo sblocco di LUKS, selezionare il tipo di analisi

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.

Hetman RAID Recovery: inserire la passphrase corrispondente

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.

Hetman RAID Recovery: i file eliminati sono contrassegnati con una croce rossa

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.
Gestione disco: richiesta di inizializzare il disco

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.

Hetman RAID Recovery: RAID Constructor - modalità manuale

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.

Hetman RAID Recovery: configurazione in modalità manuale

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.

Hetman RAID Recovery: configurazione dell'offset dell'array

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.

Hetman RAID Recovery: la configurazione dell'array è stata assemblata in modalità manuale

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.

Hetman RAID Recovery: array assemblato in modalità manuale

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.

Hetman RAID Recovery: aprire ogni disco dell'array nell'Editor HEX

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.

Hetman RAID Recovery: inserire la firma LUKS: 4C 55 4B 53 BA BE

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.

Hetman RAID Recovery: LUKS è stato trovato a 34,603,008 bytes dall'inizio del disco

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.

Hetman RAID Recovery: rilevare automaticamente l'ordine dei dischi

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.

Hetman RAID Recovery: rilevato un volume LUKS2 delle dimensioni previste

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.

Anton Kryvoruchko

Autore: , Scrittore tecnico

Anton Kryvoruchko è traduttore dall'italiano, dall'inglese, dal francese e dal polacco. Ha molti anni di esperienza e lavora con testi di vario argomento: dalla narrativa e testi tecnici alle riviste scientifiche popolari. Lavora costantemente per migliorare le sue conoscenze e competenze, perciò nel tempo libero impara anche il tedesco e lo spagnolo.

Mykhailo Miroshnichenko

Editore: , Scrittore tecnico

Mykhaylo Miroshnychenko è uno dei programmatori principali di Hetman Software. Avendo già quindici anni di esperienza nello sviluppo di software condivide le sue conoscenze con i lettori del nostro blog. Oltre alla programmazione, Mykhaylo è anche un esperto di recupero di dati, di file system, di dispositivi di archiviazione e di array RAID.