Come montare e smontare i dispositivi di archiviazione dal terminale Linux

  • Dave McKay

    @TheGurkha

  • Updated May 28, 2019, 5:15pm EDT
Fatmawati Achmad Zaenuri/.com

I sistemi di file in Linux e nei sistemi operativi Unix-like come macOS possono essere montati, smontati e rimontati usando il terminale. Questo è uno strumento potente e versatile: ecco tutto quello che dovete sapere.

Il file system di Linux

I file system di Linux, macOS e altri sistemi operativi Unix-like non usano identificatori di volume separati per i dispositivi di archiviazione come fa, per esempio, Windows. Windows assegna ad ogni volume una lettera di unità come C: o D: e il file system per ogni volume è un albero di directory sotto quella lettera di unità.

In Linux, il file system è un albero di directory all-in-one. Un dispositivo di archiviazione montato ha il suo file system innestato su quell’albero in modo che sembri essere parte integrante di un file system coesivo. Il nuovo file system montato sarà accessibile tramite la directory in cui è montato. Quella directory è chiamata punto di montaggio per quel file system.

Pubblicità

Molti file system sono montati automaticamente all’avvio o al volo come volumi di memoria collegati al computer durante l’esecuzione. Gli amministratori di sistema prudenti possono disattivare le funzioni di montaggio automatico in runtime in modo da poter controllare le connessioni al sistema.

Questo significa che i dispositivi di archiviazione collegati durante il runtime potrebbero non essere montati automaticamente e richiedere il montaggio manuale. Montare un file system manualmente permette di prendere decisioni su quel file system, come ad esempio dove sarà il punto di montaggio e se il file system sarà di sola lettura o di lettura-scrittura.

Che sia per necessità o per scelta, i comandi mountumount e remount vi danno la possibilità di prendere il controllo di questo importante aspetto del vostro sistema Linux.

Interrogate il vostro file system con mount

Mount ha molte opzioni, ma per elencare tutti i file system montati sul vostro computer non richiede alcuna opzione. Digita semplicemente mount e premi Invio:

Pubblicità

mount elencherà tutti i file system collegati nella finestra del terminale.

Può essere difficile scegliere tra questa montagna di dati per trovare quello che stai cercando.

Puoi raffinare l’output chiedendo a mount di elencare solo i file system che ti interessano. L’opzione -t (type) dice a mount quale tipo di file system segnalare.

mount -t tmpfs
mount -t ext4

Come esempio, abbiamo chiesto a mount di elencare solo tmpfs file system. Otteniamo un output molto più gestibile.

Pubblicità

Un tmpfs file system appare come se fosse un normale file system montato, ma in realtà è memorizzato nella memoria volatile – tmp sta per temporary – invece che su un dispositivo di memorizzazione persistente.

Si dovrà sostituire il parametro tmpfs con il tipo di file a cui si è interessati.

Abbiamo anche emesso un comando per elencare ext4 file system. Su questo computer di prova, c’è un solo ext4 file system, è sul dispositivo sda-il primo dispositivo di archiviazione montato, di solito il disco rigido principale-e montato su /, che è la radice dell’albero del file system.

Gli altri indicatori significano:

  • rw: Il file system è leggibile e scrivibile.
  • relatime: Il kernel sta usando uno schema ottimizzato per registrare i metadati di accesso e modifica dei file.
  • errors=remount -o: Se viene rilevato un errore sufficientemente grave, il file system verrà rimontato in modalità di sola lettura per consentire la diagnosi.

RELATO: Quale File System Linux dovresti usare?

Interroga il tuo File System con df

Il comando df può anche essere usato per visualizzare quali file system sono montati e dove sono i loro punti di mount.

Pubblicità

df usato senza parametri dà lo stesso problema di sovraccarico di informazioni di mount. Per esempio, in Ubuntu Linux, c’è un squashfs sistema di pseudo-file creato per ogni applicazione che è stata installata utilizzando il snap comando. Chi vuole vederli tutti?

Per forzare df ad ignorarli – o qualsiasi altro tipo di file system – usate l’opzione -x (exclude):

df -x squashfs

Si possono facilmente vedere i nomi dei file system, le loro capacità, lo spazio usato e libero, e i loro punti di montaggio.

RELATO: Come visualizzare lo spazio libero su disco e l’utilizzo del disco dal terminale Linux

