Hur man monterar och avmonterar lagringsenheter från Linux-terminalen

Filsystem i Linux och Unix-liknande operativsystem som macOS kan monteras, avmonteras och återmonteras med hjälp av terminalen. Det här är ett kraftfullt och mångsidigt verktyg – här är allt du behöver veta.

Filsystemet Linux

Filsystemen i Linux, macOS och andra Unix-liknande operativsystem använder inte separata volymidentifierare för lagringsenheter på det sätt som till exempel Windows gör. Windows tilldelar varje volym en enhetsbeteckning som C: eller D: och filsystemet för varje volym är ett träd med kataloger som sitter under den enhetsbeteckningen.

I Linux är filsystemet ett allt-i-ett-katalogträd. En monterad lagringsenhet har sitt filsystem ympat på det trädet så att det verkar vara en integrerad del av ett sammanhängande filsystem. Det nymonterade filsystemet kommer att vara tillgängligt via katalogen som det är monterat till. Den katalogen kallas monteringspunkten för det filsystemet.

Många filsystem monteras automatiskt vid uppstart eller i farten som lagringsvolymer anslutna till datorn under körning. Försiktiga systemadministratörer kan stänga av funktionerna för automatisk montering vid körning så att de kan kontrollera anslutningar till systemet.

Detta innebär att lagringsenheter som är anslutna under körning kanske inte automatiskt monteras och kommer att behöva monteras manuellt. Att montera ett filsystem manuellt låter dig fatta beslut om det filsystemet, till exempel var monteringspunkten kommer att vara och om filsystemet kommer att vara skrivskyddat eller läs-skriv.

Oavsett om det är av nödvändighet eller genom val ger kommandona mount, umount och remount dig möjligheten att ta kontroll över denna viktiga aspekt av ditt Linux-system.

Förhör ditt filsystem med fäste

Fästet har en väldigt många alternativ, men för att lista alla monterade filsystem på din dator krävs inga alternativ alls. Skriv bara mount och tryck på Enter:

mount kommer att lista alla anslutna filsystem i terminalfönstret.

Det kan vara svårt att plocka igenom den där dumpen av data för att hitta det du letar efter.

Du kan förfina utdata genom att be mount att bara lista de filsystem som är av intresse för dig. Alternativet -t (typ) talar om för mount vilken typ av filsystem som ska rapporteras om.

mount -t tmpfs
mount -t ext4

Som ett exempel har vi bett mount att endast lista tmpfs-filsystem. Vi får en mycket mer hanterbar produktion.

Ett tmpfs-filsystem ser ut som om det vore ett vanligt, monterat filsystem men det är faktiskt lagrat i flyktigt minne – tmp står för temporärt – istället för på en beständig lagringsenhet.

Du kommer att vilja ersätta tmpfs-parametern för den filtyp som du är intresserad av.

Vi har också utfärdat ett kommando för att lista ext4-filsystem. På den här testdatorn finns ett enda ext4-filsystem, det är på enheten sda – den första lagringsenheten monterad, vanligtvis huvudhårddisken – och monterad på /, som är roten till filsystemträdet.

De andra indikatorerna betyder:

rw: Filsystemet är läsbart och skrivbart.
relatime: Kärnan använder ett optimerat schema för att registrera filåtkomst och modifiering av metadata.
errors=remount -o: Om ett tillräckligt allvarligt fel upptäcks, kommer filsystemet att monteras om i skrivskyddat läge för att tillåta diagnos.

Förhör ditt filsystem med df

Kommandot df kan också användas för att visa vilka filsystem som är monterade och var deras monteringspunkter är.

df som används utan parametrar ger dig samma informationsöverbelastningsproblem som mount. Som ett exempel, i Ubuntu Linux, finns det ett squashfs pseudo-filsystem skapat för varje applikation som har installerats med snap-kommandot. Vem vill se alla dessa?

För att tvinga df att ignorera dem – eller någon annan filsystemtyp – använd alternativet -x (exclude):

df -x squashfs

Du kan enkelt se namnen på filsystemen, deras kapacitet, använt och ledigt utrymme och deras monteringspunkter.

Återmontera alla filsystem i fstab

Alla filsystem som är monterade vid uppstart har poster i en fil som heter fstab, vilket är filsystemtabellen som finns i /etc.

Du kan använda mount för att tvinga fram en ”uppdatering” och montera om alla filsystem som listas i fstab. Under normala driftsförhållanden är detta inte nödvändigt. Det kommer verkligen till sin rätt om du har problem med flera filsystem.

Du måste använda sudo, så du kommer att bli ombedd att ange ditt lösenord.

sudo mount -a

Visserligen, på en korrekt fungerande dator är det lite underväldigande.

På en dator med filsystemproblem kan återmonteringen dock lösa problemen. Om det inte händer kommer du åtminstone att få diagnostiska meddelanden på skärmen och i systemloggarna som hjälper dig att hitta orsaken till problemet.

Montering av en ISO-bild

Det är enkelt att montera en ISO-bild så att du kan komma åt dess innehåll som en del av filsystemet.

Detta fungerar med alla ISO-bilder. I det här exemplet råkar vi använda en Tiny Core Linux ISO eftersom det är bekvämt litet och snabbt att ladda ner. (En liten Linux-distribution med ett GUI, på 18 MB! Du har förmodligen .mp3-filer större än så.)

I samma katalog som ISO-avbildningen, utfärda detta kommando. Byt ut namnet på ISO-filen som du monterar.

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

Eftersom vi behöver använda sudo måste du ange ditt lösenord.

Alternativet -t (typ) talar om för mount vilken typ av filsystem vi monterar. Det är en ISO-fil, så vi tillhandahåller iso9660-typspecifikationen.

Flaggan -o (alternativ) används för att skicka extra parametrar för att montera. Vår parameter är loop.

Vi använder loop för att tvinga montering för att använda en loop-enhetsfil för att ansluta till vår ISO-bild. En loop-enhetsfil gör att en fil (som ISO-bilden) kan monteras och behandlas som om den vore en lagringsenhet.

Enhetsfiler är specialfiler som används som ett gränssnitt så att anslutna enheter ser ut som om de vore en normal filsystemfil. Detta är en del av allt i Linux är en fildesignfilosofi.

Det finns många olika typer av enhetsfiler. Vi såg en tidigare när vi noterade att det enda ext4-filsystemet på denna testmaskin var monterat på / och kallades sda.

För att vara mer exakt finns det ext4-filsystemet på en lagringsenhet som är ansluten till filsystemet via /dev/sda-enhetsfilen och filsystemet på den lagringsenheten monterad på /.

Vi måste förstås ange namnet på ISO-bilden, och vi måste meddela mount var vi vill att filsystemet ska monteras. Vi har valt /mnt.

ISO-bilden är monterad. En påminnelse om att ISO-bilder alltid är monterade i skrivskyddat läge visas i terminalfönstret.

Utforska ISO-bilden

Nu när den är monterad kan vi navigera i katalogerna i ISO-bilden på samma sätt som alla andra delar av filsystemet. Låt oss lista filerna i ISO-bilden. Den är monterad på /mnt remember.

ls /mnt
ls /mnt/cde/

Avmontering av ISO-bilden

För att avmontera ett monterat filsystem, använd kommandot umount. Observera att det inte finns något ”n” mellan ”u” och ”m” – kommandot är umount och inte ”unmount.”

Du måste tala om för umount vilket filsystem du avmonterar. Gör det genom att ange filsystemets monteringspunkt.

sudo umount /mnt

Inga nyheter är bra nyheter. Om det inte finns något att rapportera så gick allt bra.

Skapa en monteringspunkt

Du kan skapa och använda dina egna monteringspunkter. Vi ska skapa en som heter isomnt och montera vår ISO-bild på den. En monteringspunkt är bara en katalog. Så vi kan använda mkdir för att skapa vår nya monteringspunkt.

sudo mkdir /media/dave/isomnt

Nu kan vi använda samma kommandoformat som tidigare för att montera vår ISO-bild. Den här gången monterar vi det inte på /mnt, vi monterar det på /media/dave/isomnt/:

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

Vi kan nu komma åt det monterade filsystemet från vår nya monteringspunkt.

ls /media/dave/isomnt/cde/optional

Men de vägarna börjar bli väldigt långa. Det kommer snabbt att bli tröttsamt. Låt oss göra något åt ​​det.

Bindning av en Mount Point

Du kan binda en monteringspunkt till en annan katalog. Det monterade filsystemet kan sedan nås antingen via den ursprungliga monteringspunkten eller genom katalogen som är bunden till den.

Här är ett fungerande exempel. Vi skapar en katalog i vår hemkatalog som heter iso. Sedan kommer vi att binda monteringspunkten för ISO-bilden /media/dave/isomnt till den nya iso-katalogen i vår hemkatalog.

Vi kommer att kunna komma åt ISO-bilden genom den ursprungliga monteringspunkten /media/dave/isomnt och genom den nya iso-katalogen. Alternativet -B (bind) kräver namnet på monteringspunkten och namnet på katalogen att binda den till.

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

Använder umount med bindningar

Ett filsystem som har haft sin monteringspunkt bunden till en annan katalog kräver avmontering från dess monteringspunkt och bindningspunkten.

Även om vi avmonterar filsystemet från dess ursprungliga monteringspunkt, kan du fortfarande komma åt filsystemet från dess bundna katalog. Filsystemet måste också avmonteras från den katalogen.

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

Montera en diskett

En diskettenhet (med en diskett i) är en lagringsenhet. Det betyder att en sd-enhetsfil (för lagringsenhet) kommer att användas för att ansluta till den fysiska enheten. Vi måste fastställa vilken som är nästa gratis sd-enhetsfil. Vi kan göra detta genom att skicka utdata från df genom grep och leta efter poster med ”sd” i dem.

df | grep /dev/sd

På den här datorn finns det en enda sd-enhetsfil som används. Det här är /dev/sda. Nästa sd-enhetsfil som utfärdas kommer att vara /dev/sdb. Det betyder att när vi ansluter diskettenheten till datorn kommer Linux att använda /dev/sdb för att ansluta till diskettenheten.

Vi kommer att säga åt mount att montera filsystemet på disketten i diskettenheten som är ansluten till /dev/sdb till /mnt-monteringspunkten.

Sätt i disketten i diskettenheten och anslut diskettenheten till en USB-port på datorn. Ge följande kommando:

sudo mount /dev/sdb /mnt

Filsystemetiketter

Vi kan använda alternativet -l (etikett) med mount för att ta reda på vilken, om någon, etikett som är kopplad till ett filsystem. Etiketter är inte mer än godtyckliga namn. De har inget funktionellt syfte.

Vi använder alternativet -t (typ) för att be mount att endast rapportera om vfat-filsystem.

mount -l -t vfat

Du hittar etiketten inom hakparenteser i slutet av listan. Etiketten för denna diskettenhet är NORTUN.

Vi kan komma åt diskettenheten genom /mnt-monteringspunkten.

cd /mnt
ls
ls -l AMATCH.C

Disketten innehåller C språk källkodsfiler. Datumstämpeln på en fil visar att den senast ändrades i oktober 1992. Den är förmodligen äldre än många av våra läsare. (Onödigt att säga att innebörden av NORTUN som etikett går förlorad i tidens dimma.)

Om vi ​​upprepar vårt kommando df piped through grep för att lista sd-enhetsfiler, ser vi att det nu finns två av dem.

df | grep /dev/sd

Vår diskettenhet visas så monterad på /dev/sdb som vi förväntade oss. Filsystemet på disketten i enheten är monterat på /mnt .

För att avmontera disketten använder vi umount och skickar den enhetsfilen som en parameter.

sudo umount /dev/sdb

Lazy-alternativet umount

Vad händer om du (eller en annan användare) använder filsystemet när du försöker avmontera det? Avmonteringen kommer att misslyckas.

sudo umount /dev/sdb

Det misslyckades eftersom användarens nuvarande arbetskatalog finns i filsystemet som han försöker avmontera. Linux är smart nog att inte låta dig såga av grenen du sitter på.

För att övervinna detta använd alternativet -l (lat). Detta gör att umount väntar tills filsystemet kan avmonteras på ett säkert sätt.

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

Även om kommandot umount utfärdas, är filsystemet fortfarande monterat, och användaren kan lista filerna som vanligt.

Så snart användaren byter katalog till sin hemkatalog släpps diskettfilsystemet och avmonteras. Att försöka lista filerna i /mnt ger inga resultat.

Montera en Samba Share

Samba är en uppsättning mjukvarutjänster som gör att nätverksresurser kan nås utbytbart mellan Linux- och Unix-liknande operativsystem och Windows-operativsystem.

Att ställa in Samba ligger utanför ramen för den här artikeln. Men om du har auktoriserad åtkomst till en Samba-resurs som har gjorts tillgänglig för dig, är det så här du kan montera den i Linux.

A Raspberry Pi ansluten till samma nätverk som testmaskinen har en Samba-andel på. Det är en katalog som heter Backup som har gett Samba-namnet ”share”. Låt oss göra en SSH anslutning till den och titta på innehållet i den delade katalogen. Den delade katalogen finns på ett USB-minne monterat på Pi.

Användarnamnet är pi och nätverksnamnet för Raspberry Pi är marineville.local.

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

Användaren utfärdar SSH-kommandot och ombeds ange sitt Raspberry Pi-lösenord.

De anger sitt lösenord och är autentiserade. Terminalfönstrets prompt ändras till [email protected] eftersom den är ansluten till Raspberry Pi.

De listar innehållet i den delade katalogen på /media/pi/USB64/Backup. Innehållet är två kataloger, en som heter dave och en som heter pat. Så nu vet vi vad vi kan förvänta oss när vi monterar Samba-aktien.

De skriver exit för att koppla från Raspberry Pi och prompten ändras tillbaka till [email protected]

För att använda Samba måste du installera paketet cifs-utils.

Använd apt-get för att installera det här paketet på ditt system om du använder Ubuntu eller en annan Debian-baserad distribution. På andra Linux-distributioner, använd din Linux-distributions pakethanteringsverktyg istället.

sudo apt-get install cifs-utils

När installationen är klar, montera resursen med ett kommando som följande, ändra IP-adress, resursnamn och monteringspunkt (som redan måste finnas) för att passa dina omständigheter.

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

Låt oss dela upp delarna av det kommandot.

-t cifs: Filsystemstypen är cifs.
-o credentials=/etc/samba/creds,uid=1000,gid=1000: Alternativparametrarna är sökvägen till en fil som heter creds som är säker och innehåller användarnamnet och lösenordet för Raspberry Pi-användaren; användar-ID (UID) och grupp-ID (GID) som används för att ställa in ägaren och gruppen för filsystemets rot.
//192.168.4.13/share: Nätverksplatsen för enheten med Samba-resursen på och Samba-namnet för den delade katalogen. Roten för resursen är en katalog som heter Säkerhetskopiering, men dess Samba-resursnamn är inställt på delning.
/media/dave/NAS: Namnet på monteringspunkten. Du måste skapa din monteringspunkt i förväg.

Genom att komma åt vår monteringspunkt på /media/dave/NAS kommer vi åt den delade katalogen på Raspberry Pi över nätverket. Vi kan se de två mapparna på Raspberry Pi som heter dave and pat.

cd /media/dave/NAS

Skapa och montera ett filsystem

Du kan använda kommandot dd för att skapa en bildfil och sedan använda mkfs för att skapa ett filsystem inuti den. Det filsystemet kan sedan monteras. Detta är ett bra sätt att öva och experimentera med mount.

Vi använder alternativet if (indatafil) för att tala om för dd att använda strömmen med nollvärden från /dev/zero som indatafil.

The of (utdatafil) är en ny fil som heter geek_fs.

Vi använder alternativet bs (blockstorlek) för att begära en blockstorlek på 1 MB.

Vi använder räknealternativet för att tala om för dd att inkludera 20 block i utdatafilen.

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

Det skapar vår bildfil åt oss. Den innehåller inget annat än nollvärden.

Vi kan skapa ett fungerande filsystem inuti filen geek_fs med kommandot mkfs. Alternativet -t (typ) låter oss välja filsystemstyp. Vi skapar ett ext4-system.

mkfs -t ext4 ./geek_fs

Det är allt som krävs för att ha ett fungerande filsystem.

Låt oss montera den på /media/dave/geek och sedan använda chown för att ställa in ägaren och gruppens äganderätt för att tillåta åtkomst till den.

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

Fungerar det? Låt oss byta till det nya filsystemet och kopiera in en fil för att se.

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

Vi kunde byta katalog till det nya filsystemet, och vi lyckades göra en kopia av filen /etc/fstab. Det fungerar!

Om vi ​​använder mount för att lista de monterade filsystemen men begränsar dess utdata till ext4-filsystem med alternativet -t (typ), kommer vi att se att det nu finns två monterade ext4-filsystem.

mount -t ext4

Återmontera ett filsystem

Ommontering av ett filsystem använder alternativet -o ommontering. Det görs vanligtvis för att ändra ett filsystem från ett skrivskyddat (testande) tillstånd till ett läs-skriv (produktions) tillstånd.

Låt oss montera vår diskettenhet igen. Den här gången kommer vi att använda flaggan -r (skrivskyddad). Sedan ska vi rörmontera genom grep och titta på detaljerna i diskettfilsystemet.

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

Som du kan se indikerar det markerade ro att filsystemet är skrivskyddat monterat.

Genom att använda -o remount alternativet med rw (läs-skriv) flaggan kan vi avmontera och montera om filsystemet med de nya inställningarna, allt i ett kommando.

sudo mount -o remount,rw /mnt

Upprepa pipen av mount genom grep visar att ro har ersatts av rw (markerat). Filsystemet är nu i läs-skrivläge.

mount | grep /mnt

(Inte) Flytta ett filsystem

Du brukade kunna avmontera ett filsystem och montera om det på en annan monteringspunkt med ett enda kommando.

Alternativet -M (flytta) i mount finns specifikt för att du ska kunna göra det. Men det fungerar inte längre i Linux-distributioner som har flyttat över till systemd. Och det är de flesta av de stora namnen.

Om vi ​​försöker flytta ett filsystem från /mnt till ./geek, misslyckas det och ger felmeddelandet som visas nedan. Att försöka lista filerna i filsystemet via ./geek ger inga resultat.

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

Lösningen är att använda alternativet -B (bind) som vi använde tidigare för att binda den ursprungliga monteringspunkten till den nya monteringspunkten.

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

Förutom att inte frigöra den ursprungliga monteringspunkten kommer detta att få samma praktiska resultat.

Slutliga observationer

Genom att använda alternativet –make-private var det möjligt att tvinga flyttningen att ske på systemversioner av Linux. Den tekniken presenteras inte här av två skäl.

Det kan ha oförutsägbart beteende.
Det var inte ihållande och skulle behöva upprepas vid varje omstart.

Devuan Linux använder SysV i det inte systemd. En dator laddades med den senaste versionen av Devuan och testades. Alternativet -M (flytta) fungerade som förväntat på det systemet.

Förutom systemproblemen med alternativet -M (flytta), bör du tycka att användningen av mount och umount är enkel. Det här är fantastiska kommandon att ha i rockärmen när du står inför ett skadat system, och du måste börja sätta ihop filsystemet för hand.