Il mistero dei punti di mount
ArticleCategory:
UNIXBasics
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido Socher
en to it Roberto Pauletto
AboutTheAuthor:[A small biography about the author]
A Guido piace Linux perche' appartiene alla comunita'. Si tratta di
un enorme progetto e in qualche modo tutte le diverse persone nel mondo
stanno lavorando per raggiungere lo stesso scopo: renderlo migliore ogni
giorno.
Sfortunatamente Linux e' diventato cosi' importante che attrae anche le
persone cattive che cercano solo di trarne profitto senza dare nulla in
cambio. State attenti! Spesso dall'esterno sembra che si tratti di piccole
attivita' "pro-linux" ma sono solo degli opportunisti.
Abstract:
Questo articolo elabora il concetto di punti di montaggio del
filesystem (mount), ma spero che
l'articolo contenga informazioni di interesse anche per chi
non e' nuovo di Linux.
ArticleIllustration:
ArticleBody:
Introduzione
Spieghero' prima di tutto il concetto di montaggio dei filesystem,
per poi illustrare ulteriori e piu' avanzate caratteristiche.
Se pensate di essere degli esperti di Linux, allora potete iniziare a
leggere un poco piu' sotto.
Come funziona
Almeno fino ad oggi sotto windows si aveva l'inconveniente che,
aggiungendo un nuovo drive al sistema, si sfalsavano tutte le lettere
che rappresentavano i nomi dei drive fino a quel momento. Quello che
prima era il drive D: improvvisamente diventava il drive E: e questo
generava una certa confusione sia fra gli utenti che nei software stessi.
Sotto Unix questo problema non esiste poiche' tutti i dischi fisici sono
inseriti all'interno di una struttura (albero) di directory. Potete
visualizzarla digitando "mount" o "df":
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 9070728 4701180 3908768 55% /
/dev/hda3 24950428 683412 22999584 3% /home
none 257236 0 257236 0% /dev/shm
# mount
/dev/hda1 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda3 on /home type ext3 (rw)
|
Nell'esempio abbiamo due partizioni, una della quali contiene tutto
tranne la directory /home. Questa e' la partizione di root "/" ed e'
fisicamente connessa ad hda1. hda1 e' la prima partizione (1) del primo
harddisk ide (hda). La terza partizione (hda3) sullo stesso disco è
montata su /home. Quindi se vi spostate in /home avete accesso ai file
su hda3. Non dovrete mai preoccuparvi se questo ora e' D: o E: o ???.
Si tratta sempre e solo di una struttura di directory ad albero.
Il problema del "file-system busy" (filesystem occupato)
Linux conserva temporaneamente in memoria le operazioni di lettura/scrittura che effettua.
Lo potete notare quando avete dischi usb versione 1.1 e
state accedendo ad un grosso file. La prima volta l'accesso è lento ma la
seconda volta che aprite lo stesso file l'operazione è talmente veloce che la
luce del vostro dispositivo usb neanche lampeggia.
Proprio per questa caratteristica non potete semplicemente rimuovere il disco che
state usando. Dovete "smontarlo" (umount). Per i normali hard disk interni la
cosa non costituisce un problema, ma lo può diventare per i cdrom ed i dischi
USB.
Se ad esempio montate uno stick-usb sotto /mnt/usb e digitate il
comando "cd /mnt/usb" allora bash inizia ad usare questo filesystem.
Se tentate di smontarlo da una differente finestra di shell riceverete
il messaggio "file system busy" e l'operazione di smontaggio fallira'.
E' sufficiente che voi eseguiate un "cd" nuovamente per uscire dalla directory
/mnt/usb, quindi potete smontare il drive.
Il problema risiede nel fatto che talvolta ci si dimentica di chi
sta usando il filesystem e che potrebbero esserci cosi' tante applicazioni aperte che
diventa difficile trovare chi sta facendo fallire lo smontaggio.
Chiedetelo al vostro computer!
# fuser -m -u /mnt/usb
/mnt/usb: 1347c(root) 1348c(guido) 1349c(guido)
Quello che ricevete dal comando fuser è una lista di processi che stanno
ancora usando il filesystem in questione. Ora potete verificare con
"ps auxw" di chi si tratta o potete semplicemente uccidere i processi.
Fatto questo lo smontaggio con "umount" funzionera'.
Ma windows puo' farlo!?
Perche' non estrarre semplicemente lo stick-usb?, Be', i vecchi computers
basati su win 3.1 o dos potevano essere semplicemente spenti. A quei tempi
alcuni dei miei amici si lamentavano del fatto che in Linux occorreva una
operazione di chiusura del sistema (shutdown) prima di spegnere il PC.
Ma dall'avvento di win95 tutti hanno dovuto abituarsi a chiudere il sistema prima
di spegnere il computer.
Anche Linux puo' farlo!
Ci sono comunque dei modi coi i quali anche con Linux si puo' semplicemente
staccare il disco (ad esempio un disco usb). Mandrake Linux ha una funzione detta
supermount e fornisce esattamente gli stessi risultati (o problemi) di windows.
Ma non la raccomando perche' fonte di instabilita' e di file persi.
E' meglio usare gli mtools (http://mtools.linux.lu/). Gli mtools sono
un gruppo di comandi per accedere a floppy drive, stick-usb ..., in pratica
qualsiasi media rimovibile con un filesystem FAT e non avete bisogno di montare
il filesistem
Ecco il trucco:
-
Modificate /etc/mtools.conf ed aggiungete la seguente riga
drive u: file="/dev/sda1" # o sda4; alcuni stick-usb hanno una partizione
# 4 creata come predefinita dalla casa costruttrice.
- Ora NON montate /dev/sda1. Invece digitate
mdir u:
per vedere cosa c'e' nello stick-usb.
mcopy * u:
per copiare tutti i files dalla cartella corrente allo stick-usb.
mcopy u:\* .
per copiare tutti i files dallo usb-stick alla cartella corrente
(notate la \ prima del carattere jolly).
Molto facile da usare.
Consenti a chiunque di montare un filesystem
In genere dovete essere root per montare un filesystem. Per
dispositivi come cdrom o stick-usb potreste concedere a qualunque
utente il diritto di montarli. Tutto quello che dovete fare in questo
caso e' aggiungere una riga come la seguente in /etc/fstab:
# dev mount point fs type flags
/dev/sda1 /mnt/usb auto noauto,user 0 0
Questa riga fa si' che sda1 (la prima partizione sul primo disco
scsi, le unita' di memoria usb sono mappate come dischi scsi) non
debbano essere montate automaticamente in fase di avvio (noauto) e
possono essere montate/smontate da chiunque (user). Il campo FS-Type è anche
impostato ad auto cosi' che si possa montare una stick-usb formattata con vfat
o ext2 ed il corretto filesystem sarà identificato automaticamente.
Portatili e nfs
Il filesystem di rete NFS (Network File System), e' veramente valido se volete avere dei
backup centralizzati per le cartelle home di parecchi utenti.
Tutto quello che dovete fare e' montare le cartelle home da un server
centrale e tutti gli utenti avranno le loro cartelle individuali home
disponibili su tutti i computer della rete. Le stesse impostazioni e
preferenze e gli stessi dati ovunque. E' veramente ottimo.
Ma come gestire utenti mobili con i portatili? (nessun backup?)
Una volta che siete fuori dalla rete la vostra cartella home e' andata.
Una soluzione r' sempre quella di copiare tutti i dati (rsync) ma la cosa
puo' facilmente portare ad inconsistenze se non siete molto disciplinati,
e spesso non serve tutto il contenuto della cartella home. Trovo che sia
una buona soluzione quella di avere una seconda piccola cartella home con solo
le impostazioni ed i dati di cui necessito mentre sono in viaggio.
Quando montate un filesystem (qualsiasi filesystem o disco incluso nfs) su di
una cartella non vuota, il contenuto di questa cartella diventa invisibile e
voi potete vedere il filesystem montato.
Ecco la soluzione: Create un punto di montaggio per le cartelle home (/home) ed
automontate li' le diverse cartelle home quando il computer si trova in rete.
Comunque prima di montare qualsiasi cosa create un link simbolico per l'utente
che possiede il portatile verso una cartella home off-line.
/home/guido -> ../home_nonet/guido
Quando l'utente guido e' in rete allora egli vedra' la sua normale cartella home perchè
il link simbolico e' nascosto. Quando egli sara' in viaggio allora vedra'
/home_nonet/guido come sua cartella home (/home/guido).
Una soluzione molto elegante.
Conclusione
Costruire uno strato di astrazione per l'hardware ha sempre costituito uno
degli scopi di Unix. Montare/smontare filesystem/dischi e' stato uno dei
modi di raggiungere lo scopo. Una idea veramente moderna ed avanzata, sebbene
Unix sia molto piu' vecchio di altri sistemi operativi su PC.