Rimontare tutti i file system in fstab

Tutti i file system montati all’avvio hanno voci in un file chiamato fstab, che è la tabella dei file system situata all’interno di /etc.

Pubblicità

È possibile utilizzare mount per forzare un “refresh” e rimontare tutti i file system elencati in fstab. In condizioni operative normali questo non è necessario. Diventa davvero utile se si hanno problemi con più file system.

Avrete bisogno di usare sudo, quindi vi verrà richiesta la vostra password.

sudo mount -a

Indubbiamente, su un computer che funziona correttamente, è un po’ insignificante.

Su un computer con problemi di file system, tuttavia, il rimontaggio potrebbe cancellare i problemi. Se ciò non accade, almeno si otterranno messaggi diagnostici sullo schermo e nei log di sistema che vi guideranno a cercare la causa del problema.

RELATO: Cos’è il file fstab di Linux, e come funziona?

Montaggio di un’immagine ISO

È facile montare un’immagine ISO in modo da poter accedere al suo contenuto come parte del file system.

Pubblicità

Questo funziona con qualsiasi immagine ISO. In questo esempio, ci è capitato di usare una ISO di Tiny Core Linux perché è convenientemente piccola e veloce da scaricare. (Una piccola distribuzione Linux con una GUI, in 18 MB! Probabilmente avete file .mp3 più grandi di questo.)

Nella stessa directory dell’immagine ISO, eseguite questo comando. Sostituisci il nome del file ISO che stai montando.

sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt

Perché dobbiamo usare sudo dovrai inserire la tua password.

Pubblicità

L’opzione -t (tipo) dice mount che tipo di file system stiamo montando. È un file ISO, quindi forniamo l’opzione iso9660 type specifier.

Il flag -o (options) è usato per passare parametri extra a mount. Il nostro parametro è loop.

Utilizziamo loop per forzare mount ad utilizzare un file di dispositivo di loop per connettersi alla nostra immagine ISO. Un file di dispositivo in loop permette ad un file (come l’immagine ISO) di essere montato e trattato come se fosse un dispositivo di archiviazione.

I file di dispositivo sono file speciali utilizzati come interfaccia in modo che i dispositivi collegati appaiano come se fossero un normale file di file system. Questo fa parte della filosofia di progettazione “tutto in Linux è un file”.

Pubblicità

Ci sono molti tipi diversi di file di dispositivo. Ne abbiamo visto uno prima quando abbiamo notato che l’unico ext4 file system su questa macchina di prova era montato su / ed era chiamato sda.

Per essere più precisi, quel ext4 file system è su un dispositivo di archiviazione collegato al file system attraverso il file di dispositivo /dev/sda e il file system su quel dispositivo di archiviazione montato a /.

Dobbiamo fornire il nome dell’immagine ISO, naturalmente, e dobbiamo far sapere a mount dove vogliamo che sia montato il file system. Abbiamo scelto /mnt.

Pubblicità

L’immagine ISO è montata. Un promemoria che le immagini ISO sono sempre montate in modalità di sola lettura appare nella finestra del terminale.

Esplorare l’immagine ISO

Ora che è montata possiamo navigare le directory nell’immagine ISO allo stesso modo di qualsiasi altra parte del file system. Elenchiamo i file nell’immagine ISO. E’ montata a /mnt ricorda.

ls /mnt
ls /mnt/cde/

Smontare l’immagine ISO

Per smontare un file system montato, usare il comando umount. Si noti che non c’è una “n” tra la “u” e la “m” – il comando è umount e non “unmount.”

Si deve dire umount quale file system si sta smontando. Fatelo fornendo il punto di montaggio del file system.

sudo umount /mnt

Nessuna notizia è una buona notizia. Se non c’è nulla da segnalare, allora tutto è andato bene.

Creare un punto di montaggio

Puoi creare e usare i tuoi punti di montaggio. Ne creeremo uno chiamato isomnt e monteremo la nostra immagine ISO su quello. Un punto di montaggio è solo una directory. Quindi possiamo usare mkdir per creare il nostro nuovo punto di montaggio.

sudo mkdir /media/dave/isomnt
Pubblicità

Ora possiamo usare lo stesso formato di comando di prima per montare la nostra immagine ISO. Questa volta non la monteremo su /mnt, la monteremo su /media/dave/isomnt/:

sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/

