Recupero dati ZFS: guida a RAIDZ1, RAIDZ2, RAIDZ3 e Stripe
In questo articolo esaminiamo le procedure per il recupero dati da array RAIDZ1, RAIDZ2, RAIDZ3 e ZFS Stripe creati nel sistema operativo TrueNAS SCALE. Dimostriamo la sequenza di azioni in caso di guasto hardware del server e la metodologia per ripristinare l’accesso al pool di dati quando uno o più dischi guastano o i dati vengono eliminati accidentalmente dall’array.

- Capacità di TrueNAS SCALE
- Metodo 1. Recupero automatico di array ZFS
- Metodo 2. Recupero RAIDZ con dischi mancanti
- Metodo 3. Recupero di file cancellati
- Conclusione
- Domande e risposte
- Commenti
Oltre ai guasti hardware, trattiamo il recupero dopo l’eliminazione di un intero dataset, la corruzione del pool, un guasto critico del sistema operativo, danni al filesystem ZFS, errori durante l’aggiunta di nuovi dischi, comportamento errato del controller e l’inizializzazione accidentale dei dischi in un altro sistema.
Il recupero dei dati viene eseguito su Linux Ubuntu, ma è possibile anche in ambienti Windows e macOS.
Recupero dati da array RAID SHR-2 e SHR-1 creati su NAS Synology DS418play
Capacità di TrueNAS SCALE
TrueNAS è un sistema operativo open per la costruzione di storage di rete, basato su Linux e che utilizza il filesystem ZFS. Fornisce protezione dei dati, verifica di integrità, gestione efficiente dei dischi e supporta l’esecuzione di macchine virtuali.
La piattaforma supporta vari tipi di RAID, incluso RAIDZ, che combina prestazioni e tolleranza ai guasti. TrueNAS SCALE consente la scalabilità orizzontale combinando più nodi in un cluster preservando le principali funzionalità di ZFS: self-healing, snapshot, compressione, deduplica e crittografia.

Il sistema è compatibile con i protocolli SMB, NFS, iSCSI e S3 e permette inoltre l’esecuzione di container e Kubernetes, rendendolo una soluzione versatile per l’archiviazione e l’elaborazione dei dati in vari ambienti.
RAIDZ è un array ridondante in ZFS con parità distribuita. L’uso di blocchi a lunghezza variabile ottimizza le scritture e consente la correzione automatica degli errori durante le letture.
Durante il recupero di un array degradato (resilvering), il carico sui dischi rimanenti aumenta significativamente. Pertanto, RAIDZ è più adatto ad ambienti con requisiti moderati di tolleranza ai guasti o per dischi di capacità inferiore dove i tempi di ricostruzione dell’array sono minimi.
| Categoria | Capacità |
|---|---|
| Tipo di sistema | NAS open-source / server basato su Linux |
| File system | Supporto ZFS |
| RAID | RAIDZ1, RAIDZ2, RAIDZ3, Stripe, Mirror |
| Scalabilità | Orizzontale (Scale-out) |
| Virtualizzazione | Supporto KVM (macchine virtuali) |
| Container | Kubernetes, Docker (tramite Apps) |
| Protocolli di rete | SMB, NFS, FTP, iSCSI |
| Gestione | Interfaccia web (GUI) |
| Sicurezza | Crittografia dei dati, controllo accessi, ACL |
| Backup | Snapshot, Replicazione, Rsync |
| Servizi cloud | Integrazione con AWS, Google Cloud, Azure |
| Monitoraggio | Alerting, log, statistiche |
| Plugin / App | Estendibilità tramite catalogo applicazioni |
| Alta disponibilità | Supporto cluster (HA) |
| Supporto GPU | Sì (per container e VM) |
Metodo 1. Recupero automatico di array ZFS
In caso di guasto di componenti hardware del server (alimentatore, scheda madre o controller dei dischi), l’accesso diretto ai dati dal sistema operativo diventa impossibile.
Situazioni analoghe si verificano anche quando il server non si avvia a causa di un errore critico durante un aggiornamento di TrueNAS SCALE o quando la partizione di sistema è danneggiata.
Anche se i file e i dischi non sono danneggiati fisicamente, l’accesso a un array RAIDZ può andare perso e gli strumenti standard di ZFS potrebbero non rilevare i dischi o permettere l’import del pool. In questi casi, software specializzati, come Hetman RAID Recovery, consentono un accesso sicuro ai dati e il recupero delle informazioni.
In questo esempio dimostriamo il processo di recupero automatizzato su un computer che esegue Ubuntu.
Per prima cosa spegnere il server e rimuovere con attenzione tutti i dischi che facevano parte dell’array.

Collegarli a una workstation: l’opzione ottimale è direttamente alla scheda madre tramite cavi SATA per massima velocità e stabilità del trasferimento dati. Se la scheda madre non dispone di porte libere, è possibile utilizzare docking station USB esterne o adattatori USB-per-disco.

Si noti che se collegati tramite docking station la velocità di scansione può essere inferiore, quindi per grandi volumi di dati è preferibile utilizzare porte interne.
Dopo il collegamento, verificare che i dischi siano visibili in Ubuntu nell’utilità Dischi, ma non inizializzarli se il sistema richiede tale operazione.

Immediatamente dopo la verifica, avviare Hetman RAID Recovery per eseguire l’assemblaggio automatico dell’array.
La caratteristica chiave di Hetman RAID Recovery è l’analisi profonda dei metadati ZFS. Il software non richiede un sistema operativo o un controller funzionante: legge le informazioni di servizio direttamente dai dischi e ricostruisce automaticamente la struttura del pool.
Poiché ZFS memorizza tutte le informazioni critiche di configurazione dell’array all’interno del pool stesso, l’integrità logica dei file è preservata anche se l’ambiente server è completamente non disponibile. Di conseguenza, l’utente ottiene accesso ai dati in una forma nota senza dipendenza dal sistema originale.
Questo articolo dimostra diverse configurazioni di array:
- RAIDZ1 su tre dischi,
- RAIDZ2 su quattro,
- RAIDZ3 su cinque,
- e Stripe su due dischi.

Esamineremo l’algoritmo di recupero in dettaglio per un array RAIDZ1 a tre dischi in una situazione di guasto hardware completo del server o di errore critico dopo l’aggiornamento di TrueNAS SCALE.
È importante notare che questo approccio è universale e può essere applicato anche alle configurazioni RAIDZ2, RAIDZ3 e Stripe.
Dopo l’avvio di Hetman RAID Recovery, il programma esegue automaticamente la scansione di tutti i dispositivi collegati. Il software legge i metadati di servizio di ZFS, analizza la configurazione dei gruppi vdev virtuali e, in base ai dati ottenuti, ricostruisce il modello corretto di RAIDZ1.
La finestra di lavoro mostra i dischi rilevati e le strutture logiche assemblate — è possibile continuare immediatamente il lavoro: eseguire un’analisi dettagliata, visualizzare la struttura dei dati o recuperare i file necessari.

Selezionare il RAIDZ1 desiderato dall’elenco degli array ricostruiti ed avviare la modalità Scansione rapida per determinare rapidamente la struttura dei dati.

Al termine della scansione, il filesystem recuperato con la gerarchia completa di directory e file verrà visualizzato nella finestra principale. Selezionare gli oggetti necessari e fare clic su Recupero.

Nel passaggio successivo, specificare una cartella per salvare i dati — preferibilmente su un supporto separato con spazio libero sufficiente.

Confermare l’avvio del processo, specificare il percorso di destinazione finale e fare clic nuovamente su Recupero per avviare la copia. Dopo il completamento dell’operazione, fare clic su Fine.
Di conseguenza, i dati dal pool ZFS RAIDZ1 saranno recuperati e disponibili per l’uso normale.

Metodo 2. Recupero RAIDZ con dischi mancanti
Ora consideriamo il caso di uno o più guasti di unità in un array RAIDZ.
L’architettura RAIDZ fornisce tolleranza ai guasti in base al tipo di array:
- RAIDZ1 tollera la perdita di un disco.
- RAIDZ2 tollera la perdita di due dischi.
- RAIDZ3 tollera la perdita di tre dischi.
Nel caso di Stripe non esiste ridondanza, quindi il guasto di qualsiasi disco comporta la perdita completa dei dati.

Se non è possibile collegare tutti i dischi, è possibile creare un’immagine del disco mancante e utilizzarla insieme agli altri dischi per il recupero successivo.
Grazie ai meccanismi di parità distribuita e ai controlli di integrità dei dati, software specializzati come Hetman RAID Recovery possono ricostruire blocchi persi e ripristinare l’accesso alle informazioni se il numero di dischi guasti non supera il livello consentito per il tipo specifico di RAIDZ.
Se questa soglia viene superata, la struttura logica dell’array risulta compromessa e i metodi software standard diventano inefficaci. In tali situazioni, il recupero è possibile solo con apparecchiature professionali in laboratori specializzati.
Assicurarsi che il supporto di destinazione disponga di spazio libero sufficiente per memorizzare i dati recuperati e rimuovere con cura i dischi dal server collegandoli a un computer tramite porte SATA o una docking station esterna. È importante evitare qualsiasi scrittura su questi dischi, poiché ciò potrebbe causare una perdita di dati irreversibile.

