martedì 10 aprile 2012

linux filesystem: rudimenti

In informatica un filesystem è, informalmente, un meccanismo con il quale i file sono immagazzinati e organizzati su un dispositivo di archiviazione, come un hard disk o un cd-rom. Più formalmente, un filesystem è l'insieme dei tipi di dati astratti necessari per la memorizzazione, l'organizzazione gerarchica, la manipolazione, la navigazione, l'accesso, la lettura e la scrittura dei dati.
I filesystem possono essere rappresentati sia testualmente che graficamente tramite browser di file e shell. Nella rappresentazione grafica è generalmente utilizzata la metafora delle cartelle che contengono documenti ed altre cartelle.

A livello astratto il filesystem di un sistema Linux, come ogni Unix, ha una struttura gerarchica: tutti i suoi oggetti (file e directory) sono contenuti all'interno della directory principale (chiamata root), indicata semplicemente con il simbolo "/") e lo stesso carattere / viene usato per separare i nomi delle directory (Ad esempio /usr/bin/ indica la directory bin contenuta nella directory usr contenuta nella root (/).
La root contiene non soltanto tutte le altre directory di una partizione ma tutti i filesystem eventualmente montati sul sistema (partizioni e hard disk diversi, floppy, cdrom, condivisioni di rete ecc.).
Il principio è radicalmente diverso da quello presente nel mondo Windows, dove ogni device o risorsa ha un suo nome o lettera identificativa (A: C: D: ecc) al cui interno si trovano le directory del relativo filesystem.
In diverse distribuzioni Linux, ad esempio, i file contenuti in un floppy disk si trovano in una directory chiamata /mnt/floppy e non in qualcosa chiamato A: come su Windows. Il nome di questa directory, oltretutto, può cambiare ed essere decisa arbitrariamente dall'utente o da chi ha realizzato la distribuzione (ovviamente esistono metodi per sapere in quale directory viene montato qualsiasi dispositivo).

Elenco delle directory principali del filesystem Linux.
/bin
contiene tutti i programmi fondamentali del sistema, utilizzabili sia dall'utente root sia dagli utenti ordinari. Ad esempio, in questa directory si trovano i comandi per copiare e rimuovere file, per spostarsi fra le directory ma anche alcuni applicativi di rete.
/boot
contiene di norma i file essenziali per l'avvio del sistema: solitamente, al suo interno viene conservata anche l'immagine del kernel, necessaria per il boot del sistema.
/cdrom e /floppy
utilizzata per leggere i contenuti dei CD e dei floppy; a differenza di Windows, inserendo un media all'interno del lettore ed entrando nella rispettiva directory, non ne vedremo i contenuti. Questo perché il media deve essere (come si dice in gergo) "montato".
/dev
contiene i file che identificano i device presenti nella nostra macchina, fungendo da tramite fra la macchina ed il device stesso. Ad esempio una partizione di un disco rigido viene rappresentata come device con il file “/dev/hda1” oppure come “/dev/sda1” a seconda della distribuzione.
/etc
è una directory "contenitore", visto che al suo interno trovano spazio i file di configurazione dei programmi installati nel sistema. Per chiarezza, solitamente, ogni programma crea una propria sottodirectory di /etc nella quale inserisce i propri file di configurazione (a meno che il file di configurazione sia solo uno). Per la configurazione del sistema, quindi, /etc è il primo punto di partenza.
/home
contiene i files degli utenti ordinari del sistema. Al suo interno trovano infatti spazio diverse directory, una per ogni utente e con il nome dell'utente stesso (ad esempio, /home/leonardo). Ogni utente, dopo il login, verrà mandato proprio nella sua home directory dove potrà lavorare in libertà, visto che nel resto del sistema difficilmente potrà scrivere file, a meno di darsi i privilegi di root.
/lib
contiene le librerie del sistema quali, ad esempio, libc, pam e le librerie curses. Le altre librerie proprie dei programmi si trovano invece solitamente sotto la directory /usr.
/lost+found
creata in automatico dal sistema quando viene creato un filesystem, contiene i "pezzi" del filesystem dopo operazioni di chiusura non pulite o dopo che alcune parti del disco risaltano danneggiate. Questa directory se il sistema funziona correttamente è sempre vuota!
/proc
è anche definita come un filesystem virtuale: essa infatti è un po' lo specchio del sistema, visto che contiene informazioni prese in real-time dal sistema stesso relativamente agli "eventi in mutamento" (ad esempio, il login o il logout di un utente) o agli eventi statici (come le caratteristiche del processore in uso).
/root
è la directory principale dell'utente principale del sistema, root!
/sbin
contiene invece una serie di eseguibili che di norma possono essere lanciati solamente dall'utente root.
/tmp
directory temporanea. Qui ogni utente può scrivere, ed il suo contenuto sarà cancellato periodicamente o, al più, al riavvio del sistema.
/usr
è una directory con contenuti molto variegati. Contiene ad esempio, documentazioni, eseguibili, librerie e molto altro.
/var
anch'essa contiene parecchie cose: ad esempio, i file di spool (di stampa, delle email ecc), i PID dei processi in esecuzione ecc.

Linux permette di utilizzare quasi tutti i filesystem più diffusi, ma il suo filesystem "storico" è ext2. Dal kernel1 2.4.x è disponibile il supporto per un'evoluzione dell'ext2, l'ext3 che, oltre ad essere convertibile facilmente in ext2, ha il vantaggio di essere un journal filesystem2 (E' una tecnologia utilizzata per preservare l'integrità dei dati da eventuali cadute di tensione derivata dal mondo dei database).
Prima di poter utilizzare un qualsiasi dispositivo con il proprio filesystem (es: CDROM, floppy, tape, condivisione di rete windows, directory nfs, partizione fat32 di un hard disk... ) questo deve essere formattato e montato in una subdirectory della root ( / ). Una volta montato il filesystem risulta accessibile a programmi e utenti in modo trasparente e diventa parte integrante dell'albero delle directory sotto /.Dopo l'uso il filesystem può essere smontato (operazione necessaria per espellere un CDROM o un floppy).
La directory su cui viene montato un filesystem può anche non essere vuota, ma nel momento in cui ci viene montato un filesystem, i dati ivi contenuti non sono più visibili fino a quando non si esegue l'umount.
La gestione di diversi filesystem all'interno dello stesso albero di directory (la root: /) permette l'astrazione dei device hardware da parte del sistema operativo: per i programmi e gli utenti che accedono a determinati file non è importante conoscere o sapere su che tipo di dispositivo risiedono e possono accedere e gestire tutti i file con gli stessi strumenti, a prescindere dall'hardware su cui sono registrati.

Nessun commento:

Posta un commento