Ora possiamo accedere al file system montato dal nostro nuovo punto di montaggio.

ls /media/dave/isomnt/cde/optional

Ma questi percorsi stanno diventando molto lunghi. Sta diventando rapidamente noioso. Facciamo qualcosa al riguardo.

Binding a Mount Point

Si può legare un punto di montaggio ad un’altra directory. Si può quindi accedere al file system montato sia attraverso il punto di montaggio originale che attraverso la directory che è legata ad esso.

Pubblicità

Ecco un esempio funzionante. Creeremo una directory nella nostra home directory chiamata iso. Poi legheremo il punto di montaggio dell’immagine ISO /media/dave/isomnt alla nuova iso directory nella nostra home directory.

Potremo accedere all’immagine ISO attraverso il punto di montaggio originale /media/dave/isomnt e attraverso la nuova iso directory. L’opzione -B (bind) richiede il nome del punto di montaggio e il nome della directory a cui legarlo.

mkdir iso
sudo mount -B /media/dave/isomnt/ iso
ls iso
ls /media/dave/isomnt
cd iso
ls
cd cde

Usare umount con i binding

Un file system che ha il suo punto di mount legato ad un’altra directory richiede lo smontaggio dal suo punto di mount e dal punto di bind.

Pubblicità

Anche se smontiamo il file system dal suo punto di montaggio originale, è ancora possibile accedere al file system dalla sua directory vincolata. Il file system deve essere smontato anche da quella directory.

sudo umount /media/dave/isomnt
ls iso 
sudo umount iso
ls iso

Montaggio di un floppy disk

Un floppy drive (con un floppy disk al suo interno) è un dispositivo di memorizzazione. Questo significa che un file sd (per dispositivo di memorizzazione) sarà usato per connettersi al dispositivo fisico. Dobbiamo stabilire qual è il prossimo file di dispositivo sd libero. Possiamo farlo passando l’output di df attraverso grep e cercando le voci con “sd” in esse.

df | grep /dev/sd

Su questo computer, c’è un solo file di dispositivo sd in uso. Questo è /dev/sda. Il prossimo file di dispositivo sd emesso sarà /dev/sdb. Ciò significa che quando colleghiamo il floppy drive al computer, Linux userà /dev/sdb per connettersi al floppy drive.

Diremo a mount di montare il file system del dischetto nel drive floppy che è collegato a /dev/sdb al punto di montaggio /mnt.

Pubblicità

Inserire il dischetto nell’unità floppy e collegare l’unità floppy a una porta USB del computer. Lancia il seguente comando:

sudo mount /dev/sdb /mnt

Etichette del file system

Possiamo usare l’opzione -l (label) con mount per scoprire quale etichetta, se esiste, è attaccata a un file system. Le etichette non sono altro che nomi arbitrari. Non hanno alcuno scopo funzionale.

Utilizziamo l’opzione -t (tipo) per chiedere a mount di segnalare solo i file system vfat.

mount -l -t vfat

Troverete l’etichetta tra parentesi quadre alla fine dell’elenco. L’etichetta di questa unità floppy è NORTUN.

Pubblicità

Possiamo accedere all’unità floppy attraverso il /mnt punto di montaggio.

cd /mnt
ls
ls -l AMATCH.C

Il floppy contiene file di codice sorgente in linguaggio C. Il timbro della data di un file mostra che è stato modificato l’ultima volta nell’ottobre 1992. Probabilmente è più vecchio di molti dei nostri lettori. (Inutile dire che il significato di NORTUN come etichetta si perde nella notte dei tempi.)

Se ripetiamo il nostro df piped through grep comando per elencare i file del dispositivo sd, vedremo che ora ce ne sono due.

df | grep /dev/sd

Il nostro disco floppy è mostrato come montato su /dev/sdb come ci aspettavamo. Il file system sul disco floppy nel drive è montato su /mnt .

Pubblicità

Per smontare il floppy usiamo umount e gli passiamo il file di dispositivo come parametro.

sudo umount /dev/sdb

L’opzione umount Lazy

Cosa succede se voi (o un altro utente) state usando il file system quando provate a smontarlo? Lo smontaggio fallirà.

sudo umount /dev/sdb

Ha fallito perché la directory di lavoro corrente dell’utente è all’interno del file system che sta cercando di smontare. Linux è abbastanza intelligente da non permettervi di segare il ramo su cui siete seduti.

