3.5. Organizzazione del Disco
Indietro | Capitolo 3. Basi di Unix | Avanti

## 3.5. Organizzazione del Disco

La più piccola unità di organizzazione che FreeBSD usa per ricercare file è il nome del file. I nomi dei file sono case-sensitive, ciò significa che `readme.txt` e `README.TXT` sono due file distinti. FreeBSD non usa l'estensione (es. `.txt`) di un file per determinare se il file è un programma, un documento, o qualche altra forma di dati.

I file sono memorizzati in directory. Una directory può contenere centinaia di file o non contenerne affatto. Inoltre una directory può contenere altre directory, consentendo di costruire una gerarchia di directory all'interno di un'altra. Tutto questo rende più facile l'organizzazione dei tuoi dati.

Ci si riferisce a file e directory attraverso il nome del file o della directory, seguito da uno slash in avanti, `/`, a sua volta seguito da altri nomi di directory necessari. Se hai una directory di nome `foo`, la quale contiene la directory `bar`, che a sua volta contiene il file `readme.txt`, allora il nome completo, chiamato anche il percorso del file è `foo/bar/readme.txt`.

Le directory e i file sono memorizzati in un file system. Ogni file system contiene esattamente una directory al livello più alto, chiamata la directory root di quel file system. Questa directory root può contenere altre directory.

Fin qui è probabilmente tutto simile ad altri sistemi operativi che hai usato. Tuttavia ci sono alcune differenze; per esempio, MS-DOS® usa il carattere `\` per separare i nomi di file e directory, mentre Mac OS® usa `:`.

FreeBSD non usa lettere di dispositivi, o altri nomi di dispositivi nel path. In FreeBSD non dovrai mai scrivere `c:/foo/bar/readme.txt`.

Piuttosto, un file system è designato come il file system root. La directory root del file system root è riferita con `/`. Ogni altro file system è montato sotto il file system root. Non importa quanti dischi hai sul tuo sistema FreeBSD, ogni directory è come se fosse parte dello stesso disco.

Supponiamo che tu abbia tre file system, chiamati `A`, `B`, e `C`. Ogni file system ha una directory root, la quale contiene altre due directory, chiamate `A1`, `A2` (e nello stesso modo `B1`, `B2` e `C1`, `C2`).

Sia `A` il file system root. Se usi il comando `ls` per visualizzare il contenuto di questa directory dovresti vedere due sottodirectory, `A1` e `A2`. L'albero delle directory assomiglia a questo:

Un file system deve essere montato su una directory di un altro file system. Supponiamo ora che tu monti il file system `B` sulla directory `A1`. La directory root di `B` rimpiazza `A1`, e di conseguenza appariranno le directory di `B`:

I file contenuti nelle directory `B1` o `B2` possono essere raggiunti con il path `/A1/B1` o `/A1/B2`. I file che erano in `/A1` sono stati temporaneamente nascosti. Questi riappariranno quando `B` sarà smontato da A.

Se `B` è stato montato su `A2` allora il diagramma assomiglierà a questo:

e i percorsi saranno rispettivamente `/A2/B1` e `/A2/B2`.

I file system possono essere montati in cima ad altri file system. Continuando con l'ultimo esempio, il file system `C` può essere montato in cima alla directory `B1` nel file system `B`, arrivando a questa sistemazione:

Oppure `C` potrebbe essere montato direttamente sul file system `A`, sotto la directory `A1`:

Se hai familiarità con MS-DOS®, questo è simile, ma non identico, al comando `join`.

Di solito non ti devi occupare direttamente di questi aspetti. Tipicamente quando installi FreeBSD crei i file system e decidi dove montarli, e da quel momento non avrai più la necessità di modificarli a meno che installi un nuovo disco.

È possibile avere un unico file system root, senza avere la necessità di crearne altri. Esistono alcuni svantaggi utilizzando questo approccio, e un solo vantaggio.

Benefici con File system Multipli

- Filesystem diversi possono avere opzioni di mount diverse. Per esempio, in un'attenta progettazione, il file system root potrebbe essere montato in modalità di sola lettura, rendendo impossibile la cancellazione accidentale o la modifica di un file critico. Inoltre, separando i file system scrivibili dall'utente, come `/home`, da altri file system permette di montare i primi con l'opzione nosuid; questa opzione non permette il settaggio dei bit suid/guid sui file eseguibili memorizzati sul file system che ha tale opzione di mount attivata, migliorando l'aspetto sicurezza.

- FreeBSD ottimizza in modo automatico la disposizione dei file sul file system, a seconda di come è usato il file system. Quindi un file system che contiene molti file piccoli che sono scritti di frequente avrà un'ottimizzazione diversa rispetto ad un altro file system che contiene pochi file di grandi dimensioni. Utilizzando un solo grande file system questa ottimizzazione viene a mancare.

- I file system di FreeBSD reagiscono bene ad una violenta perdita di energia elettrica. Tuttavia, una perdita di energia in un punto critico potrebbe sempre danneggiare la struttura del file system. Splittando i tuoi dati su file system multipli sarà più probabile che il sistema riparta, dandoti la possibilità di ripristinare un precedente backup se necessario.

Benefici di un File system Singolo

- I file system sono a dimensione fissa. Se crei un solo file system quando installi FreeBSD e gli assegni una data dimensione, in futuro potresti scoprire che necessiti di creare una partizione più grande. Questo non è facilmente realizzabile se non effettuando un backup dei dati, ricreando il file system con la nuova dimensione, e quindi ripristinando il backup di dati.

  ### Importante:

  FreeBSD ha il comando growfs(8), con il quale è possibile incrementare la dimensione del file system al volo, rimuovendo questa limitazione.

I file system sono contenuti all'interno di partizioni. Qui il significato del termine partizione si discosta dall'uso comune di questo termine (partizioni MS-DOS®, per esempio), a causa dell'eredità UNIX® di FreeBSD. Ogni partizione è identificata da una lettera partendo dalla `a` fino alla `h`. Ogni partizione può contenere solo un file system, il che significa che i file system sono spesso identificati sia dal loro punto di mount nella gerarchia del file system, sia dalla lettera della partizione nella quale sono contenuti.

Inoltre FreeBSD usa parte del disco per lo spazio di swap. Lo spazio di swap fornisce a FreeBSD la funzionalità di memoria virtuale. Questo permette al tuo computer di comportarsi come se avesse più memoria di quella che ha realmente. Quando FreeBSD esaurisce la memoria muove alcuni dati presenti in memoria che non sono utilizzati in quel momento nello spazio di swap, e li riporta in memoria (spostando nello spazio di swap qualche altro dato) non appena necessari.

Alcune partizioni hanno certe convenzioni a loro associate.

Partizione | Convenzione
--- | ---
`a` | In genere contiene il file system root
`b` | In genere contiene lo spazio di swap
`c` | Di solito rappresenta l'intera dimensione della slice. Questo permette a utility che necessitano di lavorare sull'intera slice (per esempio, uno scanner di blocchi difettosi) di lavorare sulla partizione `c`. Di norma non dovresti creare un file system su questa partizione.
`d` | La partizione `d` era utilizzata in passato con un significato speciale, caduto ormai in disuso e ora può essere utilizzata come una partizione normale.

Ogni partizione contenente un file system è memorizzata in ciò che FreeBSD chiama slice. Slice è un termine di FreeBSD per identificare ciò che comunemente viene chiamato partizione, e di nuovo, questo è dovuto dal background UNIX® di FreeBSD. Le slice sono numerate, partendo da 1 e arrivando fino a 4.

I numeri di slice seguono il nome del dispositivo, preceduti da una `s`, e partendo da 1. Quindi «da0s1» è la prima slice sul primo disco SCSI. Ci possono essere solo quattro slice fisiche su un disco, ma puoi avere slice logiche all'interno di slice fisiche di un appropriato tipo. Queste slice estese sono numerate a partire da 5, quindi «ad0s5» è la prima slice estesa sul primo disco IDE. Questi stratagemmi sono usati per i file system che si aspettano di occupare una slice.

Le slice, i dispositivi fisici «pericolosamente dedicati», e altri dispositivi contengono partizioni, le quali sono rappresentate tramite lettere dalla `a` fino alla `h`. Queste lettere seguono il nome del dispositivo, quindi «da0a» è la partizione a sul primo dispositivo da, il quale è «pericolosamente dedicato». «ad1s3e» è la quinta partizione nel terza slice del secondo disco IDE.

In fine, ogni disco sul sistema è identificato. Un nome di un disco incomincia con un codice che indica il tipo di disco, seguito da un numero, che indica quale disco esso sia. A differenza delle slice, i numeri riferiti al disco incominciano da 0. Puoi vedere dei codici generici in Tabella 3.1, «Codici dei Dispositivi Disco».

Quando fai riferimento a una partizione di FreeBSD devi specificare anche il nome della slice e del disco che contengono la partizione, e quando fai riferimento a una slice dovresti specificare anche il nome del disco. Per riferirti ad una partizione specifica quindi il nome del disco, il carattere `s`, il numero di slice, e infine la lettera della partizione. Alcuni esempi sono mostrati nell'Esempio 3.1, «Esempi di Nomi di Dischi, di Slice, e di Partizioni».

L'Esempio 3.2, «Modello Concettuale di un Disco» mostra un modello concettuale di struttura di un disco che dovrebbe aiutare a chiarire le cose.

Per installare FreeBSD devi prima configurare le slice del disco, creare le partizioni all'interno della slice che vuoi usare per FreeBSD, e quindi creare un file system (o spazio di swap) in ogni partizione, e decidere dove il file system deve essere montato.

Tabella 3.1. Codici dei Dispositivi Disco

Codice | Significato
--- | ---
`ad` | disco ATAPI (IDE)
`da` | disco ad accesso diretto SCSI
`acd` | CDROM ATAPI (IDE)
`cd` | CDROM SCSI
`fd` | Disco floppy

Esempio 3.1. Esempi di Nomi di Dischi, di Slice, e di Partizioni

Nome | Significato
--- | ---
`ad0s1a` | La prima partizione (`a`) sulla prima slice (`s1`) sul primo disco IDE (`ad0`).
`da1s2e` | La quinta partizione (`e`) sulla seconda slice (`s2`) sul secondo disco SCSI (`da1`).

Esempio 3.2. Modello Concettuale di un Disco

Questo diagramma mostra come FreeBSD vede il primo disco IDE attaccato al sistema. Si assuma che il disco sia di 4 GB, e che contenga due slice da 2 GB (equivalenti come significato a due partizioni MS-DOS®). La prima slice contiene un disco MS-DOS®, `C:`, e la seconda slice contiene un'installazione di FreeBSD. In questo esempio l'installazione di FreeBSD ha tre partizioni dati più una di swap.

Le tre partizioni conterranno ognuna un file system. La partizione `a` sarà usata per il file system root, la `e` per la gerarchia di directory `/var`, e la partizione `f` per la gerarchia di directory `/usr`.

Indietro | Risali | Avanti
3.4. Struttura delle Directory | Partenza | 3.6. Montaggio e Smontaggio dei File system

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.