Prima di iniziare, chiudere tutte le applicazioni che potrebbero utilizzare questi dischi e disabilitare temporaneamente backup automatici o sincronizzazioni. Se il sistema non monta l’array, non inizializzare i dischi, creare partizioni o formattarli.
Lasciarli nello stato corrente e procedere direttamente alla procedura di recupero. Seguire queste raccomandazioni aumenta significativamente le possibilità di un recupero dati sicuro e riuscito indipendentemente dal tipo di RAIDZ o dalla configurazione Stripe.
Se l’architettura della workstation non consente di collegare tutti i dischi contemporaneamente, la soluzione ottimale è utilizzare immagini di disco virtuali. Questo metodo prevede la creazione di copie bit-a-bit esatte di ciascun disco per l’analisi successiva.
Dopo il montaggio dell’immagine del disco mancante, Hetman RAID Recovery la tratterà come un dispositivo fisico completo e, combinata con i dischi disponibili, ricostruirà automaticamente la struttura dell’array. Questo approccio consente di avviare il recupero dei dati anche quando le porte di connessione sono insufficienti — preservando la sicurezza e l’integrità dei dati in ogni fase.
Illustreremo il processo di recupero usando come esempio un RAIDZ3 in cui tre dischi sono guasti contemporaneamente.
Questa configurazione di array consente la possibilità di recuperare i dati anche in un guasto così grave — eseguiremo l’operazione con Hetman RAID Recovery.
Immediatamente all’apertura, il software esegue la scansione automatica di tutti i dischi collegati, legge le informazioni di servizio e su tale base ricostruisce la struttura originale dell’array. La finestra di lavoro mostra tutti i dischi fisici rilevati e le configurazioni virtuali formate, che possono essere utilizzate subito. Selezionare il RAIDZ3 trovato e abilitare la Scansione rapida.

Non appena il controllo termina, la finestra di lavoro mostrerà la struttura completa dell’array ricostruito con tutte le directory e i file.

Selezionare gli elementi necessari e fare clic su Recupero. Quindi specificare la cartella di salvataggio e confermare l’operazione facendo nuovamente clic su Recupero.

Al completamento della copia — fare clic su Fine.
Dopo aver completato tutti i passaggi, i file recuperati dall’array RAIDZ3 saranno completamente utilizzabili in operazione normale.

Metodo 3. Recupero di file cancellati
Infine, consideriamo uno degli scenari più comuni — la cancellazione accidentale di file da un array RAID.
In questo esempio recuperiamo dati da uno Stripe creato su due dischi con filesystem ZFS.
La caratteristica dello Stripe è che i dati sono distribuiti su tutti i dischi senza alcuna ridondanza. Ciò significa che nessun singolo disco contiene file completi. Per un recupero riuscito tutti i dischi devono essere collegati simultaneamente e trattati come una singola struttura logica. Se uno dei dischi è mancante o non collegato, il software non sarà in grado di leggere i dati.

Prima di iniziare, assicurarsi che tutti i dischi siano collegati fisicamente al computer — direttamente via SATA alla scheda madre o utilizzando una docking station esterna.
È importante non scrivere nuovi dati su questi dischi né inizializzarli nel sistema per evitare la sovrascrittura dei file persi.

In Ubuntu avviare Hetman RAID Recovery.
Il software eseguirà automaticamente la scansione di tutti i dischi collegati, leggerà i metadati ZFS e ricostruirà la struttura logica dello Stripe di conseguenza. Nella finestra principale vedrete i dischi fisici e l’array assemblato pronto per l’elaborazione.

Successivamente, selezionare lo Stripe dall’elenco degli array rilevati e avviare una Scansione completa. È necessaria una scansione completa perché dopo la cancellazione dei file in ZFS solo un’analisi profonda consente di assemblare i dati frammentati e ripristinare la corretta struttura delle cartelle.

In genere non sono richieste impostazioni aggiuntive; basta fare clic su Avanti e attendere il termine del processo. Al termine della scansione, la finestra principale mostrerà la struttura dell’array recuperato con tutte le cartelle e i file. Se necessario, utilizzare l’anteprima per verificare il contenuto di documenti, immagini o altri file.
Selezionare i file e le cartelle necessari e fare clic su Recupero.

Specificare la destinazione per i dati recuperati su un supporto separato con spazio libero sufficiente e confermare l’avvio del processo facendo nuovamente clic su Recupero.
Al termine della copia fare clic su Fine.

Di conseguenza, tutti i file saranno recuperati e disponibili per l’uso normale.
Questo processo garantisce la sicurezza dei dati, consente il ripristino dei file anche dopo l’eliminazione accidentale e preserva la struttura del filesystem ZFS senza rischiare danni ad altri dati sui dischi.
Conclusione
Il recupero dei dati dal filesystem ZFS e dagli array RAIDZ1, RAIDZ2, RAIDZ3 e Stripe è complesso ma completamente fattibile con l’approccio corretto e la comprensione dell’architettura di queste soluzioni. Grazie ai meccanismi integrati di integrità dei dati e controllo degli errori, ZFS fornisce un elevato livello di protezione, specialmente nelle configurazioni RAIDZ2 e RAIDZ3.
Tuttavia, anche tali sistemi affidabili non sono immuni dalla perdita di dati a causa di guasti hardware, errori dell’utente o corruzione critica del pool. La configurazione meno protetta rimane lo Stripe, dove l’assenza di ridondanza comporta la perdita completa dei dati se un disco guasta.
Il successo del recupero dipende da molti fattori: tipo di RAID, numero di dischi guasti, condizione del filesystem e tempestività delle azioni. Le raccomandazioni chiave sono interrompere immediatamente le scritture sull’array interessato, eseguire una diagnostica corretta e utilizzare software specializzati o servizi professionali.
Pertanto, per minimizzare il rischio di perdita dei dati è importante non solo sapere come recuperare i dati, ma anche implementare strategie di backup in anticipo e scegliere il livello RAID appropriato in funzione della criticità delle informazioni.

