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


Capitolo 162.   Memoria di massa: attivazione e utilizzo

Per poter accedere a un file system di un sistema Unix, occorre dare dei comandi precisi e generalmente conviene intervenire nella configurazione.

Tabella 162.1. Riepilogo dei programmi e dei file per attivare e utilizzare i file system.

Nome Descrizione
mount Innesto di un file system in quello globale.
umount Distacco di un file system da quello globale.
/etc/fstab Elenco di file system e punti di innesto predefiniti.
/etc/mtab Elenco degli innesti attivi.
df Utilizzo del disco.
di Utilizzo del disco.
stat Situazione di un file o di un file system.
update
(bdflush)
Programma demone per lo scarico periodico della memoria cache dei dischi.
sync Scarico manuale della memoria cache dei dischi.

162.1   Attivazione dei file system

Per poter accedere ai dati di un'unità di memorizzazione organizzata con un file system, è necessario prima innestare o inserire (mount), il suo file system in quello globale.

Prima di estrarre una di queste unità, o comunque, prima di poter spegnere un elaboratore, occorre eseguire l'operazione opposta di distacco (unmount).

In un sistema GNU/Linux devono essere necessariamente innestati il file system principale (root) e il file system virtuale /proc/, che però non fa capo ad alcuna unità fisica.

Se si utilizzano partizioni di scambio per la gestione della memoria virtuale, queste devono essere attivate con un'operazione concettualmente simile a quella dell'innesto di un file system, anche se poi non appaiono nella struttura generale del file system globale.

162.1.1   Tipi di file system

Quando si innesta un file system è necessario che il modo con cui questo è organizzato (cioè il tipo) sia riconoscibile e gestito dal kernel. Nella tabella 162.2, sono elencati i nomi che identificano i tipi di file system riconoscibili da un kernel Linux.

Tabella 162.2. Elenco dei nomi di file system utilizzabili.

Tipo di file system Descrizione
minix
Minix
ext2
Ext2
ext3
Ext3
hpfs
umsdos
GNU/Linux su Dos-FAT
msdos
Dos-FAT (nomi 8.3)
vfat
Dos-VFAT (nomi lunghi)
nfs
NFS o file system di rete
coda
iso9660
CD-ROM
smbfs
SMB (rete NetBIOS-TCP/IP)
ncpfs
affs
adfs
sysv
cramfs
file system compresso, accessibile in sola lettura
devpts
efs
hfs
hpfs
jfs
ntfs
qnx4
ramfs
reiserfs
romfs
tempfs
file system in un disco RAM, che si estende e si contrae automaticamente.
xfs
udf
ufs
proc
file system virtuale /proc
swap
partizione di scambio

162.1.2   Implicazioni legate all'innesto di un file system

L'innesto di un file system implica l'acquisizione di un file system estraneo in quello generale. Questo fatto può far sorgere problemi di sicurezza e di compatibilità con il sistema. L'elenco seguente dovrebbe dare l'idea di alcuni dei problemi connessi.

Un'altra cosa da considerare sono i permessi della directory radice del disco che si va a innestare. Di per sé non c'è nulla di strano, se il file system che si innesta è in grado di gestire tali informazioni, basta usare i comandi normali, come chmod e chown per cambiarli, ma questo può confondere il principiante. In breve: quando si cambia la proprietà e i permessi di una directory sulla quale è stato innestato un altro file system, questi cambiamenti hanno effetto in quel file system innestato.

162.1.3   Opzioni

In occasione dell'innesto di un file system si possono definire alcune opzioni allo scopo di modificarne il comportamento predefinito. Quello che segue è un elenco parziale delle opzioni disponibili. Inizialmente vengono mostrate le opzioni che riguardano generalmente i file system compatibili con i sistemi operativi Unix e possono essere utilizzate anche in presenza di file system differenti quando ciò può avere significato.

Vedere mount(8) e nfs(5).

Tabella 162.3. Opzioni valide per i file system Unix.

Opzione Descrizione
remount
Si tratta di un'opzione speciale che può essere usata solo quando il file system in questione è già innestato, allo scopo di reinnestarlo con delle opzioni differenti (quelle che vengono definite assieme a remount).
default
Utilizza le impostazioni predefinite: rw, suid, dev, exec, auto, atime, nouser, async.
sync
async
Esegue gli I/O sui file system in modo sincrono o asincrono. La modalità sincrona è più sicura, ma il suo utilizzo rallenta e appesantisce l'attività del disco.
atime
noatime
Aggiorna o meno la data di accesso ai file. Può essere utile eliminare questo tipo di aggiornamento per ridurre l'attività del disco.
auto
noauto
Permette o impedisce l'innesto automatico quando si utilizza il file /etc/fstab.
dev
nodev
Considera validi, o esclude la validità dei file di dispositivo che dovessero essere contenuti nel file system.
exec
noexec
Permette o impedisce l'esecuzione di file binari.
suid
nosuid
Consente o impedisce che i bit SUID (Set user ID) e SGID (Set group ID) abbiano effetto. Disattivando questa possibilità (cioè utilizzando l'opzione nosuid), si vuole evitare che gli eseguibili contenuti nel file system che si intende innestare, possano ottenere privilegi particolari.
user
nouser
Permette o impedisce all'utente comune di innestare e staccare il file system. L'opzione user implica l'attivazione automatica di noexec, nosuid e nodev, a meno che queste siano annullate da successive indicazioni contrarie come nella lista seguente: user,exec,suid,dev.
ro
Richiede un accesso in sola lettura.
rw
Richiede un accesso in lettura e scrittura.

La tabella successiva riguarda i file system FAT, ovvero ciò che è alla base dei file system umsdos, msdos e vfat. Tuttavia, occorre ricordare che un file system UMSDOS emula un file system Unix, quindi non sono valide le opzioni seguenti nel caso specifico di questo tipo di file system.

Tabella 162.4. Opzioni valide per i file system FAT.

Opzione Descrizione
uid=identificativo_utente
Permette di stabilire il proprietario dei file e delle directory contenute nel file system. Se non viene specificato, si intende appartengano all'utente che esegue l'innesto.
gid=identificativo_gruppo
Permette di stabilire il gruppo proprietario dei file e delle directory contenute nel file system. Se non viene specificato, si intende appartengano al gruppo dell'utente che esegue l'innesto.
umask=maschera
Permette di stabilire quali permessi inibire nel file system. Si tratta del solito numero ottale, composto da tre cifre numeriche, dove la prima cifra rappresenta i permessi per il proprietario, la seconda per il gruppo, la terza per il resto degli utenti.
Se non viene specificato si utilizza il valore predefinito per la creazione dei file nei file system normali: umask appunto.
quiet
I file system FAT non sono in grado di memorizzare informazioni sulle proprietà e i permessi dei file. Di conseguenza, i programmi che tentano di modificare i valori predefiniti, ottengono una segnalazione di errore dalle funzioni di sistema. L'opzione quiet inibisce queste segnalazioni di errore.

Per quanto riguarda l'opzione umask dei file system FAT, si ricorda il significato dei valori che possono essere attribuiti:

Di conseguenza:

Bisogna fare attenzione però che il valore che si inserisce rappresenta un impedimento all'uso di quel permesso, di conseguenza, la maschera 0228 indica che è consentito al proprietario qualunque tipo di accesso (lettura, scrittura ed esecuzione), mentre agli altri utenti non è consentito l'accesso in scrittura.

Un caso particolare di opzione è loop che consente di accedere a file-immagine di dischi o partizioni. Questa particolarità viene descritta in un altro capitolo.

162.1.4   Utilizzo di «mount»

Il programma mount (1) permettere di innestare, un file system all'interno del sistema. Il programma opposto è umount e serve per staccare, un file system innestato precedentemente.

mount [opzioni] [dispositivo] [directory]

La forma normale e più semplice di utilizzo di mount è la seguente:

mount -t tipo_di_file_system dispositivo punto_di_innesto

In questo modo si richiede al kernel di innestare il file system del dispositivo specificato nella directory indicata (il punto di innesto).

Per conoscere la situazione dei dispositivi collegati attraverso questo sistema, si può usare la sintassi seguente:

mount [ -t tipo_di_file_system]

Se viene specificato il tipo di file system, si ottiene un elenco limitato a quei dispositivi.

Il file system /proc/ non è associato ad alcun dispositivo speciale; pertanto, quando se ne vuole eseguire l'innesto, si può utilizzare un nome di dispositivo arbitrario, per esempio proc.

La maggior parte delle unità di memorizzazione sono indicate nel modo consueto utilizzando nomi di file di dispositivo (/dev/...), ma ci possono essere altre possibilità, come quando si vuole innestare un file system di rete o NFS, dove si usa la forma nodo:/directory.

Il file /etc/fstab viene utilizzato per automatizzare l'innesto dei file system più importanti al momento dell'avvio del sistema. Questo viene letto utilizzando la forma seguente:

mount -a [ -t tipo_di_file_system]

Di solito si trova una chiamata di questo tipo all'interno di uno degli script che compongono la procedura di inizializzazione del sistema (/etc/init.d/* oppure /etc/rc.d/rc*). La presenza del file di configurazione /etc/fstab è utile anche per semplificare l'innesto (e così l'operazione inversa) di un file system che sia stato previsto al suo interno. Diventa sufficiente una delle due forme seguenti:

mount dispositivo
mount punto_di_innesto

In linea di principio, solo l'utente root può innestare un file system. Per permettere agli utenti comuni di innestare e staccare un'unità di memorizzazione (come nel caso di un CD-ROM o di un dischetto), la si può indicare nel file /etc/fstab con l'opzione user. Nell'esempio seguente, si vede un record di /etc/fstab attraverso il quale si definisce l'innesto facoltativo di un CD-ROM in sola lettura con la possibilità anche per gli utenti comuni di eseguire l'operazione:

/dev/cdrom  /cdrom  iso9660  ro,user,noauto,unhide

In tal modo, qualunque utente ha la possibilità di eseguire uno dei due possibili comandi seguenti:

mount /dev/cdrom[Invio]

mount /cdrom[Invio]

La coppia di programmi mount e umount mantiene una lista dei file system innestati correntemente. Quando mount viene avviato senza argomenti si ottiene l'emissione del contenuto di questa lista.

Per approfondire l'utilizzo di mount, si veda anche la pagina di manuale mount(8).

Tabella 162.6. Alcune opzioni.

Opzione Descrizione
-a
Utilizza /etc/fstab per eseguire automaticamente l'operazione: vengono innestati tutti i file system a esclusione di quelli segnati come noauto.
-t [no]tipo_di_file_system[,...]
Specifica il tipo di file system. Sono riconosciuti i nomi indicati nella tabella 162.2. Se il nome del tipo di file system viene preceduto dalla sigla no, si intende che quel tipo deve essere escluso. Se si vogliono indicare più tipi di file system questi vengono separati da virgole.
Quando si usa questa opzione con l'indicazione di più tipi, o con il prefisso no, lo si fa quasi sempre con l'uso dell'opzione -a, come nell'esempio seguente:
mount -a -t nomsdos,nonfs
In questo caso si intende eseguire l'innesto di tutti i file system indicati all'interno di /etc/fstab, a esclusione dei tipi msdos e nfs.
-o opzione_di_file_system[,...]
Questa opzione permette di specificare uno o più nomi di opzioni, separati da virgole, legati alla gestione del file system. L'elenco di questi nomi si trova nella sezione 162.1.3.

Segue la descrizione di alcuni esempi.

162.1.5   Utilizzo di «umount»

Il programma umount (2) esegue l'operazione inversa di mount: stacca i file system. L'operazione può avvenire solo quando non ci sono più attività in corso su quei file system, altrimenti l'operazione fallisce.

umount [opzioni] [dispositivo] [directory]

L'opzione -a ha un significato simile a quella di mount, ma serve a eseguire il distacco di tutti i file system che in un certo momento risultano innestati. Per sapere quali sono gli innesti in corso, si avvale del contenuto del file /etc/mtab, che dovrebbe risultare aggiornato in tal senso.

Tabella 162.7. Alcune opzioni.

Opzione Descrizione
-a
Vengono separati tutti i file system indicati in /etc/mtab.
-t [no]tipo_di_file_system[,...]
Indica che l'azione deve essere eseguita solo sui file system specificati. Se si usa il prefisso no, l'azione si deve compiere su tutti i file system a esclusione di quelli indicati.

Segue la descrizione di alcuni esempi.

162.1.6   File «/etc/fstab»

Il file /etc/fstab viene utilizzato per definire le caratteristiche e le directory di inserimento (punti di innesto) dei vari file system, usati di frequente nel sistema. Si tratta di un file che viene solo letto dai programmi e il suo aggiornamento viene fatto in modo manuale dall'amministratore del sistema.

Il file è organizzato in record (corrispondenti alle righe) divisi in campi separati da uno o più spazi (inclusi i caratteri di tabulazione). Le righe che iniziano con il simbolo #, le righe vuote e quelle bianche sono ignorate e trattate eventualmente come commenti.

  1. Il primo campo definisce il tipo di dispositivo o il file system remoto da innestare.

  2. Il secondo campo definisce la directory che funge da punto di innesto per il file system.

  3. Il terzo campo definisce il tipo di file system e ne viene indicato il nome in base alla tabella 162.2.

    Se in questo campo viene indicato il termine ignore, si intende fare riferimento a una partizione presente, ma inutilizzata, per la quale non si vuole effettuare alcun innesto. Di fatto, i record che contengono questa indicazione vengono ignorati.

  4. Il quarto campo descrive le opzioni speciali per il tipo di innesto che si intende eseguire. Si tratta delle stesse opzioni speciali descritte nella pagina di manuale mount(8) e anche nella sezione 162.1.4 in occasione della spiegazione dell'uso dell'opzione -o (a esclusione dell'opzione remount).

  5. Il quinto campo viene utilizzato per determinare quali file system possono essere utilizzati per lo scarico dei dati (dump).(3)

  6. Il sesto campo viene utilizzato dal programma fsck per determinare l'ordine in cui il controllo dell'integrità dei file system deve essere effettuato nel momento dell'avvio del sistema.

    Il file system principale dovrebbe avere il numero uno in questo campo, mentre gli altri, il numero due (o anche valori superiori). Se questo campo contiene il valore zero, significa che il file system in questione non deve essere controllato.

Nell'esempio seguente, tutte le unità che non sono unite stabilmente al corpo fisico dell'elaboratore, hanno l'opzione noauto che impedisce l'innesto automatico all'avvio del sistema. Queste possono essere attivate solo manualmente, attraverso mount, con il vantaggio di potere indicare semplicemente la directory di inserimento (il punto di innesto) o il nome del file di dispositivo.

# nome               Innesto      Tipo     Opzioni           Dump  Check

/dev/hda3            /            ext3     defaults           0     1
/dev/hdb1            /home        ext3     defaults           0     2
proc                 /proc        proc     defaults           0     0 
/dev/hda2            none         swap     sw
/dev/hda1            /mnt/dosc    vfat     quiet,umask=000    0     0
/dev/sda             /mnt/dosd    vfat     user,noauto,quiet  0     0
/dev/sda1            /mnt/scsimo  ext3     user,noauto        0     0
/dev/cdrom           /mnt/cdrom   iso9660  ro,user,noauto     0     0
roggen.brot.dg:/     /mnt/roggen  nfs      ro,user,noauto     0     0
/dev/fd0             /mnt/dosa    vfat     user,noauto,quiet  0     0

162.1.7   File «/etc/mtab»

Il file /etc/mtab ha la stessa struttura di /etc/fstab, ma viene gestito automaticamente da mount e umount, con lo scopo di rappresentare i file system innestati nella struttura generale. Non deve essere modificato e dovrebbe essere creato automaticamente all'avvio del sistema.

In un sistema GNU/Linux, il file virtuale /proc/mounts riproduce sostanzialmente le stesse informazioni che possono apparire all'interno di /etc/mtab. Per questa ragione, quando la directory /etc/ deve funzionare in sola lettura, si utilizza spesso, al posto del file /etc/mtab, un collegamento simbolico a /proc/mounts. Tuttavia, in condizioni normali questo non si fa, perché non tutti i programmi che hanno bisogno di accedere a /etc/mtab si trovano a proprio agio con tale raggiro.

162.1.8   Utilizzo di «df»

Il programma df, (4) ovvero Disk free, permette di conoscere lo spazio a disposizione di una o di tutte le partizioni che risultano innestate. Se non vengono indicati i nomi dei file di dispositivo, si ottiene l'elenco completo di tutti quelli che sono attivi, altrimenti l'elenco si riduce ai nomi specificati.

df [opzioni] [dispositivo...]

L'unità di misura con cui si esprime questo spazio è in blocchi la cui dimensione cambia a seconda delle opzioni utilizzate oppure dalla presenza di una variabile di ambiente: POSIXLY_CORRECT. La presenza di questa fa sì che, se non viene usata l'opzione -k, i blocchi siano di 512 byte come prevede lo standard POSIX. Diversamente, il valore predefinito dei blocchi è di 1 024 byte.

Tabella 162.9. Alcune opzioni.

Opzione Descrizione
-a
--all
Emette le informazioni relative a tutti i dispositivi attivi, anche di quelli che normalmente vengono ignorati.
-h
--human-readable
Aggiunge una lettera alla dimensione, in modo da chiarire il tipo di unità di misura utilizzato.
-i
--inodes
Emette il risultato indicando l'utilizzo e la disponibilità di inode, invece che fare riferimento ai blocchi. Questa informazione è utile solo per i file system che utilizzano una struttura a inode.
-b
--byte
Emette le dimensioni in byte e non in kibibyte (simbolo: «Kibyte»).
-k
--kilobytes
Emette le dimensioni in kibibyte. Questa opzione fa riferimento all'unità di misura predefinita, ma permette di fare ignorare a df la presenza eventuale della variabile POSIXLY_CORRECT.
-m
--megabytes
Emette le dimensioni in mebibyte (simbolo: «Mibyte»).

162.1.9   Utilizzo di «di»

Il programma di, (5) ovvero Disk information, permette di ottenere informazioni simili a quelle di df, con la possibilità di specificare con più libertà il formato con cui queste devono essere visualizzate:

di [opzioni] [file...]

Per individuare i dischi e le partizioni, è sufficiente indicare dei file che si trovano al loro interno, altrimenti si ottiene lo stato di tutti i dischi e le partizioni che costituiscono l'albero attuale del file system.

Tabella 162.10. Alcune opzioni.

Opzione Significato mnemonico Descrizione
-a
all Emette le informazioni relative a tutti i dispositivi attivi, compresi quelli che non contengono alcunché, come /proc/.
-dx
display-size Mostra i valori in multipli di quanto specificato, attraverso la lettera x: p sta per POSIX (512 byte), k sta per kibibyte, m sta per mebibyte, g sta per gibibyte, ecc.
-dg
-g
gibibyte Mostra i valori in gibibyte.
-dm
-m
mebibyte Mostra i valori in mebibyte.
-km
-k
kibibyte Mostra i valori in kibibyte.

Tra le opzioni disponibili è possibile anche usare -f che consente di specificare un formato libero di visualizzazione delle informazioni. Questa e altre opzioni non vengono mostrate; per approfondire l'uso di questo programma si può consultare la pagina di manuale di(1). Vengono mostrati alcuni esempi.

162.1.10   Utilizzo di «stat»

Il programma stat (6) permette di conoscere alcune informazioni generali su di un file, su di una directory, o sul file system in cui questi si trovano:

stat [opzioni] file...

Le informazioni che si ottengono possono essere organizzate anche attraverso un modello libero, usando le opzioni appropriate, in modo da facilitare l'acquisizione di queste informazioni da parte di un altro programma.

Tabella 162.15. Alcune opzioni.

Opzione Descrizione
-f
--filesystem
Invece di mostrare le informazioni relative al file o alla directory indicati, si ottengono quelle del file system che li contiene.
-L
--dereference
Nel caso venga indicato un collegamento simbolico con questa opzione si ottengono le informazioni al file, alla directory, o al file system a cui punta.
-t
--terse
Mostra le informazioni in modo essenziale, per facilitarne la cattura attraverso uno script.

Tra le opzioni che appaiono nella tabella precedente, viene omessa -c, che consentirebbe di configurare il modo in cui si vogliono ottenere le informazioni. Per questo si deve consultare il documento info stat, oppure la pagina di manuale stat(1).

Vengono mostrati alcuni esempi senza commentarli.

stat mio_file[Invio]

  File: `mio_file'
  Size: 33              Blocks: 8          IO Block: 8192   regular file
Device: ah/10d  Inode: 4112856     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/ daniele)   Gid: ( 1001/ daniele)
Access: 2004-09-17 09:40:22.000000000 +0200
Modify: 2004-09-17 09:40:50.000000000 +0200
Change: 2004-09-17 09:40:50.000000000 +0200

stat -t mio_file[Invio]

mio_file 33 8 81a4 1001 1001 a 4112856 1 0 0 1095406822 1095406850 \
  \1095406850 8192

stat -f mio_file[Invio]

  File: "mio_file"
    ID: 0        Namelen: 255     Type: nfs
Blocks: Total: 4206189    Free: 3662077    Available: 3448412    Size: 8192
Inodes: Total: 4276224    Free: 4113427   

stat -f /[Invio]

  File: "/"
    ID: 0        Namelen: 255     Type: ext2/ext3
Blocks: Total: 8412378    Free: 7525313    Available: 7097984    Size: 4096
Inodes: Total: 4276224    Free: 4134421   

162.2   Memoria cache

La memoria cache dei dischi serve a ridurre l'attività di questi, effettuando le modifiche a intervalli regolari o quando diventa indispensabile per altri motivi. L'esistenza di questo tipo di organizzazione, basato su una «memoria di transito», è il motivo principale per cui si deve arrestare l'attività del sistema prima di spegnere l'elaboratore.

La memoria cache viene gestita automaticamente dal kernel, ma è un demone quello che si occupa di richiedere lo scarico periodico.

162.2.1   Utilizzo di «update», ex «bdflush»

Con questo nome, update, (7) viene avviato il demone che si occupa di richiedere periodicamente al kernel lo scarico della memoria cache. Deve essere messo in funzione durante la fase di avvio del sistema, prima di ogni altra attività di scrittura nei dischi.

update [opzioni]

Per avviare update si usano fondamentalmente due tecniche: l'utilizzo all'interno di uno script di quelli della procedura di inizializzazione del sistema, oppure l'inserimento di un record apposito all'interno di /etc/inittab.

L'esempio seguente mostra una configurazione della procedura di inizializzazione del sistema con la quale update viene avviato attraverso lo script iniziale. Segue il record del file /etc/inittab dove si fa riferimento allo script /etc/rc.d/rc.sysinit:

si::sysinit:/etc/rd.d/rc.sysinit

Ecco il pezzo significativo di /etc/rc.d/rc.sysinit:

# Attivazione della memoria virtuale.
/sbin/swapon -a

# Attivazione di update.
/sbin/update

# Controllo della partizione del file system principale.
/sbin/fsck -A -a
<synellipsis>

L'esempio seguente mostra una configurazione della procedura di inizializzazione del sistema attraverso la quale update viene avviato direttamente attraverso /etc/inittab.

ud::once:/sbin/update

162.2.2   Utilizzo di «sync»

Il programma sync(8) permette di scaricare nei dischi i dati contenuti nella memoria cache. Viene usato solitamente dalla procedura di arresto del sistema per garantire che tutti i dati siano registrati correttamente su disco prima dello spegnimento fisico dell'elaboratore.

sync [opzioni]

Può essere utilizzato in caso di emergenza, quando per qualche ragione non si può attendere il completamento della procedura di arresto del sistema, o per qualunque altro motivo.

Di solito non si usano opzioni.

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


1) util-linux: mount   GNU GPL

2) util-linux: umount   GNU GPL

3) Si tratta di una procedura per ottenere delle copie di sicurezza che comunque non è indispensabile. Per questo si possono usare strumenti normali senza bisogno si utilizzare la configurazione di questo file.

4) GNU core utilities   GNU GPL

5) di   software libero con licenza speciale

6) GNU core utilities   GNU GPL

7) Update daemon for Linux   GNU GPL

8) GNU core utilities   GNU GPL


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

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

Valid ISO-HTML!

CSS validator!