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


Capitolo 169.   Gestione più evoluta di dischi e file system

In questo capitolo vengono trattati alcuni aspetti più sofisticati della gestione di dischi e di file system.

Tabella 169.1. Riepilogo dei programmi e dei file per la gestione più evoluta dei dischi e dei file system.

Nome Descrizione
quotacheck Scansione del file system di una partizione per fare il conteggio dell'utilizzo.
quotaon Attivazione del controllo delle quote.
quotaoff Disattivazione del controllo delle quote.
setquota
edquota
Modifica delle quote assegnate.
repquota Informazioni sulle quote assegnate e sulla situazione effettiva.
quota Verifica della quota personale.
automount Gestione degli innesti automatici.

169.1   Quota nei sistemi GNU/Linux

Generalmente, l'utilizzo dello spazio nel file system non è controllato, per cui gli utenti possono utilizzare teoricamente quanto spazio vogliono in modo indiscriminato. Per controllare l'utilizzo dello spazio nel file system si può attivare la gestione delle quote, cioè un sistema di registrazione dello spazio utilizzato in base all'appartenenza dei file a un utente o a un gruppo particolare. La gestione delle quote non si limita a questo: può impedire di fatto la creazione di file che superano lo spazio consentito.

Il controllo avviene a livello di partizione, per cui occorre stabilire per ognuna di queste le quote di spazio utilizzabili. Generalmente, il problema di controllare le quote riguarda un numero ristretto di partizioni, precisamente quelle in cui gli utenti hanno la possibilità di accedere in scrittura.

Il kernel Linux potrebbe essere in grado di gestire esclusivamente le quote di utilizzo delle partizioni di tipo Ext2 o Ext3, cioè il suo tipo nativo. Inoltre, non è in grado di intervenire direttamente nel file system innestato nella radice, a meno di reinnestarlo in una directory successiva.(1)

GNU/Linux gestisce le quote attraverso il kernel, attivandole e controllandole attraverso una serie di programmi di servizio specifici. Pertanto è necessario che il kernel sia stato compilato attivando l'opzione della gestione delle quote(2) (sezione 67.2.21).

169.1.1   Quota utente e quota di gruppo

Il controllo della quota può avvenire a livello di singolo utente, di gruppo o di entrambe le cose. In pratica, un file può essere aggiunto se la quota utente riferita all'UID del file lo consente e, nello stesso modo, se la quota di gruppo riferita al GID del file non viene superata.

Il tracciamento e il controllo dei livelli di quota utente e di gruppo possono essere attivati indipendentemente l'uno dall'altro. In queste sezioni viene mostrato come attivare entrambi i tipi di quota, ma in pratica, se si usano i gruppi privati, è più probabile che si sia interessati esclusivamente al controllo per utente.

169.1.2   Configurazione con il file «/etc/fstab»

La gestione delle quote delle partizioni deve essere attivata espressamente nel momento dell'innesto del file system relativo. Per questo si preferisce intervenire nella configurazione contenuta nel file /etc/fstab, in modo da facilitare la cosa. Nella colonna delle opzioni si possono aggiungere due parole chiave: usrquota e grpquota. La prima serve per attivare il controllo delle quote riferite agli utenti e la seconda per il controllo riferito ai gruppi. Le due cose sono indipendenti.

L'esempio seguente mostra in che modo attivare entrambi i controlli nella partizione /dev/sda3, contenente le directory personali degli utenti:

# nome         Innesto      Tipo     Opzioni                      Dmp Chk

/dev/sda2      /            ext3     defaults                      0   1
/dev/sda3      /home        ext3     defaults,usrquota,grpquota    0   1
proc           /proc        proc     defaults                      0   0 
/dev/sda4      none         swap     sw
/dev/cdrom     /mnt/cdrom   iso9660  ro,user,noauto                0   0

Nell'esempio successivo, le directory personali degli utenti sono incluse nell'unica partizione che viene innestata a partire dalla radice (/dev/sda2), pertanto, per garantire che le quote vengano considerate, occorre un piccolo raggiro, costituito dal reinnesto della stessa partizione in una sottodirectory:

# nome         Innesto      Tipo     Opzioni                      Dmp Chk

/dev/sda2      /            ext3     defaults,usrquota,grpquota    0   1
/dev/sda2      /.quota      ext3     defaults,usrquota,grpquota    0   0
proc           /proc        proc     defaults                      0   0 
/dev/sda4      none         swap     sw
/dev/cdrom     /mnt/cdrom   iso9660  ro,user,noauto                0   0

Naturalmente, il punto di innesto, costituito in questo caso dalla directory /.quota/, è arbitrario e può collocarsi in qualunque altra posizione.

Per poter utilizzare la gestione delle quote di utilizzo della memoria di massa, è necessario che le opzioni usrquota o grpquota (o entrambe) siano attive; ovvero, non è sufficiente che siano appena state annotate nel file /etc/fstab. Pertanto, quando si modifica il file /etc/fstab, per renderle operative, occorre reinnestare le unità. Per esempio:

mount -o remount /home[Invio]

169.1.3   Registrazione delle quote e attivazione del controllo

I livelli di quota dei vari utenti e dei gruppi sono contenuti in due file: quota.user e quota.group, oppure aquota.user e aquota.group. Questi devono essere collocati nella directory principale della partizione da controllare e richiedono solo i permessi di lettura e scrittura per l'utente root. Normalmente, non è necessario creare tali file, perché a questo provvede automaticamente il programma quotacheck quando viene avviato con l'opzione -c (--create-files).

Prima che il sistema di controllo delle quote possa funzionare, occorre effettuare una scansione della partizione interessata, in modo da raccogliere tutte le informazioni necessarie sull'utilizzo dello spazio dal punto di vista degli utenti e dei gruppi. I file utilizzati per contenere queste informazioni cambiano nome a seconda della versione del formato di questi: la versione più recente (quota versione 2) ha i nomi aquota.user e aquota.group, mentre la versione più vecchia (quota versione 1) ha i nomi quota.user e quota.group. La scelta di un formato rispetto all'altro, dipende soprattutto dalla capacità del kernel.

La scansione si esegue con il programma quotacheck e per sicurezza andrebbe ripetuta la sua esecuzione ogni volta che si avvia il sistema, oppure giornalmente, quando il sistema resta in funzione a lungo (per più giorni). La prima volta, o comunque quando si vuole ripartire da zero, si può usare il comando seguente, dove appare in particolare l'opzione -c (--create-files):

quotacheck -a -v -u -g -c[Invio]

Tuttavia, se le partizioni per cui si devono calcolare le quote di utilizzo devono rimanere accessibili anche in scrittura, va aggiunta l'opzione -m (--no-remount). Logicamente, il fatto che durante la scansione di controllo sia ammessa la scrittura, rende inattendibile il risultato della scansione:

quotacheck -a -v -u -g -c -m[Invio]

L'opzione -a (--all) richiede la scansione di tutte le partizioni che sono state indicate nel file /etc/fstab come soggette a controllo delle quote. Le opzioni -u e -g richiedono espressamente che la scansione si prenda cura sia dell'utilizzo in base all'utente, sia in base al gruppo.

Quando si utilizza quotacheck per aggiornare le informazioni sull'utilizzo dello spazio nella memoria di massa, non si usa più l'opzione -c.

Se non si usa l'opzione -F (--format), viene usato il formato predefinito per i file, corrispondere a quello più recente.

Ogni volta che si innesta una partizione che è soggetta a controllo delle quote, è poi necessario attivare il controllo attraverso il programma quotaon. Per esempio, quotaon /dev/hda3 attiva il controllo sulla partizione indicata. Tuttavia, generalmente si fa questo all'avvio del sistema, per attivare il controllo su tutte le partizioni specificate per questo nel solito file /etc/fstab. In pratica con il comando seguente:

quotaon -a -v -u -g[Invio]

Anche in questo caso, le opzioni -u e -g indicano che si vuole espressamente il controllo dell'utilizzo in base all'utente e in base al gruppo, mentre l'opzione -a indica di attivare la funzione per tutte le voci annotate così nel file /etc/fstab.

Vale anche per quotaon l'uso dell'opzione -F, se si deve specificare un formato diverso da quello predefinito per i file che accumulano le informazioni sulle quote.

A questo punto, conviene preoccuparsi di fare in modo che la procedura di inizializzazione del sistema sia in grado ogni volta di avviare la gestione delle quote. Se la propria distribuzione GNU/Linux non fornisce degli script già pronti, si possono aggiungere al file /etc/rc.d/rc.local (o simile) le istruzioni necessarie, come nell'esempio seguente:

if /sbin/quotacheck -avug
then
    echo "Scansione delle quote eseguita."
fi

if /sbin/quotaon -avug
then
    echo "Attivazione del controllo delle quote eseguita."
fi

Nel caso della distribuzione GNU/Linux Debian, è disponibile lo script /etc/init.d/quota, per avviare e fermare la gestione delle quote:

/etc/init.d/quota start|stop

Questo script si occupa sia di ripetere la scansione periodica con quotacheck, sia di usare quotaon e quotaoff nel modo più appropriato.

Tabella 169.5. Definizione del tipo usato per l'accumulo delle informazioni sulle quote.

Opzione Descrizione
-F vfsold
Quota versione 1.
-F vfsv0
Quota versione 2.
-F rpc
Quota di un file system NFS.
-F xfs
Quota di un file system XFS.

169.1.4   Quote relative a file system condivisi attraverso la rete

È importante chiarire che la gestione delle quote di utilizzo della memoria di massa riguarda esclusivamente le unità locali, pertanto non è possibile controllare un file system innestato attraverso un protocollo di rete. In altri termini, il controllo di tale file system, deve avvenire presso l'elaboratore che offre questo servizio.

In mancanza di accorgimenti particolari, l'utente che utilizza un file system di rete, per il quale subisce un controllo della «quota», si può trovare a un certo punto a non riesce più a salvare i propri dati, così come può scoprire che alcuni file sono stati rimossi misteriosamente (una volta che il tempo di grazia, dopo lo sforamento dalla quota previsto, è stato superato). Tuttavia esiste la possibilità di attivare un servizio di rete per la comunicazione di tali informazioni, attraverso il demone rpc.rquotad, in modo da avviare l'utente in tempo.

In generale, una distribuzione GNU/Linux ben organizzata, installa correttamente il demone necessario al passaggio di tali informazioni, quando il file system di rete è condiviso con il protocollo NFS; tuttavia, in altre condizioni, tale notifica può venire ugualmente a mancare.

169.1.5   Utilizzo di «quotacheck»

Il programma quotacheck esegue una scansione di una o più partizioni, allo scopo di aggiornare i file di registrazione delle quote: quota.user e quota.group, oppure aquota.user e aquota.group.

quotacheck [opzioni] [{partizione|punto_di_innesto}...]

La prima volta che si vuole attivare la gestione delle quote in una certa unità di memorizzazione, va usato con l'opzione -c, per creare il file *quota.user o *quota.group (o entrambi); successivamente conviene usare questo programma ogni volta che si innestano delle partizioni soggette al controllo delle quote di utilizzo (ma senza l'opzione -c). In generale, uno script della procedura di avvio del sistema dovrebbe provvedere all'uso corretto di quotacheck per le partizioni innestate automaticamente.

Tabella 169.6. Alcune opzioni.

Opzione Descrizione
-u
--user
Questa opzione richiede una scansione per le quote di utilizzo riferite agli utenti. Questa è l'azione predefinita.
-g
--group
Richiede una scansione per le quote di utilizzo riferite ai gruppi.
-a
--all
Scandisce tutte le partizioni indicate nel file /etc/fstab come soggette a tale controllo.
-R
--exclude-root
Questa opzione viene usata in congiunzione con -a e specifica di eseguire il controllo di tutte le partizioni indicate nel file /etc/fstab, a esclusione di quella principale.
-F {vfsold|vfsv0|rpc|xfs}
Consente di specificare il formato con cui sono state accumulate informazioni sulle quote.
-m
--no-remount
Esegue la scansione senza preoccuparsi se il file system relativo è innestato anche in scrittura.
-c
--create-files
Ricrea i file da zero, senza tenere conto del loro contenuto precedente.

Segue la descrizione di alcuni esempi.

169.1.6   Utilizzo di «quotaon» e «quotaoff»

Il programma quotaon attiva la gestione delle quote da parte del kernel. Non si tratta quindi di un demone, ma di un programma che termina subito di funzionare.

quotaon [opzioni] [{partizione|punto_di_innesto}...]

Perché si possa attivare questa gestione, è necessario che i file *quota.user e *quota.group siano presenti nella directory principale delle partizioni per le quali si vuole la gestione delle quote.

Il programma quotaoff disattiva la gestione delle quote da parte del kernel. Le opzioni e la sintassi sono le stesse di quotaon.

quotaoff [opzioni] [{partizione|punto_di_innesto}...]

Tabella 169.7. Alcune opzioni.

Opzione Descrizione
-u
--user
Interviene nella gestione delle quote utente. Questa è l'azione predefinita.
-g
--group
Interviene nella gestione delle quote dei gruppi.
-a
Fa riferimento al contenuto del file /etc/fstab, relativamente alle unità innestate automaticamente.
-F {vfsold|vfsv0|rpc|xfs}
Consente di specificare il formato con cui sono state accumulate le informazioni sulle quote.

Segue la descrizione di alcuni esempi.

169.1.7   Assegnazione e verifica delle quote

Le quote che si possono assegnare agli utenti e ai gruppi sono composte dell'indicazione di diversi dati. Lo spazio concesso viene espresso attraverso il numero di blocchi (unità di 1 024 byte) e viene definito limite logico (soft) perché viene tollerato un leggero sconfinamento per tempi brevi. A fianco del limite logico si può stabilire un limite di sicurezza, o limite fisico (hard), che non può essere superato in alcun caso. Oltre ai limiti sui blocchi di byte, si stabiliscono normalmente dei limiti di utilizzo di inode, in pratica, il numero massimo di file. Dal momento che si ha a che fare con file system Ext2 o Ext3 che normalmente possono avere un inode ogni 4 Kibyte, si può stabilire facilmente un calcolo di corrispondenza tra blocchi di dati e quantità di inode.

Quando viene fissato il limite fisico, soprattutto quando questo è superiore al limite logico, si intende consentire implicitamente lo sconfinamento del limite di utilizzo. In tal caso è necessario stabilire il tempo massimo per cui ciò è concesso. Generalmente, se non viene definito diversamente, si tratta di una settimana.

