Logo Suse Banner Tux


Il file system

Menù di sezione

Installazione

File System

Repository

Root e utenti

XOrg

Proprietà file

Vim editor

Glossario
Visualizza in

Prima di vedere come è strutturato il file system della OpenSuse 10.3 dobbiamo sapere cos'è un file system e qual'è la sua funzione. Esso funge da substrato tra i file e le cartelle memorizzate su un supporto di archiviazione (hard-disk, dc-rom, floppy o una scheda di memoria) ed è responsabile dell'organizzazione dei dati sui suddetti supporti. In pratica è l'insieme dei dati necessari per la memorizzazione, l'organizzazione gerarchica, la navigazione, l'accesso e la lettura dei dati. Esistono diversi file system, ne vedremo alcuni, che agiscono in maniera differente in relazione sistema operativo utilizzato. Senza di questi, non sarebbe possibile accedere ai dati memorizzati sui supporti di archiviazione, quindi sono una parte, fondamentale e insostituibile, che sta a capo di ogni sistema operativo installato nei nostri personal computer. Quando formattiamo un supporto di memorizzazione ad esempio un hard-disk dovremmo indicare quale tipo di file system vogliamo utilizzare, in questo modo avremo la possibilità di memorizzare i dati in modo diverso a seconda del sistema operativo che andremo ad installare e come i dati stessi saranno gestiti.

FILE SYSTEM sui sistemi Microsoft (DOS e Windows)

- FAT

Il nome completo è File Allocation Table. Questo file system è alla base dei sistemi operativi di casa Microsoft utilizzato sin dal 1980 sui sistemi DOS e successivamente su Windows 95, Windows 98 e Windows ME. La FAT mantiene la traccia delle aree del disco disponibili e di quelle già usate dai file e dalle directory. Essendo uno dei primi file system a larga diffusione trova ampia applicazione ai giorni nostri nei supporti di memoria rimuovibili (floppy e memory card) proprio perchè mantiene ancora intatte le compatibilità tra i vari sistemi operativi attualmente in uso. L'inconveniente maggiore di questo file system è la frammentazione. Quando i file vengono eliminati, creati o spostati, le parti che compongono il file si disperdono nell'unità andando ad occupare gli spazi vuoti del disco anche in maniera non contigua, rallentadone progressivamente la lettura e la scrittura. La soluzione a questo inconveniente è la deframmentazione del disco o del supporto di archiviazione, un processo che deve essere eseguito regolarmente al fine di riordinare i file sull'unità. Esistono varie versioni di questo file system, in base quanti a bit sono allocati per numerare i cluster del disco: FAT12, FAT16, FAT32.

- NTFS

Il nome completo è New Technology File System, è un sistema transazionale dotato di una buonissima affidabilità in quanto se un'operazione (lettura, scrittura, spostamento di un file) viene interrotta a metà si perderanno i dati di quella sola operazione preservando di fatto l'integrità del file system stesso. Diversamente dalla FAT a ciascun file o cartella è possibile assegnare dei diritti di accesso sia in scrittura o lettura che in modifica o cancellazione. La dimensione massima di un singolo file è di 16 terabytes, contro i 4 gigabytes di FAT e gli 8 GB di FAT32. La struttura principale di un filesystem NTFS è la Master File Table (MFT), una tabella strutturata in blocchi che contiene gli attributi di tutti i file del volume, inclusi i metadati. Le directory sono memorizzate come file: in ogni file-directory sono presenti degli attributi speciali, ordinamente memorizzati, che si riferiscono ai file contenuti in tale directory. I dati veri e propri dei file sono memorizzati e indicizzati da appositi attributi «data».

FILE SYSTEM sui sistemi Apple

- HFS e HFS+

Il nome completo è Hierarchical File System e ovviamente, come evoluzione del primo, Hierarchical File System Plus introdotto nel 1998. E' un file system sviluppato da Apple per l'utilizzo sui computer Macintosh e anche dal riproduttore di musica digitale iPod. I supporti di archiviazione che utilizzano HFS+ sono divisi in settori che sono solitamente dimensionati a 512 byte. Questi settori sono raggruppati in blocchi di allocazione che possono contenere uno o più settori, il numero di blocchi di allocazione dipende dalla dimensione totale del volume. Le strutture che costituiscono un tipico volume HFS+ sono nove:

  • i Boot Block allocati nei settori 0 e 1 del disco;
  • il Volume Header situato nel settore 2, contiene una vasta quantità di informazioni sul volume stesso, ad esempio la dimensione dei blocchi di allocazione, un sistema di cronologia che indica quando è stato creato e la posizione di altre strutture del disco;
  • l'Allocation File che tiene traccia di quali blocchi di allocazione sono liberi e quali in uso;
  • il Catalog File che contiene i record di tutti i file e direttori memorizzati nel volume;
  • l'Extents Overflow File che registra i blocchi allocati ad ogni estensione di file e i blocchi danneggiati;
  • l'Attributes File che può registrare fino a tre differenti tipi di record, i record Inline Data Attribute, i record Fork Data Attribute ed i record Extension Attribute;
  • lo Startup File progettato per sistemi non Mac OS o che non supportano HFS Plus
  • l'Alternate Volume Header che si trova sempre nel penultimo settore;
  • l'ultima struttura del volume che si trova nell'ultimo settore è riservato da Apple e viene usato durante il processo di manifattura del computer.