Per superare questo problema usate l’opzione -l (lazy). Questo fa sì che umount aspetti fino a quando il file system può essere smontato in sicurezza.

sudo umount -l /dev/sdb
ls
cd ~
ls /mnt
Pubblicità

Anche se il comando umount viene rilasciato, il file system è ancora montato, e l’utente può elencare i file normalmente.

Non appena l’utente cambia directory nella propria home directory, il file system del floppy viene rilasciato e smontato. Cercare di elencare i file in /mnt non produce alcun risultato.

Montaggio di una condivisione Samba

Samba è un insieme di servizi software che permettono di accedere alle condivisioni di rete in modo intercambiabile tra sistemi operativi Linux e Unix-like, e sistemi operativi Windows.

Impostare Samba va oltre lo scopo di questo articolo. Ma, se avete accesso autorizzato a una condivisione Samba che vi è stata messa a disposizione, ecco come potete montarla in Linux.

Pubblicità

Un Raspberry Pi connesso alla stessa rete della macchina di prova ha una condivisione Samba. Si tratta di una directory chiamata Backup che ha dato il nome Samba di “share”. Facciamo una connessione SSH ad essa e guardiamo il contenuto della directory condivisa. La directory condivisa è su una chiavetta USB montata sul Pi.

Il nome utente è pi e il nome di rete del Raspberry Pi è marineville.local.

ssh [email protected]
ls /media/pi/USB64/Backup
exit

L’utente emette il comando SSH e gli viene richiesta la password del Raspberry Pi. Il prompt della finestra del terminale cambia in pi@marineville perché è collegato al Raspberry Pi.

Pubblicità

Esse elenca il contenuto della directory condivisa a /media/pi/USB64/Backup . Il contenuto sono due directory, una chiamata dave e una chiamata pat. Così ora sappiamo cosa aspettarci quando montiamo la condivisione Samba.

Si digita exit per disconnettersi dal Raspberry Pi e il prompt cambia nuovamente in dave@howtogeek.

Per usare Samba, dovete installare il pacchetto cifs-utils.

Utilizzate apt-get per installare questo pacchetto sul vostro sistema se state usando Ubuntu o un’altra distribuzione basata su Debian. Su altre distribuzioni Linux, utilizzate invece lo strumento di gestione dei pacchetti della vostra distribuzione Linux.

sudo apt-get install cifs-utils

Quando l’installazione è completata, montate la condivisione con un comando come il seguente, cambiando l’indirizzo IP, il nome della condivisione e il punto di montaggio (che deve già esistere) in base alle vostre circostanze.

sudo mount -t cifs -o credentials=/etc/samba/creds,uid=1000,gid=1000 //192.168.4.13/share /media/dave/NAS

Sottolineiamo le parti di questo comando.

  • -t cifs: Il tipo di file system è cifs.
  • -o credentials=/etc/samba/creds,uid=1000,gid=1000: I parametri delle opzioni sono il percorso di un file chiamato creds che è protetto e contiene il nome utente e la password dell’utente Raspberry Pi; l’ID utente (UID) e l’ID gruppo (GID) che sono usati per impostare il proprietario e il gruppo della root del file system.
  • //192.168.4.13/share: La posizione di rete del dispositivo con la condivisione Samba su di esso, e il nome Samba della directory condivisa. La radice della condivisione è una directory chiamata Backup, ma il suo nome di condivisione Samba è impostato su share.
  • /media/dave/NAS: Il nome del punto di montaggio. È necessario creare il punto di montaggio in anticipo.

Pubblicità

Accedendo al nostro punto di montaggio a /media/dave/NAS stiamo accedendo alla directory condivisa sul Raspberry Pi attraverso la rete. Possiamo vedere le due cartelle sul Raspberry Pi chiamate dave e pat.

cd /media/dave/NAS

Creazione e montaggio di un file system

Si può usare il comando dd per creare un file immagine, poi usare mkfs per creare un file system al suo interno. Quel file system può poi essere montato. Questo è un buon modo per fare pratica e sperimentare con mount.

Utilizziamo l’opzione if (file di input) per dire a dd di usare il flusso di valori zero da /dev/zero come file di input.

Il of (file di output) è un nuovo file chiamato geek_fs.

Pubblicità

Utilizziamo l’opzione bs (block size) per richiedere una dimensione del blocco di 1 MB.