Le quote vengono assegnate o modificate attraverso i programmi setquota e edquota; la verifica dei livelli può essere fatta dall'utente root con repquota e ogni utente può controllare ciò che lo riguarda attraverso il comando quota. Con setquota si utilizzano gli argomenti della riga di comando per definire i valori delle quote, mentre con edquota si modificano le quote attraverso un programma per la gestione di file di testo: in pratica viene creato un file temporaneo e il suo contenuto viene quindi interpretato per modificare le quote. L'esempio seguente mostra l'uso di setquota per assegnare all'utente tizio una quota di 10 Mibyte, con una tolleranza del 10 % (11 Mibyte il limite fisico):

setquota -u tizio 11264 10240 0 0 -a[Invio]

quota -u tizio[Invio]

Disk quotas for user tizio (uid 1005): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda2     292   11264   10240              97       0       0        

La modifica delle quote dei gruppi avviene nello stesso modo, usando l'opzione -g al posto di -u. A fianco di questi livelli di spazio utilizzabili, c'è il problema di fissare il tempo massimo di sconfinamento (tempo di grazia) che può essere deciso solo a livello globale della partizione.

setquota -t 2592000 2592000 -a[Invio]

In questo caso, il tempo di sconfinamento è di 30 giorni, pari a 2 592 000 s. Il valore appare ripetuto per due volte, perché nel primo caso riguarda lo sconfinamento nella quantità di spazio usato, mentre nel secondo si riferisce allo sconfinamento in quantità di inode (numero di file).

L'utente root può avere un quadro completo della situazione con repquota, che genera una tabella delle varie quote. La colonna grace serve per annotare eventuali sconfinamenti e riporta il tempo consentito rimanente.

repquota -u -a[Invio]

                        Block limits               File limits
User            used    soft    hard  grace    used  soft  hard  grace
...
tizio     +-   10500   10240   11264  30days   1123  2560  2816       
caio      --       1       0       0              1     0     0       

Nell'esempio appare solo una parte del listato che si ottiene generalmente. Viene mostrato il caso di due utenti: caio non ha alcuna limitazione di utilizzo e le sue quote sono azzerate per questo; tizio invece ha superato un po' il valore del limite logico per l'utilizzo di blocchi. Pertanto, nella colonna grace appare quanto tempo gli resta per provvedere da solo (quando anche questo tempo scade, vi provvede il sistema).

Infine, il singolo utente può verificare la propria situazione con il programma quota.

tizio@:~$ quota[Invio]

Disk quotas for user tizio (uid 502):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sda2   10500*  10240   11264   6days    1123    2560    2816

Anche in questo caso, si può osservare che l'utente ha superato il limite di spazio concesso, pur senza superare il limite massimo di inode disponibili.

169.1.8   Utilizzo di «setquota»

Il programma setquota permette di assegnare i livelli delle quote agli utenti, attraverso quanto viene indicato con gli argomenti della riga di comando. I modelli successivi sono semplificati:

setquota -u nome quota_dati limite_dati \
  \                 quota_inode limite_inode {-a|dispositivo}
setquota -g nome quota_dati limite_dati \
  \                 quota_inode limite_inode {-a|dispositivo}
setquota -t tempo_per_sconfinamento_dati tempo_per_sconfinamento_inode \
  \         {-a|dispositivo}

Nella parte finale della riga di comando si specifica per quali unità di memorizzazione intervenire, indicando precisamente un file di dispositivo oppure l'opzione -a (per fare riferimento a tutti quelli previsti nel file /etc/fstab).

Quando si usa setquota secondo i primi due modelli proposti, si vanno a specificare i livelli di quota dell'utente o del gruppo indicato, attraverso quattro valori che rappresentano rispettivamente: la quota dati espressa in multipli di 1 024 byte, il limite assoluto espresso sempre in multipli di 1 024 byte, la quota di quantità di file; il limite assoluto di quantità di file. Va osservato che un valore pari a zero esprime l'assenza di un limite.

Quando appare l'opzione -t, si fissa il tempo di grazia, ovvero il tempo, espresso in secondi, che viene lasciato all'utente per ritornare ai livelli di utilizzo stabilito dalla propria quota, prima che vi provveda automaticamente il sistema operativo. Questo valore è associato all'unità di memorizzazione ed è unico per tutti gli utenti o per tutti i gruppi.

Segue la descrizione di alcuni esempi.

169.1.9   Utilizzo di «edquota»

Il programma edquota permette di assegnare e modificare i livelli delle quote agli utenti, attraverso l'uso di un programma per la creazione e modifica dei testi, precisamente si tratta di VI o di quanto specificato nella variabile di ambiente EDITOR.

edquota [opzioni] [utente...]

La modifica delle quote può avvenire solo dopo che sono stati predisposti i file quota.user e quota.group, ovvero aquota.user e aquota.group.

Tabella 169.11. Alcune opzioni.

Opzione Descrizione
-u
Modifica le quote utente. È l'azione predefinita se non vengono specificate altre opzioni.
-g
Modifica le quote dei gruppi.
-p utente_prototipo
Duplica le quote dell'utente specificato come argomento dell'opzione per tutti gli utenti indicati nella parte finale della riga di comando.
-t
Permette di modificare il tempo massimo di sconfinamento del limite logico, fermo restando il limite fisico che non può essere superato in ogni caso.
-F {vfsold|vfsv0|rpc|xfs}
Consente di specificare il formato con cui sono state accumulate informazioni sulle quote.

