Go to Top

Unix e Linux: come avviene il recupero dati- Parte 1

File system Linux e Unix

Prima di tutto, cos’è esattamente UNIX?

Unix è un sistema operativo multi-user e multi-tasking sviluppato negli anni 60 dai laboratori AT&T Bell. La maggior parte dei sistemi UNIX è scritta nel linguaggio di programmazione C e per questo è in grado di funzionare su un ampio numero di computer. I fornitori di hardware come SCO, SGI, IBM, Hewlett Packard e Sun forniscono ciascuno le proprie versioni UNIX da utilizzare sui loro high end server.

Linux, cos’è?

Linux, alle volte chiamato GNU/Linux è un sistema operativo open source gratuito simile a Unix. Il progetto GNU è iniziato nel 1984 con lo scopo di creare una versione free di UNIX.  A questo progetto, però, mancava  un kernel, il nucleo del sistema operativo, completamente funzionante  fino a quando nel 1991 fu rilasciato da Linus Torvalds un kernel chiamato Linux. Il kernel Linux viene normalmente fornito insieme ad altri pacchetti del progetto GNU e ad altri sorgenti.

Un’occhiata più approfondita ai loro file system

Fast File System, EXT 2, 3 & 4

Il file system EXT2 (alle volte conosciuto come secondo Extended  File System) era stato originariamente creato per la piattaforma Linux e venne distribuito sul mercato nel 1993. Da allora questo file system è stato sostituito da EXT3 che aggiungeva alla precedente versione nuove funzionalità tra cui il journaling.  EXT4 è attualmente il file system predefinito per le distribuzioni Linux più popolari.

Come per molti altri file system UNIX  la struttura principale è molto simile a quella del Fast File System (FFS) originale di UNIX. La partizione è suddivisa in Cylinder Group  e ciascuno di questi gruppi contiene: SuperBlock,  Group Table, Data Bitmap, Inode Bitmap, Inode e infine i dati.

Alcune versioni EXT2 e EXT3 hanno invece degli Sparse Cylinder Group che contengono solo Inode e dati.
Unix e Linux_ 1

I file system EXT 2, 3 e 4 hanno un numero fisso di inode e questi vengono mappati sulla partizione dai Superblock e dai group table.

Questi inodes vengono utilizzati per rappresentare sia i file che le directory e contengono:

  • Tipologia dei file
  • Diritti di accesso
  • Proprietari
  • Timestamps
  • Dimensione
  • Puntatori ai blocchi di dati

Quando un  Cylinder Group  viene cancellato può essere sostituito da un altro  Cylinder Group  che protegge i dati.

Unix e Linux_ 2

Come potete vedere dall’immagine qui sopra, nell’ EXT 3 i puntatori ai blocchi di dati fanno parte dell’inode che indirizza i file dati sul drive.

I primi dodici puntano ai blocchi fisici che contengono i dati mentre gli ultimi tre puntano indirettamente ai blocchi di dati (single indirect, double indirect e triple indirect). Il single indirect contiene l’address di un blocco che a sua volta contiene i puntatori diretti come mostrato nel diagramma. Il double indirect punta ad un blocco che contiene puntatori single indirect e di conseguenza il triple indirect punta ai blocchi che contengono i puntatori double indirect. Questa organizzazione può essere complessa da visualizzare ma fondamentalmente ogni step di indirizzamento indiretto permette ai volumi di dati di essere indirizzati per poter aumentare esponenzialmente.

Vale la pena sottolineare che il recupero dati da EXT3 è un processo molto complesso e i risultati tendono a non essere così buoni quanto quelli che possono essere raggiunti in altri file system.

La struttura dei dati nei file system EXT4 è simile a quella di EXT3. La differenza principale sta nel fatto che gli Extent hanno sostituito i puntatori diretti e indiretti ai blocchi di dati, migliorando in maniera significativa le performance sui file di grandi dimensioni. Quando i dati vengono cancellati da un file system EXT 4 il loro recupero tende ad avere maggiore successo poiché gli Extent stessi non vengono cancellati e ciò rende possibile il rebuild dei file persi.

XFS

XFS venne sviluppato da SGI nel 1993 per superare alcune limitazioni dell’FFS in termini di performance e scalabilità. Questo file system venne distribuito per la prima volta nel 1994 insieme a IRIX v5.3 e nel 2000 SGI ha reso disponibile il codice come open source. In seguito, a partire dal 2003,  è stato ufficialmente incluso nel kernel Linux. La struttura del file system XFS a prima vista è molto simile a quella dell’FFS. Questa infatti conserva il sistema di cylinder group per la suddivisione della partizione che ora vengono chiamati allocation group, mantiene i superblock e utilizza gli inode per contenere i metadata dei file tuttavia qui le somiglianze finiscono.

Diversamente da FFS, XFS non ha un numero fisso di Inode pre allocati sul drive, al contrario è compito di ciascun gruppo di allocazione monitorare lo spazio libero e allocare dinamicamente gli inode come richiesto dal file system.

Questi Inode sono organizzati in una struttura ad albero B+ bilanciata che rende il passaggio alla struttura di directory più veloce rispetto al sistema di lista tradizionale implementato su FFS. Tuttavia per mantenere alti livelli di performance la struttura B+ deve rimanere bilanciata man mano che vengono allocati più inode e questo richiede un algoritmo relativamente avanzato.

Gli Inode XFS utilizzano anche gli extent per indirizzare i dati invece di indirizzare singoli blocchi di dati come FFS poichè in questo modo si ottiene una migliore scalabilità sui file di grandi dimensioni.

XFS include anche la funzione journaling per offrire al file system la possibilità di recupero in caso di crash del sistema o di problemi di alimentazione. Tuttavia  XFS prevede solo il journaling dei metadati del file system così mentre il volume può essere riparato e montato rimane comunque la possibilità che si verifichi una perdita dati per l’utente.

Un’altra caratteristica dell’XFS è l’allocazione ritardata, un metodo di allocazione dei blocchi per file di dati quando i dati stessi si trovano nella memoria cache. Questi dati vengono quindi scritti sul file system  solo nel momento in cui la cache viene svuotata dal sistema operativo. I principali vantaggi di questo approccio stanno nel fatto che questo processo può spesso ridurre drasticamente la frammentazione dei dati soprattutto nei file che si espandono lentamente e inoltre spesso riduce il carico per la CPU.

Nella seconda parte di questo articolo vi forniremo maggiori informazioni sui file system Linux/Unix e vi spiegheremo le differenze nei processi di recupero dati da questi sistemi e i più comuni sistemi operativi Windows e Mac.

One Response to "Unix e Linux: come avviene il recupero dati- Parte 1"

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *