|
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.
File e directory sono riferiti attraverso il nome del file o della directory, seguito da uno slash in avanti, /, a sua volta seguito da altri nomi di directory che sono 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 path del file è foo/bar/readme.txt.
Le directory e i file sono memorizzati in un filesystem. Ogni filesystem contiene esattamente una directory al livello più alto, chiamata la directory root di quel filesystem. 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, il 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 filesystem è designato come il filesystem root. La directory root del filesystem root è riferita con /. Ogni altro filesystem è montato sotto il filesystem root. Non importa quanti dischi hai sul tuo sistema FreeBSD, ogni directory è come se fosse parte dello stesso disco.
Supponiamo che tu abbia tre filesystem, chiamati A, B, e C. Ogni filesystem 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 filesystem 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 filesystem deve essere montato su una directory di un altro filesystem. Supponiamo ora che tu monti il filesystem 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 path saranno rispettivamente /A2/B1 e /A2/B2.
I filesystem possono essere montati in cima ad altri filesystem. Continuando con l'ultimo esempio, il filesystem C può essere montato in cima alla directory B1 nel filesystem B, arrivando a questa sistemazione:
Oppure C potrebbe essere montato direttamente sul filesystem A, sotto la directory A1:
Se hai familiarità con MS-DOS, questo è simile, man non identico, al comando join.
Di solito non ti devi occupare direttamente di questi aspetti. Tipicamente quando installi FreeBSD crei i filesystem 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 filesystem root, senza avere la necessità di crearne altri. Esistono alcuni svantaggi utilizzando questo approccio, e un solo vantaggio.
Benefici con Filesystem Multipli
Filesystem diversi possono avere opzioni di mount diverse. Per esempio, in una attenta progettazione, il filesystem root potrebbe essere montato in modalità di sola lettura, rendendo impossibile la cancellazione accidentale o la modifica di un file critico. Inoltre, separando i filesystem scrivibili dall'utente, come /home, da altri filesystem permette di montare i primi con l'opzione nosuid; questa opzione non permette il settaggio dei bit suid/guid sui file eseguibili memorizzati sul filesystem che ha tale opzione di mount attivata, migliorando l'aspetto sicurezza.
FreeBSD ottimizza in modo automatico la disposizione dei file sul filesystem, a seconda di come è usato il filesystem. Quindi un filesystem che contiene molti file piccoli che sono scritti di frequente avrà un'ottimizzazione diversa rispetto ad un altro filesystem che contiene pochi file di grandi dimensioni. Utilizzando un solo grande filesystem questa ottimizzazione viene a mancare.
I filesystem 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 filesystem. Splittando i tuoi dati su filesystem multipli sarà più probabile che il sistema riparta, dandoti la possibilità di ripristinare un precedente backup se necessario.
Benefici di un Filesystem Singolo
I filesystem sono a dimensione fissa. Se crei un solo filesystem 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 filesystem con la nuova dimensione, e quindi ripristinando il backup di dati.
Importante: FreeBSD 4.4 e successivi hanno il comando growfs(8), con il quale è possibile incrementare la dimensione del filesystem al volo, rimuovendo questa limitazione.
I filesystem 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 filesystem, il che significa che i filesystem sono spesso identificati sia dal loro punto di mount nella gerarchia del filesystem, 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 filesystem 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 filesystem su questa partizione. |
d | La partizione d era utilizzata in passato con un significato speciale, sebbene ora non sia più utilizzata. Ai giorni d'oggi, alcuni strumenti operano in modo starno se gli si dice di lavorare sulla partizione d, e per questo motivo sysinstall di norma non la crea. |
Ogni partizione-che-contiene-un-filesystem è 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 slices 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 filesystem 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.
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. 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.
L'Esempio 3-2 mostra un modello concettuale di struttura di un disco che dovrebbe aiutare a chiare 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 filesystem (o spazio di swap) in ogni partizione, e decidere dove il filesystem 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-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 standard più una di swap.
Le tre partizioni conterranno ognuna un filesystem. La partizione a sarà usata per il filesystem root, la e per la gerarchia di directory /var, e la partizione f per la gerarchia di directory /usr.
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>.