Oltre al miglioramento delle prestazioni, uno dei motivi per cui i RAID vengono utilizzati è la protezione dai guasti. Per ridurre i danni hardware esistono diverse precauzioni, tra cui scegliere dischi di qualità e monitorare periodicamente la condizione dei dispositivi. Per ridurre i danni software, come errori logici o corruzione dei dati, esistono altrettante strategie. Una di queste è quella di scegliere un file system in grado di autoripararsi.
Il file system è la logica usata dal computer per organizzare i dati. È una sorta di anello intermedio tra il sistema operativo e i dispositivi di archiviazione, come i dischi rigidi o le unità CD e USB. Senza di esso, i dati verrebbero memorizzati in modo casuale impedendo al sistema di riconoscerli e modificarli. Oltre alla gestione dei file può integrare anche la gestione delle unità per realizzare archiviazioni personalizzate e flessibili.
Un esempio è ZFS, il file system di cui parleremo in questo articolo, che riorganizza la tradizionale architettura RAID in soluzioni di storage avanzate.
Cos'è ZFS?
ZFS, acronimo di Zettabyte File System, è un file system creato nel 2001 da Matthew Ahrens e Jeff Bonwick per Sun Microsystems. Inizialmente concepito come un progetto open-source, diventò closed-source dopo l'acquisizione da parte di Oracle nel 2010. In seguito al cambio di politica, Ahrens, Bonwick e parte del team lasciarono l’azienda. Tuttavia, continuarono a lavorare al progetto creando una versione open-source chiamata OpenZFS, oggi usata su sistemi operativi come Linux e FreeBSD.
ZFS è un file system e gestore di volumi, differenziandosi largamente da altre tipologie. Si tratta un'architettura che supporta varie configurazioni RAID, migliorandone le performance e la sicurezza. Infatti, possiede molte funzioni per la correzzione degli errori, come il checksum automatico e le istantanee del sistema operativo (snapshots). La sua caratteristica principale è la capacità di organizzare i dischi in dispositivi virtuali, a loro volta raggruppati in pool di storage.
Come funziona ZFS?
ZFS organizza l’archiviazione in più livelli. Essi sono:
- vdev: i virtual devices sono i contenitori di informazioni, come dischi rigidi o file. Per la scrittura/lettura dei dati, ai vdev viene applicato uno striping dinamico. Significa che la dimensione dei blocchi varia in base al numero e alle dimensioni dei dispositivi. I vdev supportati sono in tutto 7:
- disco fisico singolo
- file o immagini di unità
- mirror: corrisponde a due unità speculari in RAID 1
- raidz 1/2/3: corrispondono ai RAID basati sulla parità distribuita, come RAID 5 e 6
- hot spare: dispositivo di riserva utilizzato in caso di guasto
- cache: unità destinate a cache di tipo L2ARC
- log: registro di sistema, chiamato anche ZIL
- zpool: uno o più vdev costituiscono un zpool. Si possono ottenere livelli RAID personalizzati combinando diversi tipi di vdev, oppure replicando i livelli RAID annidati. Ad esempio, combinando due vdev mirror si ottiene un pool equivalente a un RAID 10 (RAID 1 + 0).
- dataset: è la componente del file system che contiene le configurazioni utente, come le autorizzazioni, la compressione dei file e gli snapshots.
- zvolume: equivale al dataset ma viene rappresentato a blocchi. È utilizzato per esportare estensioni iSCSI o creare unità di swap. Queste sono uno spazio in cui il sistema operativo scambia i file quando ha poca memoria a disposizione.
Per configurare un’archiviazione di questo tipo è necessario impartire dei comandi da console. Bisogna conoscere la logica con cui opera il file system, nonchè le limitazioni nella gestione dello storage.
Caratteristiche
Fungendo sia da file system che da gestore di volumi, ZFS ha un controllo completo di tutti i dati e ha la capacità di verificare e correggere gli errori in seguito a vari eventi. Questa caratteristica è unica se confrontata con i RAID tradizionali che separano controller, hardware e gestione dei file.
Rispetto ad altri file system, ZFS integra una funzione di snapshot molto efficace. Le istantanee si estendono ai dati, ai pool e al file system stesso, e si possono anche clonare. L’acquisizione influisce in maniera trascurabile sulle performance, così come il rollback per accedere agli stati precedenti. Questa funzionalità rende il recupero dei dati più veloce rispetto al ripristino da backup.
Altri punti di forza di ZFS sono:
- compressione e deduplicazione: la compressione riduce la dimensione dei file, mentre la deduplicazione elimina le copie ridondanti.
- checksum automatico: i dati e i metadati vengono costantemente verificati e corretti. La ricostruzione delle informazioni utilizza il checksum di rilevamento, le copie dei dati, o la parità dei RAID, oltre al registro delle attività contenute nel ZIL. Ciò permette di risolvere il problema del write hole che colpisce i RAID con striping e parità distribuita. Anche in seguito a un’interruzione di corrente, il file system possiede tutti gli elementi per ricostruire le informazioni come avrebbero dovuto essere in origine.
- migrazione array: la gestione dell’array avviene a livello di file system e non dipende da specifiche hardware. Nella pratica, significa che una configurazione RAID può essere portata su hardware diverso senza dover ricostruire i dati.
- striping parziale: a differenza dei RAID tradizionali che eseguono lo striping su tutti i dischi, ZFS consente lo striping solo su quelli necessari.
- rebuild intelligente: in caso di fallimento, un controller RAID ricostruisce l’intero disco anche se il problema riguarda un numero limitato di file. Conoscendo sia la struttura dei dischi che dei dati, ZFS limita la ricostruzione solo alle parti necessarie permettendo un notevole risparmio di tempo.
- gestione cache avanzata: ZFS è in grado di recuperare i dati presenti nella cache ed eliminati di recente, rivalutando il processo di memorizzazione in base al comportamento dell’utente.
- copy-on-write: anziché essere sovrascritti, i file modificati vengono indirizzati in una posizione diversa da quella originale fino a quando il processo non è concluso. Solo quando i metadati sono aggiornati vengono salvati nella posizione originale. Ciò fornisce un’ulteriore protezione contro i guasti improvvisi.
Nonostante questi svantaggi, ZFS presenta anche delle limitazioni, che andrebbero valutate in fase di costruzione del pool. Esse sono:
- dimensioni zpool: si possono solo aumentare, ma non diminuire. Inoltre, sostituendo i dischi con modelli più capienti, il pool non si ridimensiona automaticamente se non è stata attivata l’opzione a priori.
- numero di dispositivi: un dispositivo aggiunto a un vdev non è più rimovibile.
- consumo di RAM: la deduplicazione consuma molta RAM e rallenta il sistema.
- frammentazione dei dati: incide sulle performance quando le zpool hanno poco spazio a disposizione.
Andrebbe menzionato anche il calo di prestazioni per i vdev RAIDZ 2 e RAIDZ 3. In genere, aumentare la parità distribuita significa aumentare il numero di scritture e quindi rallentare il sistema.
Livelli ZFS RAID (RAID-Z)
Combinati con il file system ZFS, i RAID diventano particolarmente efficienti nella protezione dei dati. Essi sono composti da diversi volumi come in un array tradizionale, ma sono visti come un dispositivo vdev unico. A parte il vdev mirror che corrisponde al RAID 1, ZFS chiama RAID-Z1, RAID-Z2 e RAID-Z3 i livelli basati sulla parità distribuita. Ognuno di questi è un compromesso tra prestazioni e sicurezza, perciò andrebbe scelto in base alle priorità:
- RAID-Z1: equivale al RAID 5, cioè 3 dischi configurati in striping + singola parità. Un disco è dedicato alle informazioni di parità, fornendo un’ottima combinazione di prestazioni, protezione ed efficienza di archiviazione. La tolleranza ai guasti è di 1 disco.
- RAID-Z2: equivale al RAID 6 e funziona con 4 dischi in striping + doppia parità, di cui 2 dedicati alle informazioni di parità. La protezione aumentata rende questa configurazione adatta a scenari in cui la sicurezza è prioritaria rispetto all’efficienza di archiviazione. Tuttavia, le prestazioni risentono della doppia scrittura della parità. La tolleranza ai guasti è di 2 dischi.
- RAID-Z3: simile al precedente, ma con tripla parità distribuita. Richiede almeno 5 dischi, di cui 3 dedicati alle informazioni di parità. Queste caratteristiche rendono il RAID-Z3 ideale quando l’efficienza di archiviazione, il budget e le prestazioni sono fattori secondari rispetto alla criticità dei dati. La tolleranza ai guasti è di 3 dischi.
Anche se le prestazioni in scrittura peggiorano all’aumentare del grado di sicurezza, in lettura i tre livelli sono comparabili, poiché ZFS è veloce nell’assemblare i file dai blocchi di dati e di parità.
Recupero dati RAID-Z
Data la natura complessa del file system, recuperare i dati da un RAID-Z può diventare una sfida impegnativa, soprattutto in seguito a eventi che impediscono l’avvio del sistema. Il fatto che ZFS abbia diverse funzioni di protezione, non significa che l’archiviazione sia immune ai guasti e alla perdita di dati. Danni hardware multipli, danni software o errori umani sono potenzialmente fatali come per ogni altro tipo di storage.
Semplificando, ZFS può segnalare tre tipi di problemi:
- dispositivo non riconosciuto
- dispositivo guasto
- corruzione dei dati
Questi problemi influenzano la funzionalità dell’intero pool, incluso il suo avvio se il numero di danni supera la soglia di tolleranza. Essendo progettato per l’auto-ripararazione, ZFS non dispone di comandi come fsck (file system check) o chkdsk (check disk). Al suo posto è presente il comando zpool status, attraverso il quale è possibile fare uno screening completo.
Questo comando mostra le condizioni dei pool e dei dispositivi. Per ogni pool o vdev è indicato uno dei seguenti stati: online, available, unavailable, degraded o faulted. Inoltre, è indicato il numero di errori presenti in lettura, scrittura o checksum, altre a eventuali note sulla corruzione dei dati, sull’accessibilità o sullo stato di rebulding.
Dispositivi non riconosciuti
Questo problema si riscontra in diverse circostanze, ad esempio in caso di dispositivo rimosso. A seconda del tipo di vdev e del numero di dischi interessati, i dati diventano accessibili o meno. Se il RAID-Z non ha abbastanza blocchi per assemblare le informazioni, non è utilizzabilie finchè i dispositivi non sono ricollegati.
Un disco non accessibile viene etichettato come unavailable. Le cause possono essere diverse, ma per prima cosa è necessario vedere se funziona. Se non presenta problemi, si può ricollegare e riportare in stato online. A volte il problema è causato da un controller malfunzionante, che perciò deve essere sostituito.
Il mancato riconoscimento delle unità si verifica anche in caso di informazioni di configurazione danneggiate. Questi dati vengono salvati in un file di cache posto nella directory di root. Se il file è corrotto, ZFS non è in grado di riconoscere i pool o alcuni vdev di primo livello. Perció, l'intervento prevede il ripristino di questi dati, oppure l'esportazione e reimportazione del pool sul sistema.
Un dispositivo non riconosciuto è anche la conseguenza di un probabile guasto fisico o logico, che devono essere trattati in modo diverso.
Dispositivi danneggiati
In questa casistica rientrano i dischi che presentano un errore fisico, logico o entrambi. Ad esempio quando un controller o un disco non funzionano correttamente, si verificano errori temporanei di scrittura e lettura. Lo stesso avviene anche se i driver non vengono aggiornati oppure presentano bug.
I dispositivi danneggiati sono anche causati da errori umani. Gli utenti possono cancellare o sovrascrivere dati errati, oppure cambiare le configurazioni di rete. Quando avvengono delle interruzioni di rete, i dispositivi passano in stato offline, impedendo alle scritture in corso di essere completate. Questi dati verranno salvati incompleti o corrotti. Talvolta diversi eventi si sovrappongono e complicano il recupero dei dati.
La diagnosi parte come sempre attraverso il comando zpool status. Un numero ridotto di errori generalmente indica un evento temporaneo, come un’interruzione di rete o di corrente. In tale scenario, i dati sono riparabili attraverso un software o con i comandi interni di ZFS.
Diversamente, un numero elevato di errori indica un guasto del dispositivo. Per prima cosa dobbiamo verificare se esso può essere sostituito. Se il RAID-Z prevede uno o più forme di ridondanza, il pool è in stato online. Significa che è funzionante e che permette la sostituzione del disco e la ricostruzione dei dati.
Se il numero di dispositivi guasti supera la tolleranza, il pool passa in stato faulted, non funziona e bisogna estrarre i dati manualmente o recuperarli da un backup. L'estrazione manuale è necessaria anche quando i dischi sono fisicamente incapaci di avviarsi. In tale scenario si opera in camera bianca: le parti su cui sono scritte le informazioni vengono portate su un disco donatore in modo da leggerle e copiarle su nuove unità. Una volta recuperati i dati, si connettono i dispositivi e si ricostruisce il pool come in origine.
Corruzione dei dati
A volte capita che i dati siano corrotti a tal punto che ZFS non può correggere la situazione e richiede un’azione da parte dell’utente. La perdita dei dati è potenzialmente definitiva se non si interviene in tempo e se non esistono backup esterni.
Quando il danno colpisce i metadati del file system, il pool o i set di dati diventano inaccessibili. Se invece colpisce i file o una directory, l’inaccessibilità potrebbe essere parziale. I file danneggiati vengono mostrati eseguendo il comando zpool status.
Per la riparazione, si inizia con un data scrubbing, cioè una scansione e pulitura dei blocchi di dati. Tale processo viene fatto tramite i comandi nativi di ZFS o utilizzando un software specifico.
Se il sistema è incapace di avviarsi, il processo è complicato poichè ZFS tenta di montare i pool e individua automaticamente gli errori, generando un loop. Per evitare questa situazione, bisogna intervenire manualmente evitando che i pool vengano aperti durante il boot. Si può usare una copia delle configurazioni di avvio che ZFS salva nel file di cache. Essa permette di forzare l’avvio del sistema e successivamente di montare il file system.
Conclusioni
I RAID-Z sono archiviazioni progettate per offrire un grado di sicurezza elevato. ZFS contiene numerose funzioni, tra cui il supporto di array basati su mirroring e parità distribuita, l’autoriparazione e la personalizzazione dello storage in base alle esigenze. Tuttavia, la flessibilità e la sicurezza sono proporzionali alla complessità di gestione, specialmente nell’eseguire operazioni di pulizia e di ripristino.
Se avete uno storage basato su ZFS che presenta errori, è consigliabile rivolgersi un’azienda specializzata. L’uso di software scaricato da Internet non è raccomandato senza una conoscenza approfondita, poiché un’azione sbagliata potrebbe tradursi in una perdita definitiva dei dati.
DataLab ha una lunga esperienza nell’intervenire su sistemi RAID di diverso tipo, inclusi i RAID-Z. Potete fare affidamento sulla nostra competenza per ripristinare i vostri dati. Scriveteci utilizzando il modulo che trovate a questo link. Risponderemo alle vostre domande e vi forniremo una soluzione sicura e veloce.
Recupero Dati Professionale