Utilizziamo l’opzione count per dire a dd di includere 20 blocchi nel file di output.

dd if=/dev/zero of./geek_fs bs=1M count=20

Questo crea il nostro file immagine. Non contiene altro che valori zero.

Possiamo creare un file system funzionante all’interno del file geek_fs usando il comando mkfs. L’opzione -t (type) ci permette di selezionare il tipo di file system. Stiamo creando un ext4 sistema.

mkfs -t ext4 ./geek_fs
Pubblicità

Questo è tutto ciò che serve per avere un file system funzionante.

Montiamolo su /media/dave/geek e poi usiamo chown per impostare le proprietà del proprietario e del gruppo per consentirne l’accesso.

sudo mount ./geek_fs /media/dave/geek
sudo chown dave:users /media/dave/geek

Funziona? Cambiamo nel nuovo file system e copiamo un file per vedere.

cd /media/dave/geek
cp /etc/fstab . 
ls -l

Siamo riusciti a cambiare directory nel nuovo file system, e abbiamo fatto una copia del file /etc/fstab. Funziona!

Pubblicità

Se usiamo mount per elencare i file system montati ma limitiamo il suo output ai file system ext4 usando l’opzione -t (tipo), vedremo che ora ci sono due file system ext4 montati.

mount -t ext4

Rimontare un file system

Rimontare un file system usa l’opzione -o remount. È tipicamente fatto per cambiare un file system da uno stato di sola lettura (test) ad uno stato di lettura-scrittura (produzione).

Montiamo di nuovo il nostro floppy drive. Questa volta useremo il flag -r (sola lettura). Poi faremo un pipe mount attraverso grep e guarderemo i dettagli del file system del floppy.

sudo mount -r /dev/sdb /mnt
mount | grep /mnt

Come potete vedere il ro evidenziato indica che il file system è montato in sola lettura.

Pubblicità

Utilizzando l’opzione -o remount con il flag rw (read-write) possiamo smontare e rimontare il file system con le nuove impostazioni, tutto in un solo comando.

sudo mount -o remount,rw /mnt

Ripetendo il piping di mount attraverso grep ci mostra che il ro è stato sostituito da rw (evidenziato). Il file system è ora in modalità lettura-scrittura.

mount | grep /mnt

(Non) Spostare un file system

Si poteva smontare un file system e rimontarlo su un altro punto di montaggio con un solo comando.

L’opzione -M (move) in mount esiste specificamente per permettervi di farlo. Ma non funziona più nelle distribuzioni Linux che sono passate a systemd. E questa è la maggior parte dei grandi nomi.

Pubblicità

Se proviamo a spostare un file system da /mnt a ./geek, fallisce e dà il messaggio di errore mostrato sotto. Cercando di elencare i file nel sistema dei file attraverso ./geek non si ottengono risultati.

sudo mount -M /mnt ./geek
ls ./geek

Il workaround è usare l’opzione -B (bind) che abbiamo usato prima per legare il punto di mount originale al nuovo punto di mount.

sudo mount -B /mnt ./geek
ls ./geek

Oltre a non liberare il punto di montaggio originale, questo avrà lo stesso risultato pratico.

Osservazioni finali

Utilizzando l’opzione --make-private è stato possibile forzare lo spostamento su systemd versioni di Linux. Questa tecnica non è presentata qui per due motivi.

  1. Può avere un comportamento imprevedibile.
  2. Non era persistente e avrebbe dovuto ripetersi ad ogni riavvio.
Pubblicità

Devuan Linux usa SysV init non systemd. Un computer è stato caricato con l’ultima versione di Devuan e testato. L’opzione -M (sposta) ha funzionato come previsto su quel sistema.

A parte i problemi systemd con l’opzione -M (move), dovreste trovare l’uso di mount e umount semplice. Questi sono ottimi comandi da avere nella manica quando ci si trova di fronte a un sistema danneggiato, e si deve iniziare a rimettere insieme i pezzi del file system a mano.

Dave McKay
Dave McKay ha usato i computer per la prima volta quando il nastro di carta perforato era in voga, e da allora ha sempre programmato. Dopo oltre 30 anni nell’industria informatica, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, come manager di un team internazionale di sviluppo software, come project manager di servizi IT e, più recentemente, come Data Protection Officer. Dave è un evangelista di Linux e un sostenitore dell’open source.Read Full Bio”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *