L'automount è il processo con cui il montaggio e lo smontaggio di certi filesystem è effettuato automaticamente da un demone. Se un utente tenta di accedere a un filesystem smontato, quest'ultimo sarà montato automaticamente. Ciò è utile in particolar modo in ambienti di rete molto estesi, oppure quando si ha la necessità di avere numerosi mount incrociati anche tra poche macchine (specialmente se alcune non sono sempre attive). Inoltre, può essere molto utile per i dispositivi removibili, o per qualche altro uso, tipo un agevole passaggio tra un mount in modalità conversione ascii attivata e uno in modalità conversione ascii disattivata dello stesso filesystem dos. Se siete dei novellini di Linux e non comprendete cosa siano il mount e i demoni, fate allora riferimento a qualche documento che ne tratti.
Ci sono due diversi tipi di automounter in linux; AMD e autofs. AMD è il demone automount che funziona in maniera analoga al demone AMD del SunOS. È implementato nello spazio utente e non fa parte del kernel. Non è necessario per il kernel avere la funzionalità di automount integrata se viene eseguito il mount NFS utilizzando il demone AMD, in quanto il traffico diretto ai filesystem automontati vengono passati attraverso il sistema NFS. Autofs è un sitema più recente ed è assistito dal kernel. Questo significa che il codice del kernel che gestisce i filesystem conosce quali sono i punti di mount dei filesystem automontati. Il programma che esegue l'automount si rivolge al kernel per conoscerli. In questo mini-howto verrà descritta solo l'utility autofs.
This mini-HOWTO is Copyright Rahul Sundaram Sundaram.All rights reserved.This document is licensed under the Linux Documentation Project license.I welcome any kind of commercial distrubution but I would like to receive information regarding this.I would also help anyone willing to translate this document.If you require any exceptions to the licensing terms please contact me Rahul Sundaram. The latest version of this document is always available at the Linux Documentation website at http://tldp.org/HOWTO/mini/Automount.html.
Questo mini-HOWTO è Copyright di Rahul Sundaram. Tutti i diritti riservati. L'uso è consentito entro i termini della Linux Documentation Project license. Ogni forma di distribuzione commerciale sarà ben accetta, ma l'autore gradirebbe esserne informato. L'autore si dichiara disponibile ad aiutare chiunque nella traduzione di questo documento. Per richiedere qualsivoglia eccezione ai termini della licenza si può contattare l'autore Rahul Sundaram. La versione più recente di questo documento si può trovare sul sito web del Linux Documentation Project: http://tldp.org/HOWTO/mini/Automount.html.
Per quanto l'autore abbia fatto del suo meglio nel curare la forma di questo howto, non si ritiene responsabile per i danni derivanti dalla messa in pratica delle informazioni contenute in questo documento. È impossibile verificare che le cose funzionino con ogni configurazione, per cui è probabile che alcuni dei suggerimenti dati in questo documento possano essere non corretti o possano non funzionare su un determinato sistema. Nel caso si riscontri qualche malfunzionamento, si avvisi l'autore, che provvederà appena possibile ad apportare le correzioni necessarie.
Questo documento è fornito ``così com'è''. L'autore ha posto il massimo impegno nella sua stesura, ma l'uso delle informazioni che vi sono contenute è a proprio rischio e pericolo. In nessun caso l'autore potrà essere ritenuto responsabile per danni derivanti dall'uso del suo lavoro.
Autofs si basa su funzionalità del kernel, perciò il kernel deve essere compilato abilitandone il supporto. Tutte le versioni del kernel a partire dalla 2.2.xx supportano autofs.
Per il corretto funzionamento sono necessari anche il programma automount e i file di configurazione; usando gli rpm. La distribuzione RedHat rende questo pacchetto disponibile come parte dell'installazione.
L'installazione del package RPM dovrebbe essere abbastanza agevole, ma ci sono alcuni particolari che è meglio controllare, soprattutto se non lo si è mai fatto prima.
Ci sono due file in /etc, che si chiamano auto.master
e auto.misc
.
Un auto.master di esempio appare così:
/auto /etc/auto.misc --timeout 60
Il primo parametro non è il mount point, ma il percorso base del set di mount point (indicati dal secondo parametro). Il terzo parametro indica che i filesystem montati possono cominciare a tentare l'unmount 60 secondi dopo l'utilizzo. Si dovrà interoompere l'utilizzo del disco prima di smontarlo.
Auto.misc è un "map file". Il "map file" può avere qualsiasi nome; questo si chiama auto.misc perché originariamente controllava /misc. All'interno di auto.master possono essere definiti più "map file". Il mio auto.misc appare così:
kernel -ro,soft,intr ftp.kernel.org:/pub/linux cd -fstype=iso9660,ro :/dev/cdrom zip -fstype=auto :/dev/hdd4 floppy -fstype=vfat :/dev/fd0
La prima colonna ("chiave") indica il mount point. In questo caso potrebbe essere /auto/floppy o qualunque altro. La colonna centrale indica le opzioni; leggete la pagina man di mount per dettagli al riguardo. L'ultima colonna specifica la provenienza del filesystem. La voce "kernel" è un ipotetico mount NFS. Il simbolo : sulle altre righe indica un dispositivo locale.
Alcuni di voi avranno dato un'occhiata ai 60 secondi di timeout, pensando: c'è troppo da aspettare per poter espellere un dischetto. Magari basterebbe fare il sync del disco ed estrarlo montato, senza che nessuno se ne accorga.
Vorrei suggerire una strategia più sicura
.
Innanzitutto è possibile modificare il timeout. Ma istruire il sistema perché esegua l'unmount dopo solo 15 secondi, o qualsiasi altra impostazione, potrebbe risultare poco efficace. In base alla vostra configurazione, potreste essere in grado di lanciare semplicemente il comando umount come normale utente. Ma, in realtà, esiste un modo per ordinare al programma automount di eseguire l'unmount. Se inviate (tramite il programma kill) il segnale SIGUSR1
al processo automount, questo smonterà tutto ciò che potrà. Ma prima che si inizino a creare pulsanti per l'unmount sul desktop , c'è un piccolo problema.
Il processo automount è lanciato dall'utente root e accetta segnali solamente da root. Una delle ragioni per cui probabilmente si utilizza l'automunt è al contrario la possibilità di eseguire il mount e l'unmount senza essere root. Sarebbe semplice creare un programma C che esegua il "lavoro brutale" come suid-root. Comunque è possibile utilizzare sudo per permettere agli utenti di mandare l'opportuno segnale di kill. L'unico problema è che sudo non permette di utilizzare i sottocomandi di processo, che sarebbe necessario usare per individuare il PID corrente. Si dovrebbe invece disporre del programma killall, che permette di eseguire quanto segue:
ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automountIn alternativa si dovrebbe permettere agli utenti di mandare il segnale -SIGUSR1 a tutti i processi. Questo però potrebbe avere effetti collaterali su altri programmi: costringere il riciclo di alcuni window manager e forzare la chiusura di xemacs. È perciò sperabile che non ci siano buffer overrun in killall...
Se automount è configurato correttamente, qualunque mount point che si stia ricercando sarà disponibile al momento dell'utilizzo, anche se non lo si vede nel momento in cui non viene utilizzato. Se si sta eseguendo il browse delle directory con un programma grafico potrebbe essere necessario digitare manualmente il percorso; la maggior parte dei programmi proverà ciò che gli trasmettete, e il dispositivo verrà montato prima che sia rilevato. Sfortunatamente, l'impossibilità di scegliere tra i punti di mount disponibili, ma invisibili, è probabilmente uno dei maggiori inconvenienti di autofs. Se ciò risulta inaccettabile, modificate la configurazione del sistema (per inciso i file che terminano in .c come "configurazione").
Una soluzione che svariate persone hanno provato, è quella di creare link simbolici a ciò che automount crea una volta che sia montato. Ciò impedirà probabilmente, che il programma lamenti l'inesistenza di una directory (se il mount funziona, ovvio) ma un'elencazione disattenta di directory provocherebbe il montaggio dei filesystem.
Con il comando df
. Lo stesso si ottiene con un semplice mount
, ottenendo in più anche le opzioni utilizzate per eseguire il mount.
Questo non è un problema di automount. Il tipo di filesystem "auto" non prova a montare un filesystem come vfat se prima non è riuscito a montarlo come filesystem MS-DOS. VFAT è una estensione del filesystem FAT/MS-DOS, che permette l'utilizzo dei nomi di file lunghi.
Stando alle osservazioni di uno degli autori di mount, il programma mount è soltanto una interfaccia ad una chiamata di sistema, ed è comunque responsabilità dell'utente specificare il tipo di filesystem. Si sta valutando di far sì che mount segua una lista di filesystem da provare in un ordine ben preciso al posto dell'attuale metodo "euristico". Alcuni utenti non hanno semplicemente compilato il supporto per msdos nel kernel; questo impedisce che venga testato prima di vfat. Per la maggioranza potrebbe andare bene anche così, visto che solo pochi hanno realmente bisogno di msdos e esiste in effetti una soluzione: bisogna copiare /proc/filesystems come /etc/filesystems e editarlo per cambiare l'ordine in modo che vfat appaia prima di msdos.(Grazie Mark)
Ariel (aslinux@dsgml.com) scrive
" per far sì che mount provi vfat prima di fat, si crei o si editi il file /etc/filesystems
Si elenchi, in ordine di priorità, quale filesystem si voglia provare come 'auto'.
Si crei il file con cp /proc/filesystems /etc/filesystems.
Si editi la lista per cambiarne l'ordine. Si mettano per primi i tipi di filesystem che siano identificabili con grande sicurezza, come ext2 (che saranno quindi controllati molto rapidamente), e quindi quelli di uso più comune. Si metta vfat prima di msdos ed ecco fatto. Ci si assicuri di inserirli entrambi, nel caso si monti qualcosa che non sia vfat.
Il mio appare così:
ext2 vfat msdos iso9660
****
Io uso un timeout di 1 secondo per i dispositivi removibili. Create file map separati, in base ai timeout che vi servono.
State pensando che 1 secondo sia un grande spreco di risorse? - ma non non è così. Ricordate che il sistema smonta i dispositivi solo quando non sono più in uso.
1 secondo significa che il dispositivo sarà smontato appena non sarà più in uso..
Quindi, assicuratevi di mettere 'sync' come opzione per il floppy!
cioè:
floppy -fstype=auto,sync,user,umask=002,gid=floppy :/dev/fd0"
Questo dovrebbe rendere chiara la risposta.
/auto/cicciopippo
è in stato di mount e non riesco a fare l'unmount con kill -SIGUSR1
.
È sicuramente in uso da parte di qualcuno o qualcosa. Probabilmente neppure root è in grado di smontarlo manualmente. Se siete voi che ne avete causato il montaggio (non può essere cioè che qualcun altro lo stia usando) controllate che qualche sheell non sia posizionata sulla directory, oppure che qualche applicazione (in particolare qualcosa che possa essere entrato in quella directory, come un browser di directory) non abbia messo per così dire un piede in mezzo alla porta. Se non si riesce ad individuare chi o cosa stia effettuando il blocco, provare a utilizzare il programma fuser.
Non te lo consiglio. Se vuoi proprio usare /cicciopippo ti suggerisco piuttosto un link simbolico. Sarebbe più sicuro.
Per quanto ne sappia io, no. Prova a usare un "map file", con opzioni specifiche per le singole voci.
---timeout
al posto di --timeout
Un'altra soluzione a problemi di "timeout non funzionante" potrebbe essere aggiungere un'opzione -t time
allo script autofs.
Controlla la pagina man di mount per alcune possibili opzioni, come le impostazioni di uid=valore o umask=valore. Un'opzione che sembra essere scomparsa per il filesystem FAT è mode=valore. Spiacente. Verifica presso le persone che si occupano di mount.
Philippe Froidevaux scrive
" L'autore di autofs afferma che "non c'è modo"
un possibile hack è (ripreso dal newsgroup):
"non montate sotto /home/blauser ma sotto /mount/.auto/blauser quindi aggiungete un link /home/blauser -> /mount/.auto/blauser
ora potete entrare in /home e vedere la home degli utenti, che verrà montata non appena ci si entra;
problema: non è una soluzione così pulita e comporta un po' di lavoro per ogni utente;
un'altra soluzione sarebbe usare 'amd' al posto di 'autofs', ma amd è meno performante.
Questa è solo documentazione che vi viene offerta per attirare l'attenzione di tutti sul grande lavoro che è stato fatto con autofs, e quanto sia facile da usare. Confrontato con il precursore AMD, autofs è molto ben documentato e i suoi sviluppatori hanno tutti i miei ringraziamenti. Il copyright indicato è Transmeta, per cui non ho a disposizione una lista di nomi, per quanto Peter Anvin ne sia probabilmente il maggiore responsabile. Peter tenne anche una sessione su autofs al linuxworldexpo il 3 marzo 1999.
È possibile trovare un tutorial su autofs qui http://www.linuxhq.com/lg/issue24/nielsen.html. Provare inoltre le am-utils qui http://www.cs.columbia.edu/~ezk/am-utils.
Non sono stato in grado di reperire informazioni al riguardo. Fatemi sapere se per caso trovate qualcosa.
Desidero ringraziare Don (l'indirizzo email non sembra più valido), autore della prima stesura di questo mini-Howto.Ringrazio Ariel per la sua risposta in merito alla questione "win95 vfat".Ringrazio i miei amici per il loro appoggio e chiunque si sia dimostrato abbastanza paziente mentre completavo questo lavoro. Vi prego di scrivermi qui Rahul Sundaram per ogni suggerimento, miglioramento o nel caso abbiate qualche idea brillante. Scrivetemi se disponete di qualche buon tutorial o di materiale che io possa inserire in questo documento. Grazie fin d'ora. Dedico questo lavoro ai miei defunti genitori Mr.V.Sundaram e Mrs.S.Soundara Sundaram.