|
|
|
I Filesystem |
|||||||||||||||||||||||||||||||||||||
|
Cominciamo con un minimo di nozioni generali. Un supporto è in mezzo fisico in grado di memorizzare informazioni. Tra gli esempi possiamo considerare il floppy disk, gli hard disks, perfino cdrom, zip, ls-120, e ramdisks. Un disco può (e solitamente lo è) essere diviso in uno o più partizioni. Una partizione è semplicemente una parte del disco che è stata assegnata ad un particolare sistema di gestione dei files, spesso specifico di un sistema operativo. L'elenco delle partizioni presenti su un particolare disco si chiama tabella delle partizioni ( partition table ), o anche mappa delle partizioni (partition map) e può contenere piccoli programmi (ad esempio, il driver del dispositivo, oppure i programmi per il boot del sistema) Un filesystem comprende i metodi e le strutture di dati usate da un sistema operativo per tenere traccia dei file in una data partizione, cioè il modo in cui i file sono organizzati sui dischi. La parola viene anche usata per riferirsi ad una partizione o a un disco usato per immagazzinare i file, o al tipo del filesystem. Attenzione adesso all' errore più comune, i sistemi Dos\Windows utilizzano un filesystem per così dire semplificato,limitato alla Fat o File allocation table che spesso viene IDENTIFICATO con il filesystem, questo non è esatto, normalmente la Fat fa PARTE del Filesystem, non è il filesystem. Con l'avvento di WinXP e della sua Ntfs sui Desktop di tutti i giorni, questa specifica è fondamentale. La differenza tra una partizione ed il filesystem che contiene è molto importante. Alcuni programmi operano direttamente sui settori del disco o della partizione; se c'è un filesystem esistente, questo verrà distrutto o seriamente danneggiato. La maggior parte dei programmi operano su un filesystem, e quindi non funzioneranno su una partizione che non ne contiene uno (o ne contiene uno del tipo sbagliato). |
|||||||||||||||||||||||||||||||||||||
|
Prima che si possa usare un disco o una partizione come filesystem, deve essere inizializzato (formattato), e bisogna scriverci le strutture di dati per l'archiviazione. Questo processo si chiama creazione di un filesystem. Questo processo viene talvolta chiamato formattazione a basso livello. Importante: Sui floppy disk, date le loro limitati dimensioni e prestazioni è ammesso una sola partizione e pertanto un solo filesystem. In questi casi si tende a confondere il significato di tre termini. Attenzione questo rende implicito che tutto il resto si può partizionare! Per accedere alle informazioni sul filesystem, le unità cui il sistema operativo fa riferimento sono i cluster e i settori. Un settore è una struttura dipendente dalla formattazione fisica del supporto. Nel caso degli hard disk, i settori sono 'storicamente' grandi 512 bytes, ma in altri supporti (es: cd-rom) le loro dimesioni possono variare. Il settore è la minima unità accessibile dall'harware: i settori sono letti e scritti per intero, anche se occorre scrivere un solo byte.Un cluster (o block) è invece la minima unità accessibile a livello software, ed è in genere un multiplo dei settori. Questo semplifica la gestione dei dischi al crescere delle dimensioni del supporto, ma aumenta lo spreco (frammentazione). I Cluster sono grandi solitamente 2 settori (1Kb) nei floppy disk, ma hanno dimensioni fortemente variabili su altri supporti. |
|||||||||||||||||||||||||||||||||||||
|
Filesystem MS-DOS (FAT16) Il filesystem FAT16 (e la sua variante FAT12, usata su floppy disks e hard disk di limitate dimensioni) è stato utilizzato da MS-DOS fino alla versione 7.0 ( Win95A) in maniera esclusiva, nelle versioni successive è utilizzabile ma pone grosse limitazioni. Lo schema di gestione è piuttosto semplice: la FAT, o File Allocation Table, non è altro che una mappa dei cluster occupati collegati fra loro come una lista lineare. Per permettere al sistema operativo di trovare il file, la directory fornisce il numero del cluster nella FAT. I primi due cluster sono sempre riservati, per indicare il tipo di supporto e se si tratta di FAT12 o FAT16. Dato che la FAT è una regione molto importante del disco, solitamente ne viene fatta una copia per ridurre le possibilità di errore. Questa struttura di directory, perfettamente adeguata ad un piccolo sistema degli anni '80 (hard disk assenti o con dimensioni 10-30 MB, potenze limitati) è resa obsoleta dal miglioramento delle tecnologie. Tra i proplemi principali citiamo: Frammentazione 1°)esterna ed 2°)interna:
1°) I files possono occupare Cluster non contigui, quindi è necessario un lungo processo di riorganizzazione (deframmentazione) per evitare inutili movimenti delle testine dell'Hdd.
2°) Ogni file per quanto piccolissimo -1 byte- occupa un intero Cluster, e come vedremo questo porta ad un grosso spreco di spazio. (non ovviabile)
Dimensioni massime: Le versioni di dos inferiori alla 4 hanno una dimensione massima di partizione di 32MB. Quelle superiori hanno un limite di 2GB.
* Disponibile solo con Win Nt; 2K; Xp. L' Unica miglioria degna di nota, è stata L' Introduzione della vFat con Win95 ( Dos 7.0), che permette l'uso dei nomi lunghi - 255 caratteri - anche se con un artificio complesso, che porta alla formazione di "Frammenti di nome file lungo" quando i files vengono manipolati in ambiente Dos. In pratica il testo eccedente il formato classico "8+3" contenuto nel nome di file, diventa parte del file, viene cioè "scritto a parte" ne nelle fat, ne con il contenuto del file, comunque con uso di spazio disco, quindi quando viene cancellato, può lasciare frammenti di file orfani. |
|||||||||||||||||||||||||||||||||||||
|
Filesystem FAT32 FAT32 (File Allocation Table 32) è un sistema che è stato adottato a partire dal MsDos 7.1, (Windows95 OSR2, detto anche Windows95B) che introduce delle migliorie: Dato che la FAT è a 32 bit anziché 16, supporta partizioni sino a 2 Terabytes. La frammentazione interna era fortemente ridotta finchè gli Hdd avevano dimensioni umane, come possiamo notare dalla sottostante tabella:
Ovvio che con gli attuali "mostri" da 40Gb e più, se non facciamo delle partizioni ristiamo da capo e 12 con i cluster da 32Kb e con un enorme spreco di spazio. Notare come le informazioni scritte in "Giallo" siano state tenute nascoste, o perlomeno non divulgate. Del resto Windows di "Default" fà dei cluster da 4Kb, ed è necessario un programma come Partition Magic della Power Quest, o essere a conoscenza del comando - non documentato - Format <lettera di unità> /z:n<n= N°settori per cluster > così facendo possiamo decidere a priori le dimensioni dei cluster*, in base al calcolo Numero settori/2= Kbyte per cluster. Importante notare che al diminuire delle dimensioni dei cluster, ne cresce a parita di dimensioni il numero, e quindi diminuisce LA VELOCITA' DEL FILESYSTEM. Questo parametro può essere usato anche per AUMENTARE la dimensione dei cluster in quei sistemi un pò vecchi che altrimenti risulterebbero troppo lenti
*Sempre nel rispetto delle dimensioni MAX della partizione. Es: Non posso fare dei cluster da 2K in una partizione di 6Gb,ma posso passare da 4K a 1K in una partizione da 1,9Gb. Per converso, posso passare da 4K ad 8K una partizione da 7Gb per Guadagnare un pò di velocità! |
|||||||||||||||||||||||||||||||||||||
|
Vantaggi & ..... Fat16, è un pò la mamma di tutti i filesystem, quindi viene riconosciuta da tutti quelli usati nel mondo Pc, è veloce, permette, anche a Pc poco dotati, di limitare i tempi di accesso al disco, la sua organizzazione ( Byte usati durante la formattazione ) richiede il minimo indispensabile, insomma il massimo di compatibilità e velocità. Fat32, sinceramente non mi è mai piaciuta un granchè, aggiunge solo il supporto a dischi di grandi dimensioni ( che, ammetto, non è poco ) ma toglie un sacco di attributi positivi. -vedi limiti- Fat16 Beh, si vede dalle tabelle soprastanti, Fat16 ci và estremamente stretta come dimensioni, limite 8+3 nei nomi di file, fino alla vFat Fat32 Assoluta incompatibilità con tutti i sistemi precedenti, (girando sul Web il sottoscritto ha trovato la maniera di leggere qualsiasi filesystem da DOS, ma NON la Fat32). E' più lento (e non di poco) di FAT16. Non è compatibile " Naturalmente " con altri Sistemi operativi Non risolve i problemi di frammentazione esterna Entrambe Non è presente alcun concetto di possesso di files, di protezione e similare. Sistemi Operativi che le usano Tutti i programmi Microsoft fanno uso della barra retroversa '\' anziché della barra '/', cosa che crea notevoli problemi ancora oggi nel caso di ambienti OS misti. WinNT e derivati potrebbe farne a meno, ma per ragioni di compatibilità ne mantiene l'uso, stesso discorso per la metafora delle lettere di unita, al posto di un "nome". |
|||||||||||||||||||||||||||||||||||||
|
Filesystem NTFS NTFS, ovvero NT File System, è il filesystem più robusto e sicuro per Windows NT. Tra le sue caratteristiche principali prevede:
Controlli di accesso e privilegi diversi a seconda della proprietà di un file. Possibilità di compressione in modo trasparente Recuperabilità (journaling, vedi poco oltre) in caso di errori.** Supporto per il filesystem Macintosh FAT è più veloce su volumi piccoli, ma NTFS funziona meglio su partizioni grandi, a partire da 500 MB. **Journaled La richiesta dei nuovi sistemi operativi, soprattutto (ma non solo) nel caso di server, richiede una una forte tolleranza a guasti ed errori di sistema. Consideriamo, ad esempio il caso della modifica di un file: i dati nuovi sovrascrivono quelli vecchi, man mano che si procede nella scrittura. Prendiamo allora il caso di un errore (caduta tensione, blocco sistema) durante tale operazione: avremo (nella migliore delle ipotesi) metà dei dati modificati, metà no; alternativamente, potremmo avere blocchi segnati come liberi che in realtà sono occupati. Per recuperare questi errori si fa appello a programmi come scandisk, Norton Utilities o fsck.ext2, ma non sempre questi programmi riescono nell'intento e, in ogni caso, il vostro sistema è fermo durante il controllo. Un journaling filesystem non differisce molto dalle sue versioni precedenti, ma aggiunge un ``diario di bordo'' delle modifiche: durante ogni transazione (un'insieme di operazioni che non possono essere divise) di qualsiasi tipo, viene dapprima scritta in una sezione speciale del filesystem sotto forma di voce del ``diario''. Quindi, si effettua la modifica e, per finire, si segna sul diario che la modifica è andata a buon fine (``passed ''). L' utente medio di Pc neanche sà che un livello di sicurezza del genere è possibile, e comunque di solito non lo " lega " al filesystem, ma al sistema operativo che lo usa! Non è così! L'implementazione di un nuovo filesystem non nega l'uso di un vecchio Software. Ho appena installato un vecchio software a 16Bit in Win2000Pro sul suo NTFS5. Da sempre quasi tutti i programmi Dos girano allegramente in Fat32, in breve al software non gliene frega niente del supporto e di come è formattato, ma solo che il Sistema Operativo che lo usa sia presente, ed abbia implementato il Filesystem in uso. |
|||||||||||||||||||||||||||||||||||||
|
Filesystem Macintosh (HFS e HFS+) HFS (Hierarchical File System), noto anche come Macintosh Standard Format, è un formato introdotto nel 1985 per sostituire MFS (Macintosh Filing System), un sistema rudimentale per l'accesso ai floppy disk da 400Kb. Il sistema permette di gestire 32.767 files per ogni directory e files fino a due Terabytes. I blocchi di allocazione (clusters) sono di dimensione variabile, stabilita in fase di formattazione, in funzione delle dimensioni della partizione. Dato che HFS usa un indirizzo a 16 bit, come FAT16, si verificano due inconvenienti Il numero massimo di files presenti su una partizione è 65536 Al crescere delle dimensioni della partizione, cresce anche la partizione interna. Le directory permettono di memorizzare nomi di files,
memorizzando le maiuscole e le minuscole (anche se Pippo e pippo sono
considerati lo stesso file). Le directory sono organizzate come un
B*tree, in modo accelerare la ricerca e lo spostamento di un files.
I nomi dei files possono essere lunghi sino a 31 caratteri, e il carattere
per la ricerca del path è il doppio punto ':'.
HFS+
Per ovviare ad alcuni di questi problemi, anche Apple
ha creato una estensione di HFS, detta HFS+, a pratire dal Sistem
8.1. Anche in questo caso, vi sono i problemi di compatibilità
all'indietro in modo analogo a quanto avvenuto con FAT32 - FAT16.
Ora è possibile avere 4 miliardi di files su ogni partizione
e i blocchi di allocazione sono conseguentemente molto più piccoli
(e meno rigidi di FAT 32, anche se la dimensione minima di un disco
è 32MB).
|
|||||||||||||||||||||||||||||||||||||
|
Filesystem Unix (ext2) La maggior parte dei tipi di filesystem UNIX hanno una struttura generale simile ed utilizzano la stessa terminologia, anche se i dettagli esatti cambiano abbastanza. Essi differiscono notevolmente da tutti i filesystem che abbiamo visto sinora. La struttura centrale del filesystem Unix è il blocco, che possiamo equiparare a un cluster in terminologia DOS. Dal punto di vista logico si distinguono in quattro ovvero, blocco dati, superblocco, node e blocco directory. Il blocco di dati è una zona nel disco utilizzata per contenere dati, corrispondente a un multiplo della dimensione del settore fisico del disco stesso. Il contenuto di un file può essere distribuito su più blocchi di dati. Il superblocco contiene tutte le informazioni relative alla struttura generale del filesystem e, tra le altre cose, viene modificato un flag particolare quando il filesystem viene montato. Nel momento in cui viene smontato, l'ultima cosa a essere modificata nel filesystem è il flag di apertura che viene riportato al livello normale. In questo modo, ogni volta che si monta un filesystem Unix è possibile verificare se questo era stato chiuso (smontato) correttamente. Se risulta che l'attività nel filesystem non era stata conclusa correttamente si può temere che i dati siano danneggiati. L'elenco più o meno completo delle informazioni del superblocco sono:
L' inode è una struttura abbastanza complicata sufficiente
a definire le caratteristiche e il contenuto dei file. L'inode contiene
le seguenti informazioni:
La maggior parte delle informazioni sono autoesplicative, ma i puntatori
ai blocchi dati necessitano una ulteriore chiarificazione:
In questo modo, un file di ridotte dimensioni (fino a 48K nel caso di blocchi da 4k) utilizza un solo inode, e permette di allocare a file spazio in modo più efficiente che con un normale sistema ``flat''. Inoltre, risulta essere meno sensibile ai danni e ai virus, dato che i puntatori agli inode sono sparsi in tutto il filesystem e meno sensibile al problema della frammentazione esterna.
Una directory è un file contenente un elenco di nomi
di file abbinati al rispettivo inode.
La struttura della directory risulta quindi in una semplice lista con il puntatore all'inode del file Le voci di una directory contengono ognuna un riferimento a un
inode, ma più voci della stessa directory, o di directory
differenti, possono puntare allo stesso inode. Quando si
cancella un file, si cancella la voce della directory e il numero
di riferimenti contenuti nell'inode viene ridotto. Quando
questo raggiunge lo zero, quel numero di inode torna a essere
disponibile.
In aggiunta a queste, comuni a tutti i filesystem di tipo Unix, il filesystem ext2, il più diffuso negli ambienti Linux, ha alcune caratteristiche ulteriori, che possono essere fissate con il comando chattr. Per ulteriori dettagli, man chattr. Filesystem Unix Al contrario di altri filesystem, Unix prevede un unico albero. Ogni nuovo dispositivo deve essere montato in un qualche punto dell'albero, con il comando mount, ``cancellando'' il punto dell'albero in cui viene montato. Per l'utente, la posizione di un file su questo o quell'altro dispositivo è (quasi) trasparente. I nomi dei files sono di 32 bytes (in tutte le implementazioni) e spesso fino a 255 caratteri (ext2). Vi è differenza tra i caratteri maiuscoli e minuscoli. Lo spazio e i simboli speciali sono ammessi come parte di filesystem ma vivamente sconsigliati. Il carattere per la determinazione del path è la barra '/' (mentre i filesystem DOS e derivati usano la barra retroversa) Filesystem per Linux e Unix I journaled filesystem sono ancora giovani nel mondo Unix, cosa indicata dalla presenza di vari tipi di filesystem. Più precisamente i candidati più rappresentativi sono: ResierFS. Sistema molto rapido, supportato da alcune distribuzioni (SuSE, Mandrake), ma non può convertire partizioni esistenti Ext3. Di recente giunto a una versione definitiva. Supportato da RedHat ed è compatibile all'indietro con ext2. Di più, una partizone ext3 può essere ``vista'' come una partizione ext2. JFS. Proposto da IBM e particolarmente adatto alle soluzioni ``enterprise'', seppure fortemente ottimizzato per la versione Unix di IBM Tra essi, il più maturo è sicuramente ReiserFS. Usa una variante di un algortimo ad albero bilanciato. Le prime indicazioni danno ReiserFS in vantagggio per file molto grandi e molto piccoli.
Beh signori, può essere che l'ultima parte non sia aggiornatissima, oppure contenga delle inesattezze/superficialità, ma chiaramente è in corso di verifica, io a Linux ed il suo filesystem ci sono appena approdato ! Quando e se necessario inserirò i dovuti aggiornamenti.
|
|||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||
|
| Home | Chi sono | Software | Sistemi Operativi | Integrazione | L' Hardware | Prestazioni | Un po' di Storia |