Il file system esteso (ext fs), il secondo file system esteso (ext2fs) ed il terzo file system esteso (ext3fs) sono stati progettati e realizzati su Linux da Rémy Card, Laboratoire MASI--Institut Blaise Pascal, <card@masi.ibp.fr>, Theodore Ts'o, Massachussets Institute of Technology, <tytso@mit.edu> e Stephen Tweedie, University of Edinburgh, <sct@redhat.com>
� - La homepage di ext2. Questa è la principale fonte di informazioni su ext2.
� - Documento su ext2fs di John Newbigin.
� - Ext2fs_Rec (ext2 recognizer per WinNT).
Questo è un vecchio file system usato nelle vecchie versioni di Linux.
Il secondo file system esteso è probabilmente il più utilizzato file system nella comunità Linux. Fornisce la semantica Unix standard per i file e caratteristiche avanzate. Inoltre, grazie alle ottimizzazioni incluse nel codice del kernel, è robusto ed offre prestazioni eccellenti.
Poichè ext2fs è stato progettato considerandone l'evoluzione, esso contiene hooks (agganci) che possono essere utilizzate per aggiungere nuove caratteristiche. Alcuni stanno lavorando su estensioni all'attuale file system: liste di controllo d'accesso conformi alla semantica Posix, undelete e compressione dei file "al volo".
Ext2fs è stato il primo sviluppato ed integrato nel kernel di Linux ed è ora attivamente portato su altri sistemi operativi. Un server ext2fs che gira sullo GNU Hard è stato realizzato. Alcuni stanno lavorando ad una versione per il server LITES, che gira sul micro kernel Mach e sul sistema operativo VSTa. In ultimo, Ext2fs è una importante parte del sistema operativo Masix, attualmente in sviluppo da parte di uno degli autori.
Il secondo file system è stato progettato e sviluppato per risolvere alcuni problemi presenti nel primo file system esteso. L'obiettivo era quello di fornire un file system potente, con la semantica del file di Unix e caratteristiche avanzate.
Ovviamente volevamo per Ext2fs prestazioni eccellenti. Volevamo anche fornire un file system robusto in modo da ridurre il rischio di una perdita dei dati. In ultimo, Ext2fs doveva prevedere la possibilità di estensioni in modo da permettere agli utenti di usufruire di nuove capacità senza riformattare i dischi.
Ext2fs supporta i tipi di file standard Unix: file regolari, directory, device speciali e link simbolici.
Ext2fs è in grado di gestire file system creati in partizioni veramente molto grandi. Mentre il codice originale nel kernel limitava il file system a 2 GB, un recente lavoro sul layer VFS ha alzato questo limite a 4 TB. Quindi è ora possibile usare dischi molto grandi senza la necessità di creare diverse partizioni.
Ext2fs getisce i nomi lunghi in quanto usa voci nella directory di lunghezza variabile. Il limite massimo per i nomi è 255 caratteri ma può essere esteso a 1012 se necessario.
Ext2fs riserva alcuni blocchi per il super utente (root). Normalmente il 5% dei blocchi è riservato. Questo permette all'amministratore di correggere facilmente situazioni dove i processi di un utente riempiono il file system.
In aggiunta alle caratteristiche standard Unix, Ext2fs supporta alcune estensioni che non sono normalmente presenti nel file system Unix.
Gli attributi dei file permettono agli utenti di modificare il comportamento del kernel quando opera su un insieme di file. Si possono definire attributi per un file o per una directory. Nel secondo caso, tutti i file creati successivamente nella directory erediteranno gli attributi.
Al momento del mount si può scegliere la semantica BSD o quella del System V Versione 4. Una opzione del mount permette infatti di scegliere la semantica per la creazione dei file. In un file system montato con la semantica BSD, i file sono creati con lo stesso id di gruppo della directory madre. La semantica System V è un pò più complicata: se la directory ha il bit setgid abilitato, i nuovi file ereditano l'di di gruppo della directory e le nuove sotto directory ereditano sia l'id di gruppo che il bit setgid; in caso contrario, file e directory sono creati con l'id di gruppo principale del processo.
Gli aggiornamenti sincroni alla BSD possono essere utilizzati in Ext2fs. Una opzione del mount permette all'amministratore di richiedere che i meta dati (inode, blocchi di bitmap, blocchi indiretti e blocchi di directory) vengano scritti in maniera sincrona su disco quando vengono modificati. Questo può essere utile per mantenere una rigida consistenza dei meta dati ma porta a prestazioni molto scarse. In realtà, questa possibilità non viene in genere usata, perchè, in aggiunta al decadimento delle prestazioni associato all'aggiornamento sincrono dei meta dati, può essere causa di corruzione dei dati utente che non vengono segnalati dal controllore del file system.
Ext2fs permette all'amministratore di scegliere le dimensioni del blocco logico quando viene creato un file system. Le dimensioni del blocco possono tipicamente essere di 1024, 2048 e 4096 byte. Usare blocco di grandi dimensioni può velocizzare le operazioni di I/O per le ridotte richieste di I/O e quindi per i minori spostamenti della testina del disco che devono essere fatti per accedere ad un file. D'altro canto blocchi grossi sprecano più spazio su disco: in media l'ultimo blocco di ogni file è pieno per metà, quindi, al crescere delle dimensioni del blocco, più spazio viene sprecato nell'ultimo blocco. Inoltre, molti dei vantaggi nell'usare blocchi grandi sono ottenuti dalle tecniche di pre allocazione del file system Ext2fs.
Ext2fs supporta i link simbolici veloci. Un link simbolico veloce non usa alcun blocco dati del file system. Il nome del file target non è salvato nel blocco dati ma nell'inode stesso. Questa politica permette di risparmiare spazio su disco (non servono blocchi dati) e velocizza le operazioni sui link (non è necessario accedere a blocchi dati). Naturalmente lo spazio all'interno degli inode è limitato per cui non tutti i link possono essere realizzati come link veloci. Le dimensioni massime del nome del file target sono 60 caratteri. Si prevede di poter estendere questo limite in futuro.
Ext2fs tiene traccia dello stato del file system. Un campo speciale nel super blocco è usato dal kernel per indicare lo stato del file system. Quando un file system è montato in lettura e scrittura, il suo stato è posto a 'Not Clean'. Quando è smontato o rimontato in sola lettura, il suo stato è posto a 'Clean'. Durante il boot, il controllore del file system usa queste informazioni per decidere se un file system deve essere controllato. Il codice del kernel tiene traccia anche degli errori in questo campo. Quando una inconsistenza è rilevata dal codice del kernel, il file system è marcato come 'Erroneus'. Il controllore del file system verifica questo in modo da forzare il controllo del file system indipendentemente dal suo stato.
Saltare sempre i controlli del file system può essere a volte pericoloso, per cui Ext2fs fornisce due modi per forzare i controlli ad intervalli regolari. Un contatore di mount è gestito nel super blocco. Ogni volta che il file system viene montato in lettura e scrittura, il contatore viene incrementato. Quando raggiunge il valore massimo (anch'esso memorizzato nel super blocco), il controllore del file system forza una verifica anche se il file system è 'Clean'. Anche la data dell'ultimo controllo ed il massimo intervallo consentito tra due controlli sono salvati nel super blocco. Questi due campi permettono all'amministratore del sistema di forzare controlli periodici. Quando l'intervallo massimo viene superato, il file system viene controllato indipendentemente dal suo stato.
Un attributo permette agli utenti di richiedere la cancellazione dei file in modo sicuro. Quando un file viene cancellato in maniera sicura, dati casuali vengono scritti nei blocchi su disco in precedenza usati dal file. Questo non permette a malintenzionati di ottenere l'accesso al precedente contenuto del file usando un disk editor.
In ultimo, nuovi tipi di file ispirati dal file system di BSD 4.4 sono stati di recente introdotti in Ext2fs. I file immutabili possono essere solo letti: nessuno può scriverci o cancellarli. Questo può essere utile per proteggere file di configurazione importanti. File a sola aggiunta possono essere aperti solo in scrittura ma i dati sono sempre aggiunti in fondo al file. Questi file non possono, come quelli immutabili, essere cancellati o rinominati. Questo tipo è particolarmente indicato per i log file.
La struttura fisica di un file system Ext2fs è stata fortemente influenzata dal layout del file system BSD. Un file system è costituito da gruppi di blocchi (analoghi ai gruppi di cilindri del file system BSD). Tuttavia i gruppi di blocchi non sono legati alla disposizione fisica dei blocchi sul disco poichè i dischi moderni tendono ad essere ottimizzati per un accesso sequenziale e nascondono la loro geometria fisica al sistema operativo ,---------+---------+---------+---------+---------, | Settore | Gruppo | Gruppo | ... | Gruppo | | di boot | bloc. 1 | bloc. 2 | | bloc. n | `---------+---------+---------+---------+---------'
Ogni gruppo di blocchi contiene una copia ridondante delle informazioni di controllo cruciali del file system (il super blocco e i descrittori del file system) e contiene anche una parte del file systsem (un blocco bitmap, una bitmap degli inode, una parte della tabella degli inode e i blocchi dato). La struttura del gruppo di blocchi è rappresentata in questa tabella: ,---------+---------+---------+---------+---------+---------, | Super | FS | Blocco | Bitmap | Tabella | Blocchi | | blocco | desc. | bitmap | inode | inode | dato | `---------+---------+---------+---------+---------+---------'
Usare i gruppi di blocchi è un grosso vantaggio per l'affidabilità: poichè le strutture di controllo sono replicate in ogni gruppo, è facile ripristinare un file system con il super blocco danneggiato. Questa struttura aiuta anche ad ottenere delle buone prestazioni: riducendo la distanza tra la tabella degli inode ed i blocchi dato, è possibile ridurre gli spostamenti della testina del disco durante l'I/O sui file.
In Ext2fs, le directory sono gestite con liste collegate con voci di dimensioni variabile. Ogni voce contiene il numero di inode, le dimensioni della voce, il nome del file e la sua lunghezza. Usando voci di dimensioni variabili, è possibile gestire i nomi lunghi senza sprecare spazio su disco.
In Linux, il codice Ext2fs nel kernel contiene molte ottimizzazioni per le prestazioni, le quali tendono a migliorare la velocità di I/O durante la lettura e la scrittura dei file.
Ext2fs si avvantaggia della gestione del cache buffer per eseguire delle letture in anticipo: quando un blocco deve essere letto, il codice del kernel richiede l'I/O di diversi blocchi contigui. In questo modo, si cerca di assicurare che il blocco successivo da leggere sia già caricato nel buffer. Le letture in anticipo sono normalmente effettuate durante l'accesso sequenziale dei file; Ext2fs le estende anche alla lettura delle directory, sia in modo esplicito (chiamate alla readdir(2)) sia in modo implicito (ricerca con namei).
Ext2fs contiene anche molte ottimizzazioni di allocazione. I gruppi di blocchi sono utilizzati per raggruppare insieme inode e dati correlati: il codice del kernel cerca sempre di allocare per un file blocchi dato nello stesso gruppo di blocchi del suo inode. Questo per ridurre gli spostamenti della testina del disco quando si leggono un inode ed i suoi blocchi dato.
Nello scrivere dati in un file, Ext2fs prealloca fino a 8 blocchi adiacenti quando alloca un nuovo blocco. La preallocazione ha una percentuale di successo di circa il 75%, anche su un file system molto pieno. Con questa preallocazione si raggiungono buone prestazioni in scrittura a pieno carico. Permette anche che blocchi contigui siano allocati per lo stesso file, velocizzando così le future letture sequenziali.
Questi due ottimizzazioni nelle allocazioni producono una localizzazione molto buona di:
file collegati fra di loro, attraverso i gruppi di blocchi
blocchi collegati fra di loro, attraverso gli 8 bit di raggruppamento della allocazione dei gruppi.
Ext3 possiede le stesse caratteristiche di Ext2 ma include anche il journaling. Si può scarica la versione preliminare da �.
Homepage: �
Download: �
Responsabile: Peter Moulder <reiter@netspace.net.au>
Freshmeat: Console/file system
Accesso: come per ext2 (lettura/scrittura, nomi lunghi)
Licenza: GPL tranne gli algoritmi di compressione (diverse licenze)
Download:ftp://sunsite.unc.edu/pub/Linux/system/file system/ext2/
Accesso: sola lettura, nessuna lettera di disco (programmi di utilità speciali)
Autore: Claus Tondering <ct@login.dknet.dk>
Accesso: ?
Licenza: ?
Homepage: �
Autore: Werner Zimmermann <Werner.Zimmermann@fht-esslingen.de>
Homepage: �
Mirror: � (solo le principali versioni)
Accesso: lettura, scrittura e modifica, nomi lunghi
Licenza: GPL
Homepage:�
Autore: Matthieu WILLM <willm@ibm.net> , <matthieu.willm@wanadoo.fr>
Download: �
Freshmeat: Console/file system
Accesso: lettura/scrittura e boot da e verso Ext2, supporto per i media removibili ma non per gli attributi estesi.
Homepage:http://www.yipton.demon.co.uk/
Autore: Peter van Sebille pvs@globalxs.nl , pese@nlnwgfsc.origin.nl
Freshmeat: Console/file system
Accesso: sola lettura, supportati i nomi lunghi
Homepage:�
Accesso: lettura e scrittura, nomi lunghi, link simbolici, etc..
Autore: John Newbigin <jn@it.swin.edu.au>
Licenza: GPL
Homepage: �
Download: �
Autore: Andrey Shedel < andreys@cr.cyco.com >
Freshmeat: Console/file system
Licenza: gratis
Accesso: lettura e scrittura, nomi lunghi, sicurezza, page file, link hard.
Homepage: �
Autore: Travis Geiselbrecht < geist@tamu.edu >
Accesso: sola lettura, supportati i nomi lunghi.
Licenza: gratis
L'autore lavora adesso per la Be Inc per cui non si vedrà il suo supporto per Ext2 e NTFS aggiornato su web per molto tempo. I driver dovrebbero essere inseriti nelle future versioni di BeOS.
Homepage: �
Autore: ?
Download: ?
Homepage: �
Autore: <yescrew@capybara.sk-pttsc.lj.edus.si>
Download: ?
Licenza: GPL
Download: �
Autore: Stephen C. Tweedie < sct@redhat.com >
Licenza: GPL
Homepage: �
Download: �
Autore: Lennert Buytenhek <buytenh@dsv.nl>.
Licenza: GPL
Homepage: �
Responsabile: Mike Field <mafield@the.net.nz>
Licenza: copyright di Mike Field. Diventerà GPL una volta stabile.
Homepage: �
Download: �
Autori: tytso@mit.edu e card@masi.ibp.fr
Porting su Windows NT: �
Freshmeat: Console/file system
Licenza: GPL
Homepage: ?
Autore: tgud@tochnapc2.technion.ac.il.
Download: �
Licenza: GPL
Homepage: ?
Autore: Scott D. Heavner <sdh@po.cwru.edu>.
Download: �
Licenza: GPL
Homepage: �
Autori: Gunther Costas, Wilfredo Lugo, Jerry Ramirez <undelete@amadeus.uprm.edu>
Freshmeat: Console/file system
Licenza: GPL