FILE SYSTEM sui sistemi GNU/Linux

- ReiserFS

ReiserFS è un file system progettato e implementato da un team di programmatori guidati da Hans Reiser. Esso è correntemente supportato solo da GNU/Linux. Dalla versione 2.4.1 del Kernel Linux è stato il primo journaling file system ad essere incluso nei kernel ufficiali di Linux rilasciati da Linus Torvalds. Il suo più noto vantaggio rispetto al file system per eccellenza sui sitemi GNU/Linux l'ext2, che vedremo fra poco, è l'estensione journaled. Questa caratteristica riduce molto il rischio di corruzione del filesystem, ed elimina la necessità di lunghi controlli, dopo una interruzione non prevista del funzionamento del sistema o uno spegnimento non corretto, dovuto magari a mancanza di corrente o a un crash di sistema. ReiserFS gestisce in maniera molto efficiente directory contenenti grandi quantità di piccoli file. Questo è importante, per esempio, per la gestione di server ove sono archiviati grandissime quantità di piccoli file come gli archivi di Usenet. Dette caratteristiche hanno consentito l'utilizzo di questo file system su molte distribuzioni Linux che lo usano come file system di default.

- EXT2

Il nome completo è Second Extended File System, introdotto nel 1993 quale evoluzione naturale del EXT, è uno dei filesystem più diffusi nei vari sistemi operativi open source, in quanto è stato per lungo tempo quello usato dai sistemi GNU/Linux. Attualmente è supportato da tutti i sistemi operativi open source e esistono programmi per utilizzare i volumi ext2 anche da sistemi proprietari come Microsoft Windows e Mac OS X. Lo spazio disco è suddiviso in blocchi e organizzato in gruppi di blocchi. Ciò serve a ridurre la frammentazione interna e minimizzare i movimenti della testina del disco durante la lettura di molti dati consecutivi. All'interno di ogni gruppo di blocchi ci sono i superblock, group descriptor, block bitmap, inode bitmap, infine seguiti dai blocchi dei dati. Il superblock contiene informazioni importanti per l'avvio del sistema operativo, per cui vengono fatte copie di backup in ogni gruppo dei blocchi. Solo la prima copia viene utilizzata per l'avvio. Il descrittore del gruppo memorizza il valore del block bitmap, inode bitmap e l'inizio della tabella dei inode per ogni gruppo dei blocchi. Ext2 è stato progettato in modo da essere estendibile, infatti se al momento della sua prima scrittura la dimensione massima di un volume era di 2GB, ora file system ext2 permette partizioni grandi 4 terabytes, lunghezza di nomi fino a 255 caratteri e blocchi di dimensioni variabili, mentre la dimensione massima di un singolo file è di 2 terabytes. Ext2 è stato sostituito da una versione più recente chiamata Ext3 che ha introdotto delle importanti caratteristiche mantenendo nel contempo la compatibilità completa con i sistemi basati su Ext2.

- EXT3

Third Extended File System è stato utilizzato dal novembre del 2001 nei sitemi GNU/Linux. Usa le stesse caratteristiche del suo predecessore per la gestione dei file all'interno di un supporto di archiviazione migliorando nel contempo la scrittura su disco rendendo più facile e più veloce la lettura dei vari file memorizzati sul volume, permette partizioni grandi 32 terabytes, lunghezza di nomi fino a 255 caratteri e blocchi di dimensioni variabili, mentre la dimensione massima di un singolo file è di 2 terabytes. EXT3 ha introdotto rispetto a EXT2 il journaling del file system. Il journaling, già presente in ReiserFS e nelle ultime versioni di NTFS è una caratteristica che permette di evitare che errori e malfunzionamenti hardware (o anche semplici spegnimenti del PC senza chiudere il sistema operativo) possano danneggiare i dati scritti sull'unità, creando un «diario» che elenca le modifiche da effettuare sul filesystem.

Fatta questa lunga ma fondamentale premessa, ora andremo a vedere come è strutturato nello specifico un disco formattato con EXT3, il filesystem di default sulla OpenSuse 10.3. A differenza dei sistemi windows, i sistemi basati su GNU/Linux utilizzano una diversa denominazione per classificare gli hard-disk, le loro partizioni e gli altri supporti di memorizzazione quali floppy-disk e memory card. Al posto dei classici A:\, C:\, D:\ ecc..., la classificazione dei volumi di archiviazione potrà, ad esempio, essere la seguente:

  • il disco principale «master» lo troveremo indicato con HDA se collegato alla scheda madre tramite il cavo IDE e SDA se collegato con cavo SATA; le partizioni saranno indicate con un numero dopo la sigla, pertanto la prima partizione diverrà HDA1 o SDA1 la seconda HDA2 o SDA2 e via di questo passo;
  • un eventuale disco secondario «slave» avrà denominazione HDB o SDB se collegati rispettivamente con cavo IDE o cavo SATA; analogamente a quanto descritto per il disco principale le partizioni saranno indicate con HDB1, HDB2 oppure con SDB1, SDB2 ecc...;
  • un lettore cd-rom o un masterizzatore DVD montato come «master» avrà denominazione SR0;
  • un ulteriore lettore DVD montato come «slave« assumerà la denominazione di SR1;
  • il lettore di floppy-disk diverrà FD0
  • una prima pen-drive inserita in una porta usb avrà denominazione SDC1 la successiva SDD1;

* nota: le denominazioni delle periferiche possono cambiare a seconda del hardware presente nel vostro personal computer.

GERARCHIA DI UN FILE SYSTEM

Andremo ora a descrivere la struttura del file system della OpenSuse 10.3, ricordando sin d'ora che secondo la filosofia Unix e quindi in ogni sistema operativo basato su GNU/Linux tutto è un file, cioè puo essere aperto, chiuso, letto e scritto.

schema file system

Come potete vedere nell'immagine sopra il file system viene rappresentato con la classica struttura ad albero. La directory radice indicata con il simbolo / è quella che contiene tutte le altre:

/bin
La directory /bin contiene gli eseguibili di uso comune più importanti. I file al suo interno sono generalmente accessibili in esecuzione a tutti gli utenti. Se ad esempio dovete creare un collegamento sul desktop per un'applicazione di vostro particolare interesse è in questa directory che dovrete cercarla;

/boot
La directory /boot contiene i file utilizzati dal meccanismo di caricamento del sistema operativo. In particolare contiene il kernel necessario all'avvio del sistema;

/dati
nel caso specifico della mia configurazione questa directory indica il secondo hard-disk montato sulla macchina dove sono archiviati appunto i file di uso comune per tutti gli utenti. Per chi avesse un personal computer con installato un sistema GNU/Linux e un altro sistema operativo ad esempio Microsoft Windows visualizzerà la partizione che contiene quest'ultimo S.O. come una directory denominata /windows;

/dev
La directory /dev contiene una lunga serie di file che puntano ai dispositivi installati o che potrebbero essere installati nella macchina. Perché i vari componenti fisici dell'elaboratore possano funzionare, occorre che, per ognuno di essi, sia stato previsto il file di dispositivo relativo in questa directory. Senza di questi tutti i componenti che vengono aggiunti (es. pen-drive, fotocamere digitali, chiavetta bluetooth, ulteriori lettori dvd) non sarebbero riconosciuti. In pratica è come se si trattasse dell'insieme dei driver di dispositivo;

/etc
La directory /etc contiene una lunga serie di file di configurazione, raccolti principalmente in sottodirectory, che riguardano il funzionamento dell'intero sistema. Di seguito riporto le sottodirectory più importanti:
/etc/X11/ contiene la configurazione per il sistema grafico X, assieme a quella dei gestori di finestre;
/etc/opt/applicativo/ contiene la configurazione specifica di programmi inseriti all'interno della gerarchia /opt/;
/etc/sgml/ contiene la configurazione di SGML;
/etc/xml/ contiene la configurazione di XML;

/home
La directory /home è normalmente il punto di partenza per tutte le directory personali degli utenti. E' buona norma all'atto dell'installazione utilizzare una partizione del disco dedicata a questa directory in modo da tenere fisicamente separati i dati degli utenti dai file di sistema. Se vogliamo fare una analogia con windows nella directory /home sono contenuti gli stessi dati che vengono memorizzati nella cartella Document and Setting;

