[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 37.   Dischi e file system

La gestione dei dischi nei sistemi Unix appare piuttosto laboriosa per chi si avvicina la prima volta alla sua filosofia. La sezione 19.4.3 introduce l'argomento.

I dischetti che si utilizzano in questo esercizio non devono essere protetti contro la scrittura.

37.1   Inizializzazione

L'inizializzazione o formattazione di un disco ha due fasi: la predisposizione delle tracce e dei settori, seguita dalla preparazione di un file system. La prima fase è detta anche inizializzazione a basso livello e normalmente viene eseguita solo sui dischetti.

Prima di procedere occorre ottenere i privilegi dell'utente root.

su[Invio]

Password: ameba[Invio]

Prima di iniziare con l'inizializzazione a basso livello si deve verificare il nome del file di dispositivo utilizzato nel proprio sistema, infatti ci possono essere differenze sotto questo aspetto da un'installazione all'altra. Si presume di potere utilizzare dischetti da 3,5 pollici (9 cm) con un formato di 1 440 Kibyte.

Si procede con l'inizializzazione a basso livello del dischetto su un sistema GNU/Linux, nel quale si utilizza il file di dispositivo /dev/fd0 per questo:

fdformat /dev/fd0[Invio]

Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done

Se non esiste il programma eseguibile fdformat, dovrebbe essere presente al suo posto superformat, che può essere usato nello stesso modo, anche se i messaggi che genera sono differenti.

Se questo è l'esito che si ottiene, il dischetto è stato inizializzato con successo. Prima di procedere oltre è necessario preparare altri due dischetti.

I dischetti inizializzati a basso livello non sono ancora adatti a contenere dati in forma di directory e file. Occorre creare un file system. Il comando seguente riguarda un sistema GNU/Linux:

mkfs.msdos /dev/fd0[Invio]

mkfs.msdos 2.9 (15 May 2003)

In questo modo è stato creato un file system di tipo Dos-FAT nel dischetto inizializzato precedentemente a basso livello. Il messaggio che si ottiene può variare da un'installazione di GNU/Linux a un'altra, ma questo non è molto importante.

Dopo avere sostituito il dischetto si esegue il comando seguente allo scopo di creare un file system Minix.

mkfs.minix /dev/fd0[Invio]

480 inodes
1440 blocks
Firstdatazone=19 (19)
Zonesize=1024
Maxsize=268966912

Dopo avere sostituito il dischetto si esegue il comando seguente allo scopo di creare un file system Ext2. Si osservi che in un dischetto non è possibile creare le estensioni relative al formato Ext3, per mancanza di spazio.

mkfs.ext2 /dev/fd0[Invio]

Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
184 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Per proseguire l'esercizio si devono distinguere i tre dischetti appena preparati, in modo da sapere riconoscere quale utilizza il file system Dos, quale quello Minix e quale quello Ext2.

37.2   Innestare e staccare i dischetti

Nei sistemi Unix e derivati, per poter accedere a un'unità di memorizzazione occorre che il file system di questa sia innestato («montato») in quello globale. Non si può indicare semplicemente una directory o un file di un certo dispositivo. L'innesto è l'operazione con cui si inserisce il file system di un'unità di memorizzazione in corrispondenza di una directory del file system già attivo. La directory che si utilizza generalmente per innestare provvisoriamente le unità esterne è /mnt/ (ma in molti casi si usa una struttura più articolata, discendente dalla directory /mnt/ stessa). Gli esempi di questa sezione si riferiscono a un sistema GNU/Linux.

Si procede inserendo il dischetto inizializzato con il formato Ext2 e innestandolo nella directory /mnt/.

mount -t ext2 /dev/fd0 /mnt[Invio]

Da questo momento, la directory /mnt/ è l'inizio del dischetto.

touch /mnt/super.ultra.mega.macro[Invio]

Con il comando appena visto, si vuole creare un file vuoto con un nome piuttosto lungo. Volendo si possono copiare dei file nel dischetto.

cp /bin/bash /mnt[Invio]

Solitamente, l'invito della shell torna a disposizione prima che le operazioni di scrittura siano state completate, a causa della presenza di una «memoria di transito», o più precisamente di una memoria cache. Anche per questo motivo, il dischetto non può essere estratto semplicemente alla fine delle operazioni che con questo si vogliono svolgere.

Finché il dischetto risulta innestato, si può trattare come parte del file system globale.

ls -l /mnt[Invio]

total 418
-rwxr-xr-x   1 root     root       412516 Dec 28 13:10 bash
drwxr-xr-x   2 root     root        12288 Dec 28 12:37 lost+found
-rw-r--r--   1 root     root            0 Dec 28 13:05 super.ultra.mega.macro

Si può osservare che il dischetto contiene il file creato all'inizio, l'eseguibile bash copiato in precedenza e una directory particolare: lost+found/. Questa viene creata automaticamente assieme al file system Ext2. Generalmente può essere cancellata se la sua presenza infastidisce. In un certo senso, la presenza di questa directory è utile per scorgere l'inizio di un file system innestato in quel punto particolare.

Si procede sostituendo il dischetto con quello contenente un file system Minix. Per fare questo occorre prima staccare il dischetto inserito attualmente e quindi innestare il secondo.

umount /mnt[Invio]

A questo punto, al ritorno dell'invito della shell, si possono sostituire i dischetti.

mount -t minix /dev/fd0 /mnt[Invio]

Per esercizio, si fanno le stesse operazioni di prima.

touch /mnt/super.ultra.mega.macro[Invio]

cp /bin/bash /mnt[Invio]

ls -l /mnt[Invio]

total 404
-rwxr-xr-x   1 root     root       412516 Dec 28 13:31 bash
-rw-r--r--   1 root     root            0 Dec 28 13:31 super.ultra.mega.macro

Come si può osservare, il file system Minix non prevede la presenza della directory lost+found/. Un'altra cosa da notare è che il file con quel nome lungo è stato memorizzato nel modo corretto, ma in ogni caso, in un file system Minix i nomi non possono superare i 30 caratteri.

umount /mnt[Invio]

A questo punto si ripetono le stesse cose con il dischetto Dos-FAT.

mount -t msdos /dev/fd0 /mnt[Invio]

touch /mnt/super.ultra.mega.macro[Invio]

cp /bin/bash /mnt[Invio]

ls -l /mnt[Invio]

total 403
-rwxr-xr-x   1 root     root       412516 Dec 28 14:02 bash
-rwxr-xr-x   1 root     root            0 Dec 28 14:01 super.ult

Trattandosi di un dischetto con un file system Dos-FAT, le cose non sono andate come in precedenza. Prima di tutto, i permessi dei file non corrispondono agli esempi già visti: in pratica, tutti i file hanno gli stessi permessi. L'utente proprietario di tutti i file è root essendo stato lui a innestare il dischetto. I nomi dei file vengono troncati.

Volendo utilizzare un dischetto Dos-FAT per memorizzare nomi lunghi, nello stesso modo in cui fa MS-Windows lo si può innestare facendo riferimento al tipo di file system vfat, mentre l'inizializzazione del dischetto avviene sempre nello stesso modo.

Prima di concludere l'esercizio, si stacca il dischetto.

umount /mnt[Invio]

È il caso di ricordare che non è possibile staccare un disco se prima non è terminata l'attività con questo. Per cui, se la directory corrente è posizionata su una directory appartenente al file system del disco che si vuole staccare, non si riesce a eseguire l'operazione di distacco.

37.3   Conclusione

La gestione delle unità di memorizzazione può sembrare complicata fino a che non se ne comprende la logica. La cosa più importante da capire è che non si può accedere al contenuto di un disco se prima questo non viene innestato, così come non si può estrarre un disco se prima non è stato eseguito il distacco.

A partire dal capitolo 159 vengono trattati questi argomenti.

È il caso di ricordare che l'esercizio è stato svolto operando come utente root, per cui, prima di proseguire, è meglio ritornare allo stato normale.

exit[Invio]

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome dischi_e_file_nbsp_system.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!