Come montare e smontare i dispositivi di archiviazione dal terminale Linux

I file system in sistemi operativi Linux e Unix come macOS possono essere montati, smontati e rimontati utilizzando il terminale. Questo è uno strumento potente e versatile: ecco tutto ciò che devi sapere.

Il file system Linux

I file system in Linux, macOS e altri sistemi operativi simili a Unix non utilizzano identificatori di volume separati per i dispositivi di archiviazione nel modo in cui, ad esempio, fa Windows. Windows assegna a ogni volume una lettera di unità come C: o D: e il file system per ogni volume è un albero di directory che si trova 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 file system appena montato sarà accessibile tramite la directory in cui è montato. Quella directory è chiamata punto di montaggio per quel file system.

Molti file system vengono montati automaticamente al momento dell'avvio o al volo come volumi di archiviazione collegati al computer durante il runtime. Gli amministratori di sistema cauti possono disattivare le funzionalità di montaggio automatico del runtime in modo da poter controllare le connessioni al sistema.

Ciò significa che i dispositivi di archiviazione collegati durante il runtime potrebbero non essere montati automaticamente e richiederanno il montaggio manuale. Il montaggio manuale di un file system consente di prendere decisioni su quel file system, ad esempio dove sarà il punto di montaggio e se il file system sarà di sola lettura o di lettura-scrittura.

Sia che si tratti per necessità o per scelta, i mount, umounte remountcomandi offrono la possibilità di prendere il controllo di questo importante aspetto del vostro sistema Linux.

Interroga il tuo file system con mount

Mount ha molte opzioni, ma elencare tutti i file system montati sul tuo computer non richiede alcuna opzione. Basta digitare mounte premere Invio:

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

Può essere difficile selezionare quel dump di dati per trovare quello che stai cercando.

Puoi affinare l'output chiedendo mountdi elencare solo i file system di tuo interesse. L' -topzione (tipo) indica su  mountquale tipo di file system eseguire il report.

mount -t tmpfs
mount -t ext4

Ad esempio, abbiamo chiesto mountdi elencare solo i  tmpfsfile system. Otteniamo un output molto più gestibile.

Un  tmpfsfile system appare come se fosse un normale file system montato, ma in realtà è archiviato nella memoria volatile ( tmp sta per temporaneo) invece che su un dispositivo di archiviazione persistente.

Ti consigliamo di sostituire il tmpfsparametro per il tipo di file a cui sei interessato.

Abbiamo anche emesso un comando per elencare i ext4file system. Su questo computer di prova è presente un unico ext4file system, si trova sul dispositivo sda- il primo dispositivo di archiviazione montato, di solito il disco rigido principale - e su /cui è montato , che è la radice dell'albero del file system.

Gli altri indicatori significano:

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

CORRELATO: Quale file system Linux dovresti usare?

Interroga il tuo file system con df

Il dfcomando può essere utilizzato anche per visualizzare quali file system sono montati e dove si trovano i loro punti di montaggio.

df utilizzato senza parametri offre lo stesso problema di sovraccarico di informazioni di mount. Ad esempio, in Ubuntu Linux, esiste uno squashfspseudo-file system creato per ogni singola applicazione che è stata installata utilizzando il snapcomando. Chi vuole vedere tutti quelli?

Per forzare dfa ignorarli, o qualsiasi altro tipo di file system, utilizzare l' -xopzione (escludi):

df -x squashfs

È possibile visualizzare facilmente i nomi dei file system, le loro capacità, lo spazio utilizzato e libero ei relativi punti di montaggio.

CORRELATO: Come visualizzare lo spazio libero su disco e l'utilizzo del disco dal terminale Linux

Rimontaggio di tutti i file system in fstab

Tutti i file system montati all'avvio hanno voci in un file chiamato fstab, che è la tabella del file system che si trova all'interno /etc.

È possibile utilizzare mountper forzare un "aggiornamento" e rimontare tutti i file system elencati in fstab. In condizioni operative normali ciò non è richiesto. Funziona davvero se hai problemi con più file system.

Dovrai usare sudo, quindi ti verrà richiesta la password.

sudo mount -a

Certo, su un computer che funziona correttamente, è un po 'deludente.

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

CORRELATO: Cos'è il file fstab di Linux e come funziona?

Montaggio di un'immagine ISO

È facile montare un'immagine ISO in modo da poter accedere ai suoi contenuti come parte del file system.

Funzionerà con qualsiasi immagine ISO. In questo esempio, ci capita di utilizzare una ISO Linux Tiny Core perché è convenientemente piccola e veloce da scaricare. (Una piccola distribuzione Linux con una GUI, in 18 MB! Probabilmente hai file .mp3 più grandi di quello.)

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

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

Poiché abbiamo bisogno di usare sudo, dovrai inserire la tua password.

L' -topzione (tipo) indica il mounttipo di file system che stiamo montando. È un file ISO, quindi forniamo l'identificatore del iso9660tipo.

Il -oflag (opzioni) viene utilizzato per passare parametri aggiuntivi a mount. Il nostro parametro è loop.

Stiamo usando  loopper forzare mountl'uso di un file di dispositivo in loop per connetterci alla nostra immagine ISO. Un file di dispositivo loop consente a un file (come l'immagine ISO) di essere montato e trattato come se fosse un dispositivo di archiviazione.

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

Esistono molti tipi diversi di file di dispositivo. Ne abbiamo visto uno in precedenza quando abbiamo notato che l'unico ext4file system su questa macchina di prova era montato /ed era stato chiamato sda.

Per essere più precisi, quel ext4file system si trova su un dispositivo di archiviazione connesso al file system tramite il /dev/sda file del  dispositivo e il file system su quel dispositivo di archiviazione montato su /.

Ovviamente dobbiamo fornire il nome dell'immagine ISO e dobbiamo far mountsapere dove vorremmo montare il file system. Abbiamo scelto /mnt.

L'immagine ISO è montata. Nella finestra del terminale viene visualizzato un promemoria che le immagini ISO sono sempre montate in modalità di sola lettura.

Esplorazione dell'immagine ISO

Ora che è montato possiamo navigare nelle directory dell'immagine ISO allo stesso modo di qualsiasi altra parte del file system. Elenchiamo i file nell'immagine ISO. È montato a /mnt ricordare.

ls / mnt
ls / mnt / cde /

Smontaggio dell'immagine ISO

Per smontare un file system montato, utilizzare il umountcomando. Nota che non c'è una "n" tra la "u" e la "m": il comando è umount e non "smonta".

Devi dire umountquale file system stai smontando. Fallo fornendo il punto di montaggio del file system.

sudo umount / mnt

Nessuna notizia è una buona notizia. Se non c'è niente da segnalare, è andato tutto bene.

Creazione di un punto di montaggio

È possibile creare e utilizzare i propri punti di montaggio. Ne creeremo uno chiamato isomnte monteremo la nostra immagine ISO su quello. Un punto di montaggio è solo una directory. Quindi possiamo usare mkdirper creare il nostro nuovo punto di montaggio.

sudo mkdir / media / dave / isomnt

Ora possiamo usare lo stesso formato di comando di prima per montare la nostra immagine ISO. Questa volta non lo monteremo /mnt, lo 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 / opzionale

Ma quei percorsi stanno diventando molto lunghi. Diventerà presto noioso. Facciamo qualcosa al riguardo.

Vincolare un punto di montaggio

È possibile associare un punto di montaggio a un'altra directory. È quindi possibile accedere al file system montato tramite il punto di montaggio originale o tramite la directory ad esso associata.

Ecco un esempio funzionante. Creeremo una directory nella nostra home directory chiamata iso. Quindi legheremo il punto di montaggio dell'immagine ISO /media/dave/isomntalla nuova isodirectory nella nostra directory home.

Potremo accedere all'immagine ISO tramite il punto di montaggio originale /media/dave/isomnte attraverso la nuova isodirectory. L' -Bopzione (bind) richiede il nome del punto di montaggio e il nome della directory a cui collegarlo.

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

Utilizzo di umount con binding

Un file system il cui punto di montaggio è stato associato a un'altra directory richiede lo smontaggio dal punto di montaggio e dal punto di associazione.

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

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

Montaggio di un floppy disk

Un'unità floppy (con un disco floppy al suo interno) è un dispositivo di archiviazione. Ciò significa che verrà utilizzato un file di dispositivo sd (per dispositivo di archiviazione) per connettersi al dispositivo fisico. Dobbiamo stabilire qual è il prossimo file di dispositivo SD gratuito. Possiamo farlo collegando l'output di dfthrough grepe cercando le voci con "sd" al loro interno.

df | grep / dev / sd

Su questo computer è in uso un singolo file di dispositivo SD. Questo è /dev/sda. Il prossimo file di dispositivo SD emesso sarà /dev/sdb. Ciò significa che quando colleghiamo l'unità floppy al computer, Linux utilizzerà /dev/sdbper connettersi all'unità floppy.

Diremo mountdi montare il file system sul disco floppy nell'unità floppy a cui è collegato /dev/sdbil /mntpunto di montaggio.

Inserire il disco floppy nell'unità floppy e collegare l'unità floppy a una porta USB del computer. Emetti il ​​seguente comando:

sudo mount / dev / sdb / mnt

Etichette del file system

Possiamo usare l' -lopzione (label) con mountper scoprire quale etichetta, se presente, è allegata a un file system. Le etichette non sono altro che nomi arbitrari. Non hanno scopo funzionale.

Stiamo utilizzando l' -topzione (tipo) per chiedere  mountdi segnalare vfatsolo i file system.

mount -l -t vfat

Troverai l'etichetta tra parentesi quadre alla fine dell'elenco. L'etichetta per questa unità floppy è NORTUN.

Possiamo accedere all'unità floppy tramite il /mntpunto 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 comando df piped through grepper elencare i file del dispositivo sd, vedremo che ora ce ne sono due.

df | grep / dev / sd

Il nostro floppy drive si mostra montato /dev/sdbcome previsto. Il file system sul disco floppy nell'unità è montato su /mnt.

Per smontare il floppy usiamo umounte gli passiamo il file del dispositivo come parametro.

sudo umount / dev / sdb

L'umount Lazy Option

Cosa succede se tu (o un altro utente) utilizzi il file system quando provi a smontarlo? Lo smontaggio fallirà.

sudo umount / dev / sdb

Non è riuscito perché la directory di lavoro corrente dell'utente si trova all'interno del file system che sta tentando di smontare. Linux è abbastanza intelligente da non lasciarti segare dal ramo su cui sei seduto.

Per ovviare a questo, utilizzare l' -lopzione (pigro). Ciò causa umountl'attesa fino a quando il file system non è in grado di essere smontato in modo sicuro.

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

Anche se il umountcomando viene emesso, il file system è ancora montato e l'utente può elencare i file normalmente.

Non appena l'utente cambia la directory nella directory home, il file system floppy viene rilasciato e viene smontato. Il tentativo di elencare i file in /mntnon produce risultati.

Montaggio di una condivisione Samba

Samba è un insieme di servizi software che consentono l'accesso alle condivisioni di rete in modo intercambiabile tra sistemi operativi Linux e Unix e sistemi operativi Windows.

La configurazione di Samba va oltre lo scopo di questo articolo. Ma, se hai accesso autorizzato a una condivisione Samba che ti è stata resa disponibile, è così che puoi montarla in Linux.

Un Raspberry Pi connesso alla stessa rete della macchina di prova ha una condivisione Samba su di esso. È una directory chiamata Backup che ha dato il nome Samba di "share". Facciamo una connessione SSH ad esso e guardiamo il contenuto della directory condivisa. La directory condivisa si trova su una chiavetta USB montata sul Pi.

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

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

L'utente emette il SSHcomando e gli viene richiesta la password del Raspberry Pi.

Forniscono la password e vengono autenticati. Il prompt della finestra del terminale cambia in [email protected]perché è connesso al Raspberry Pi.

Elenca il contenuto della directory condivisa in /media/pi/USB64/Backup. I contenuti sono due directory, una chiamata davee una chiamata pat. Quindi ora sappiamo cosa aspettarci quando montiamo la condivisione Samba.

Digitano exitper disconnettersi dal Raspberry Pi e il prompt torna a [email protected].

Per usare Samba, devi installare il cifs-utilspacchetto.

Utilizzalo apt-getper installare questo pacchetto sul tuo sistema se stai usando Ubuntu o un'altra distribuzione basata su Debian. Su altre distribuzioni Linux, utilizza invece lo strumento di gestione dei pacchetti della tua distribuzione Linux.

sudo apt-get install cifs-utils

Quando l'installazione è completata, monta 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 tue circostanze.

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

Analizziamo le parti di quel 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 credsche è protetto e contiene il nome utente e la password per l'utente Raspberry Pi; l'ID utente (UID) e l'ID gruppo (GID) utilizzati per impostare il proprietario e il gruppo della radice del file system.
  • //192.168.4.13/share : il percorso 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 nome della condivisione Samba è impostato su share.
  • / media / dave / NAS : il nome del punto di montaggio. È necessario creare in anticipo il punto di montaggio.

Accedendo al nostro punto di montaggio in /media/dave/NASstiamo accedendo alla directory condivisa sul Raspberry Pi attraverso la rete. Possiamo vedere le due cartelle sul Raspberry Pi chiamate davee pat.

cd / media / dave / NAS

Creazione e montaggio di un file system

È possibile utilizzare il ddcomando per creare un file immagine, quindi utilizzare mkfsper creare un file system al suo interno. Quel file system può quindi essere montato. Questo è un buon modo per esercitarsi e sperimentare mount.

Usiamo l' ifopzione (file di input) per indicare dddi utilizzare il flusso di valori zero da /dev/zerocome file di input.

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

Stiamo utilizzando l'  bsopzione (dimensione del blocco) per richiedere una dimensione del blocco di 1 MB.

Usiamo l' countopzione per dire dddi includere 20 blocchi nel file di output.

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

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

Possiamo creare un file system funzionante all'interno del geek_fsfile utilizzando il mkfscomando. L' -topzione (tipo) ci consente di selezionare il tipo di file system . Stiamo creando un ext4sistema.

mkfs -t ext4 ./geek_fs

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

Montiamolo su /media/dave/geek e quindi usiamo chown per impostare il proprietario e le proprietà del gruppo per consentire l'accesso ad esso.

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

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

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

Siamo stati in grado di cambiare la directory nel nuovo file system e abbiamo creato con successo una copia del /etc/fstabfile. Sta funzionando!

Se usiamo mountper elencare i file system montati ma limitiamo il suo output ai ext4 file system usando l' -topzione (type), vedremo che ora ci sono due ext4file system montati .

mount -t ext4

Rimontaggio di un file system

Il rimontaggio di un file system utilizza l' -o remountopzione. In genere viene eseguita per modificare un file system da uno stato di sola lettura (test) a uno stato di lettura-scrittura (produzione).

Montiamo di nuovo il nostro disco floppy. Questa volta useremo il -rflag (sola lettura). Poi ci tubo mountattraverso grepe sguardo ai dettagli del file system floppy.

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

Come puoi vedere l'evidenziato roindica che il file system è montato in sola lettura.

Usando l'  -o remountopzione con il rwflag (read-write) possiamo smontare e rimontare il file system con le nuove impostazioni, tutto in un comando.

sudo mount -o remount, rw / mnt

La ripetizione del piping di mountthrough grepci mostra che roè stato sostituito da  rw (evidenziato). Il file system è ora in modalità di lettura / scrittura.

montare | grep / mnt

(Non) spostare un file system

Prima era possibile smontare un file system e rimontarlo su un altro punto di montaggio con un singolo comando.

L' -Mopzione (sposta)  mountesiste specificatamente per consentirti di farlo. Ma non funziona più nelle distribuzioni Linux che sono passate a systemd. E questa è la maggior parte dei grandi nomi.

Se proviamo a spostare un file system da /mnta ./geek, non riesce e fornisce il messaggio di errore mostrato di seguito. Il tentativo di elencare i file nei file tramite ystem ./geeknon restituisce alcun risultato.

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

La soluzione alternativa consiste nell'usare l' -B opzione (bind) che abbiamo usato in precedenza per associare il punto di montaggio originale al nuovo punto di montaggio.

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' --make-privateopzione è stato possibile forzare lo spostamento su systemdversioni di Linux. Questa tecnica non è presentata qui per due ragioni.

  1. Potrebbe avere un comportamento imprevedibile.
  2. Non era persistente e avrebbe dovuto essere ripetuto a ogni riavvio.

Devuan Linux usa  SysVinit not systemd. Un computer è stato caricato con l'ultima versione di Devuan e testato. L' -Mopzione (sposta) ha funzionato come previsto su quel sistema.

A parte i systemdproblemi con l' -M opzione (sposta), dovresti trovare l'uso di mounte umount semplice. Questi sono ottimi comandi da avere nella manica di fronte a un sistema danneggiato e devi iniziare a ricostruire il file system a mano.