/lib
La directory /lib è il contenitore dei file di libreria necessari per i programmi di uso generale. Devono trovarsi qui le librerie necessarie agli eseguibili che sono archiviati nelle directory /bin e /sbin. Assieme ai file di libreria, si trova anche la sottodirectory /modules che contiene i moduli del kernel;

/media
La directory media generalmente è vuota se pero' collegate al sistema una periferica rimuovibile come un hard-disk esterno oppure un masterizzatore esterno, in questa directory trovere il suo collegamento;

/mnt
Questa directory ha la stessa funzione della directory media, è stata mantenuta per la compatibilità con i sistemi Unix più datati;

/opt
La directory /opt è il punto di partenza per l'installazione di programmi addizionali capaci di funzionare autonomamente senza l'utilizzo ad esempio delle librerie di sistema perchè già inserite nel pacchetto dei file che compongono l'applicativo. A titolo esemplificativo in questa directory ho inserito i programmi che funzionano in modalità standalone, ossia software che non necessitano della tradizionale installazione per essere avviati. E' una buona regola collocare questi applicativi ognuno nella propria sottodirectory, nella forma /opt/applicativo/, unitamente agli eseguibili, alle librerie necessarie al programma e ai manuali di funzionamento;

/proc
La directory /proc contiene informazioni vitali prodotte dal kernel e viene creata ad ogni avvio del sistema operativo;

/root
La directory /root è la directory personale dell'utente root ossia dell'amministratore del sistema. E' fondamentale che questa directory sia collocata nel file system principale, nei casi di emergenza e quando non sia possibile utilizzare altri sistemi per accedere alla macchina (es. un live cd autoavviante) l'amministratore sarà in grado di accedere al sistema;

/sbin
La directory /sbin contiene eseguibili allo stesso livello di importanza di /bin, ma il cui utilizzo è generalmente di competenza dall'utente root;

/srv
La directory /srv contiene i dati per i servizi (HTTP, FTP, etc.) offerti dal sistema;

/sys
Anche questa directory contiene informazioni vitali prodotte dal kernel e viene creata ad ogni avvio del sistema operativo;

/tmp
La directory /tmp è destinata a contenere file provvisori. Non sempre i programmi che creano dei file provvisori in questa directory, provvedono poi anche alla loro eliminazione, percui di tanto in tanto conviene darci un'occhiata e poi procedere a eliminare tutto quello che non serve;

/usr

La directory /usr è molto importante e si compone in una struttura a sottodirectory molto articolata:
La directory /usr/bin contiene gli eseguibili di uso comune meno importanti;
La directory /usr/sbin contiene eseguibili non indispensabili, il cui utilizzo dovrebbe essere di competenza dell'utente root;
La directory /usr/games serve per contenere programmi meno importanti destinati al passatempo o alla didattica;
La directory /usr/lib contiene i file di libreria necessari per i programmi installati a partire da /usr;
La directory /usr/local è il punto di inizio per l'installazione locale di programmi, senza che questi siano interessati dalle procedure di aggiornamento del software installato nel modo normale;
La directory /usr/share serve a contenere file di dati di configurazione non dipendenti dall'architettura utilizzata. Ciò rende questa directory condivisibile tra più sistemi operativi, dello stesso tipo e versione, installati anche su piattaforme differenti;
La directory /usr/src serve a contenere i file sorgente dei programmi che si vogliono tenere a disposizione;

/var
La directory /var contiene altre directory e file dall'uso più disparato. In questa cartella c'è un po' di tutto, ma si tratta di tutto quello che non può essere contenuto in /usr in quanto tale directory deve poter essere accessibile in sola lettura. Di seguito vengono elencate alcune delle directory che si diramano da /var:
La directory /var/cache per la memorizzazione transitoria;
La directory /var/log contiene i file delle registrazioni, sia quelli utilizzati dal registro del sistema, sia quelli di altri programmi;
La directory /var/mail viene usata per contenere i file delle caselle postali degli utenti, quando queste non sono distribuite nelle rispettive directory personali;
La directory /var/run/ contiene informazioni che riguardano l'esecuzione dei processi;
La directory /var/spool/ è molto importante per tutti i programmi che hanno la necessità di gestire code di elaborazioni. Per esempio, sono collocate sotto questa directory le code di stampa, dei messaggi di posta elettronica inviati e di altri gestori di servizi;
La directory /var/tmp/ è destinata a contenere file temporanei che devono rimanere a disposizione più a lungo rispetto a quanto si fa con /tmp. Il suo contenuto non dovrebbe essere cancellato al riavvio del sistema.

Home Desktop Multimedia Internet Applicazioni Recovery Contatti

Ideato da Urelli Giovanni - 2008 - Le pagine di questo sito web sono liberamente scaricabili