Segue la descrizione di alcuni esempi.

169.1.10   Utilizzo di «repquota»

Il programma repquota emette una tabella riepilogativa dell'utilizzo delle quote delle partizioni specificate.

repquota [opzioni] [{partizione|punto_di_innesto}...]

Tabella 169.12. Alcune opzioni.

Opzione Descrizione
-u
Elenca la situazione delle quote riferite agli utenti. È l'azione predefinita se non vengono specificate altre opzioni.
-g
Elenca la situazione delle quote riferite ai gruppi.
-a
Elenca le quote di tutte le partizioni per cui ciò è previsto attraverso le indicazioni del file /etc/fstab.
-F {vfsold|vfsv0|rpc|xfs}
Consente di specificare il formato con cui sono state accumulate informazioni sulle quote.

Segue la descrizione di alcuni esempi.

169.1.11   Utilizzo di «quota»

Il programma quota permette agli utenti di controllare il proprio livello di quota. Effettua l'analisi su tutte le partizioni annotate per questo nel file /etc/fstab. Solo all'utente root è concesso di utilizzare questo programma per controllare la quota di un altro utente.

quota [opzioni]

Il programma quota restituisce un valore diverso da zero se almeno uno dei valori restituiti rappresenta uno sconfinamento dalla quota.

Tabella 169.13. Alcune opzioni.

Opzione Descrizione
-u [utente]
Restituisce le quote riferite all'utente. È l'azione predefinita se non vengono specificate altre opzioni. Solo l'utente root può utilizzare l'argomento aggiuntivo per controllare i livelli di un utente particolare.
-g [gruppo]
Restituisce le quote riferite al gruppo. L'utente può interrogare le quote riferite a gruppi a cui appartiene.
-F {vfsold|vfsv0|rpc|xfs}
Consente di specificare il formato con cui sono state accumulate informazioni sulle quote.

Segue la descrizione di alcuni esempi.

169.2   Dischi senza partizioni

Come i dischetti, anche i dischi di dimensioni più grandi possono essere usati senza partizioni, facendo riferimento al file di dispositivo che rappresenta l'unità intera. In questo modo, è sufficiente che il disco in questione sia inizializzato a basso livello, quindi si passa subito alla creazione del file system, come nell'esempio seguente:

mkfs.ext3 /dev/sda[Invio]

Come si vede, si intende inizializzare il dispositivo /dev/sda, corrispondente a un disco SCSI completo. Inizialmente, il programma che si utilizza dovrebbe avvisare della scelta particolare che si sta compiendo:

/dev/sda is entire device, not just one partition!
Proceed anyway? (y,n) 

Evidentemente, basta confermare premendo la lettera y, seguita da [Invio] per ottenere ciò che si desidera.

In generale, i programmi a disposizione per la suddivisione dei dischi in partizioni, partono dal presupposto che tali dischi siano organizzati in settori da 512 byte. Tuttavia, esistono dischi con settori di dimensioni multiple, come nel caso di alcuni tipi di magneto-ottici (per esempio i dischi magneto-ottici Fujitsu da 9 cm, che solitamente sono disponibili solo nella versione con settori da 2 048 byte).

GNU/Linux è in grado di gestire dischi con settori più grandi di 512 byte (purché si tratti di multipli e si resti entro i 4 096 byte), ma le partizioni che si usano solitamente, secondo lo standard tradizionale del Dos, non possono essere applicate a dischi con settori più grandi. Per questo motivo, l'unico modo di utilizzare tali dischi è quello di trattarli come dei super dischetti, ovvero dischi senza partizioni. Per sicurezza, quando si crea un file system Ext2 o Ext3 è bene accertarsi di avere blocchi di dimensioni sufficientemente grandi:

mkfs.ext3 -b 4096 /dev/sda[Invio]

169.3   Immagini di dischi su file

Dal momento che i dischi esistono e sono utilizzati per uno scopo preciso, la possibilità di gestire file che riproducono un disco intero può sembrare paradossale o senza senso. In realtà, ciò è di grande utilità. In questi casi si parla di file-immagine, solo che il termine immagine viene usato in molte circostanze differenti e occorre evitare di lasciarsi confondere.

L'esempio più comune di file contenenti l'immagine di un disco sono quelli fatti per la creazione dei dischetti di avvio utilizzati per installare GNU/Linux la prima volta, oppure quelli che servono a riprodurre un CD o un DVD.

Per utilizzare i file-immagine di dischi, cioè per poterli innestare come si fa con i dischi veri, occorre che il kernel sia in grado di gestire questa funzione (sezione 67.2.10).

169.3.1   Creazione di un file-immagine

Un file-immagine di un disco può essere creato a partire da un disco esistente oppure da zero, con l'inizializzazione di un file. Volendo creare l'immagine di un dischetto già esistente si procede semplicemente copiando il file di dispositivo corrispondente all'unità a dischetti nel file che si vuole creare.

cp /dev/fd0 floppy.img[Invio]

L'esempio appena mostrato genera il file floppy.img nella directory corrente.

Diversamente si può partire da zero, creando un file e inizializzandolo. Il comando seguente crea il file pippo.img della stessa dimensione di un dischetto da 1 440 Kibyte.

dd if=/dev/zero of=pippo.img bs=1024c count=1440[Invio]

Il comando successivo serve invece a inizializzarlo in modo da inserirvi un file system (viene utilizzato il formato standard: Ext2).

mke2fs pippo.img[Invio]

pippo.img is not a block special device.
Proceed anyway? (y,n)

Trattandosi di una richiesta anomala, il programma mke2fs vuole una conferma. Basta inserire la lettera y per proseguire.

Proceed anyway? (y,n) y[Invio]

Nello stesso modo si può creare un file system differente (per la creazione di un file-immagine contenente un file system ISO 9660, usato per i CD e i DVD, si veda il capitolo 170).

169.3.2   Accedere a un file-immagine

Per accedere a un file contenente l'immagine di un disco (con il suo file system), si procede come se si trattasse di un disco o di una partizione normale. In particolare, viene utilizzato mount con l'opzione -o loop.

L'immagine cui si accede può essere stata creata sia partendo da un file vuoto che viene inizializzato successivamente, sia dalla copia di un disco (o di una partizione) in un file.

mount -o loop -t ext2 pippo.img /mnt/floppy[Invio]

Nell'esempio, l'immagine contenuta nel file pippo.img viene innestata a partire dalla directory /mnt/floppy/, dove si comporta come se si trattasse di un dischetto normale.

169.3.3   trasferimento di un file-immagine in un disco

Se il file-immagine, all'interno del quale è stato fatto del lavoro, corrisponde esattamente a un disco o a una partizione, è possibile riprodurre questa immagine nel disco o nella partizione corrispondente. Per questo si può utilizzare cp oppure dd.

I due esempi seguenti riproducono nello stesso modo il file pippo.img in un dischetto.

cp pippo.img /dev/fd0[Invio]

dd if=pippo.img of=/dev/fd0[Invio]

Naturalmente, se l'immagine è stata innestata in precedenza per poterne modificare il contenuto, occorre ricordarsi di eseguirne il distacco prima di procedere alla riproduzione.

169.4   Dischi senza file system

GNU/Linux, come altri sistemi Unix, permette di gestire anche dischi che al loro interno non contengono un file system. Questo concetto potrebbe sembrare scontato per molti, ma tutti quelli che si avvicinano a GNU/Linux provenendo da sistemi in cui tali cose non si possono fare devono porre attenzione a questo particolare.

Un disco senza file system è semplicemente una serie di settori. In modo molto semplificato è come se si trattasse di un file. Quando si indicano i nomi di dispositivo legati ai dischi o alle partizioni si fa riferimento a questi nel loro insieme, come se si trattasse di file.

Quando si vuole utilizzare un disco o una partizione nel modo con cui si è abituati di solito, cioè per gestire i file al suo interno, la si deve innestare e da quel momento non si fa più riferimento al nome del dispositivo.

A volte è importante utilizzare i dischi come supporti di dati senza file system. I casi più importanti sono:

169.5   innesto e separazione automatici di un file system

Le operazioni di innesto e di distacco di un file system possono essere automatizzate, attraverso l'aiuto di un demone che provvede a innestare i dispositivi quando si tenta di accedere a una directory che dovrebbe trovarsi al loro interno e ne esegue il distacco quando per un certo tempo questi risultano inutilizzati.

L'innesto automatico non è solo una comodità in più che viene concessa agli utenti; la situazione in cui si avverte maggiormente il vantaggio di questo automatismo è nella gestione di file system condivisi in rete, attraverso il protocollo NFS, quando si vuole evitare di creare un collegamento stabile.

Ci possono essere diverse opportunità di gestire l'innesto automatico di un file system in un sistema Unix; per quanto riguarda GNU/Linux, il modo più conveniente dovrebbe essere la gestione prevista all'interno del kernel, che si avvale del demone contenuto nel pacchetto Autofs. (3) L'utilizzo di questo pacchetto è ciò che viene descritto nelle sezioni successive.

Avendo deciso di utilizzare il pacchetto Autofs, occorre che il kernel sia predisposto per la gestione dell'innesto automatico dei file system (sezione 67.2.21).

169.5.1   Organizzazione di Autofs

Come già accennato, per la gestione automatica dell'innesto dei file system, il kernel da solo non basta. Viene utilizzato un demone, precisamente si tratta del programma automount, che per funzionare si avvale delle informazioni contenute in una mappa che gli viene indicata attraverso la riga di comando.

Più precisamente, viene definita una directory che rappresenta il punto di innesto automatico, a partire dalla quale si creano poi automaticamente altre sottodirectory in base al contenuto della mappa che viene fornita a automount. Se si vogliono gestire più punti di innesto automatico, occorre avviare diverse copie del demone automount, dove ognuna di queste potrebbe avere una mappa differente. Per tentare di comprendere la cosa in modo intuitivo, si cerchi di seguire l'esempio seguente, dove si suppone di avere predisposto il file /etc/auto.automnt con il contenuto seguente:

cdrom           -fstype=iso9660,ro      :/dev/cdrom
floppy          -fstype=auto            :/dev/fd0

Si suppone inoltre di voler usare la directory /automnt/ come punto di innesto automatico per la mappa definita nel file /etc/auto.automnt. Per attivare il demone automount in modo che legga il file /etc/auto.automnt e lo utilizzi per la directory /automnt/, occorre il comando seguente:

automount /automnt file /etc/auto.automnt[Invio]

La prima direttiva del file /etc/auto.automnt indica che il CD-ROM corrispondente al dispositivo /dev/cdrom viene innestato automaticamente a partire da /automnt/cdrom/ e che il dischetto corrispondente al dispositivo /dev/fd0 viene innestato a partire da /automnt/floppy/. Queste due directory non devono essere create; è automount che provvede nell'istante in cui si cerca di attraversarle. In pratica, se non si conosce l'organizzazione del sistema di innesto automatico dei file system, non si può sapere quali siano i percorsi disponibili e le unità che possono essere innestate automaticamente.

Se per qualche motivo si vogliono gestire diversi punti di innesto automatico, occorre definire le mappe corrispondenti (di solito si tratta di definire altri file simili a /etc/auto.automnt) e quindi occorre avviare altrettante copie di automount. Tuttavia, di solito ci si limita a gestire un solo punto di innesto automatico.

Per semplificare le cose, oppure, a seconda dei punti di vista, per complicarle ulteriormente, Autofs viene distribuito quasi sempre assieme a uno script che dovrebbe essere inserito nella procedura di inizializzazione del sistema: /etc/init.d/autofs, o altro percorso simile. Questo file ha lo scopo di avviare e fermare il servizio, pertanto viene usato con l'aggiunta di un argomento espresso da una parola chiave: start, stop,... Ma il compito previsto per questo script è più complesso del solito e non funziona sempre come ci si aspetta. In generale, dovrebbe leggere il file di configurazione /etc/auto.master, dal quale ottenere le informazioni necessarie per sapere quali punti di innesto automatico e quali file di mappa utilizzare. In pratica, è probabile che riesca a leggere solo la prima direttiva del file /etc/auto.master.

Una volta compreso il funzionamento di automount, sta all'amministratore di sistema stabilire se sia meglio affidarsi allo script o avviare direttamente il demone ignorando il file di configurazione /etc/auto.master.

169.5.2   Mappe per l'innesto automatico dei file system

Il demone automount richiede l'indicazione di una mappa ogni volta che viene avviato. Questa mappa serve a descrivere le caratteristiche dei dischi, delle partizioni o dei file system di rete da innestare e le sottodirectory relative, utilizzate come punti di innesto.

La mappa in questione può avere varie forme, anche se nelle situazioni più comuni è rappresentata semplicemente da un file. Nel caso si tratti di file, questo può contenere dei commenti preceduti dal simbolo # e conclusi dalla fine della riga, ma può contenere anche righe vuote o bianche che vengono ignorate ugualmente; le altre righe vengono interpretate come direttive, rappresentate da record contenenti tre campi.

sottodirectory_di_innesto -opzioni {partizione|file_system_di_rete}
  1. Il primo campo rappresenta la sottodirectory, riferita al punto di innesto automatico, che viene creata automaticamente nel momento in cui viene fatto l'innesto da parte del demone. Questa sottodirectory rappresenta poi l'inizio della partizione o del file system di rete che viene a essere innestato.

  2. Il secondo campo è preceduto da un trattino (-) e serve a indicare un elenco separato da virgole delle opzioni per l'innesto della partizione o del file system di rete. Queste opzioni sono le stesse che possono essere usate con il programma mount, o che possono essere indicate nella quarta colonna del file /etc/fstab. In particolare, il tipo di file system viene indicato con l'aggiunta del prefisso fstype=.

  3. Il terzo campo serve a definire il dispositivo del disco o della partizione da innestare, oppure il nodo e la directory del file system di rete. Per questo si usa una sintassi particolare:

    :dispositivo
    
    nome_nodo:directory_condivisa
    

    In pratica, quando il terzo campo inizia con due punti verticali (:), si intende trattarsi di un dispositivo locale.

Segue la descrizione di alcuni esempi.

169.5.3   Utilizzo di «automount»

Il demone automount si occupa di seguire l'utilizzo del file system allo scopo di automatizzare l'innesto di dispositivi e di file system di rete. La sua sintassi è piuttosto complessa, pertanto viene avviato solitamente attraverso lo script autofs che a sua volta dovrebbe preoccuparsi di interpretare anche il file di configurazione /etc/auto.master.

automount [opzioni] punto_di_innesto_automatico tipo_di_mappa mappa [opzioni_di_mappa]

Il demone automount è in grado di leggere la mappa dei punti di innesto da diverse fonti, anche se di solito questa è contenuta in un file.

Se automount riceve il segnale SIGUSR1, esegue immediatamente il distacco di tutti i file system inutilizzati, che non siano impegnati in alcun modo.

Tabella 169.20. Alcune opzioni.

Opzione Descrizione
-p file
--pid-file file
Permette di specificare il nome di un file all'interno del quale automount possa inserire il numero del processo corrispondente.
-t n_secondi
--timeout n_secondi
Quando un dispositivo o un file system di rete risulta inutilizzato, la directory corrispondente viene staccata dopo lo scadere del tempo stabilito con questa opzione. Se non viene specificato diversamente, la durata di questo tempo è di cinque minuti (300 secondi).

Il demone automount richiede l'indicazione obbligatoria di alcuni argomenti; per la precisione si tratta della directory a partire dalla quale vanno inserite le sottodirectory di innesto dei vari dispositivi e file system di rete da innestare, dell'indicazione del tipo di mappa utilizzato e dell'indicazione della mappa stessa.

  1. punto_di_innesto_automatico
    

    Il primo argomento che segue le opzioni è la directory utilizzata come base per l'innesto automatico. A partire da questa vengono aggiunte automaticamente le sottodirectory di innesto in base a quanto contenuto nella mappa.

  2. tipo_di_mappa
    

    Dopo l'indicazione della directory di partenza per l'innesto automatico, deve essere indicata una parola chiave che specifica il tipo di mappa utilizzato. Nelle situazioni più comuni si utilizza un file puro e semplice, indicando la parola chiave file. Segue l'elenco di queste scelte possibili.

  3. mappa
    

    L'ultimo argomento obbligatorio è il nome della mappa. A seconda del tipo di mappa, può trattarsi del percorso di un file, oppure del nome di una tabella NIS/NIS+ o Hesiod.

L'esempio seguente avvia il demone automount in modo che utilizzi il file /etc/auto.automnt come mappa da applicare alla directory di innesto automatico /automnt/. In particolare, viene stabilito che il tempo di scadenza per i file system liberi e inutilizzati sia di 30 secondi.

automount -t 30 /automnt file /etc/auto.automnt[Invio]

169.5.4   Utilizzo di «autofs»

Esiste uno script, più o meno standardizzato, che dovrebbe facilitare l'avvio del servizio di innesto automatico: si tratta di autofs. Attraverso le parole chiave start, stop, reload e status, è possibile avviare, fermare, riavviare e consultare il servizio.

/etc/rc.d/init.d/autofs start|stop|reload|status
/etc/init.d/autofs start|stop|reload|status

Lo script autofs si avvale di un file di configurazione aggiuntivo, /etc/auto.master, all'interno del quale si dovrebbero poter indicare le directory di innesto automatico e le mappe relative (esclusivamente in forma di file). In pratica, è probabile che si possa indicare una sola directory e una sola mappa.

169.5.5   File «/etc/auto.master»

Il file di configurazione /etc/auto.master è richiesto dallo script autofs per avviare il servizio di innesto automatico. Serve a indicare le directory di innesto automatico e i file di mappa relativi.

È molto probabile che la sintassi delle direttive di questo file cambi nel tempo, tenendo conto del fatto che, nelle prime versioni di autofs, si può contare solo sul funzionamento della prima direttiva.

L'interpretazione di questo file è a carico dello script autofs, che viene riadattato da ogni distribuzione GNU/Linux. In tal senso, non si può contare su un funzionamento uniforme, almeno fino a che le cose rimangono così.

Segue la descrizione di alcuni esempi.

169.5.6   Considerazioni sulla funzionalità di «automount»

Il sistema di gestione dell'innesto automatico dei file system, attraverso il sostegno del kernel e l'uso del demone automount, è stato introdotto da poco e altrettanto pochi sono gli utenti che ne hanno fatto uso. In questo senso, è prevedibile uno sviluppo futuro con meno incertezze, soprattutto per quanto riguarda lo script autofs e il suo file di configurazione.

Per quanto riguarda l'utilità di questo sistema, è sconsigliabile il suo utilizzo per unità rimovibili che non siano servo-assistite, come nel caso dei dischetti tradizionali, che possono essere espulsi prima che il sistema li abbia staccati.

L'utilizzo più importante riguarda sicuramente i file system condivisi in rete attraverso il protocollo NFS. Anche se questo problema è prematuro, perché richiede la conoscenza del funzionamento della rete, si può intendere che sia meglio evitare di innestare sistematicamente un file system di rete all'avvio del sistema: il nodo di rete che offre il servizio potrebbe essere disattivato in quel momento, oppure potrebbe essere a sua volta in attesa di innestare un altro file system offerto dal proprio sistema locale.

169.6   Riferimenti


1) In pratica, per attribuire delle quote al file system principale, occorre reinnestarlo in una sottodirectory, con le stesse opzioni.

2) Linux quota utils   UCB BSD e GNU GPL

3) Autofs   GNU GPL


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


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

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

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory