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

By rik

I Linux och Unix-baserade operativsystem som macOS hanteras filsystem genom montering, demontering och ommontering via terminalen. Detta ger kraftfulla möjligheter och här följer en komplett guide till hur det fungerar.

Filsystemhantering i Linux

I Linux, macOS och liknande operativsystem skiljer sig hanteringen av lagringsenheter från exempelvis Windows. Windows identifierar varje lagringsvolym med en enhetsbeteckning som C: eller D:, och varje volym har sitt eget katalogträd.

I Linux presenteras hela filsystemet som ett enda, sammanhängande katalogträd. När en lagringsenhet monteras integreras dess filsystem i detta träd, vilket gör att det verkar som en naturlig del av det samlade systemet. Den punkt där ett filsystem kopplas till det övergripande trädstrukturen kallas för monteringspunkten.

Många filsystem monteras automatiskt när systemet startar eller när nya lagringsenheter ansluts under drift. För ökad säkerhet kan systemadministratörer inaktivera automatisk montering för att ha full kontroll över anslutningar.

Detta innebär att lagringsenheter som ansluts medan datorn är igång kan behöva monteras manuellt. Genom att manuellt montera ett filsystem får du möjlighet att anpassa dess inställningar, som exempelvis monteringspunkt och om filsystemet ska vara skrivskyddat eller läs- och skrivbart.

Oavsett om det är av nödvändighet eller val ger kommandona mount, umount och remount dig möjlighet att styra denna fundamentala aspekt av ditt Linux-system.

Utforska ditt filsystem med ”mount”

Kommandot mount har många tillgängliga parametrar. Utan extra argument listas alla monterade filsystem i datorn genom att skriva enbart mount i terminalen och trycka Enter.

Resultatet av kommandot mount ger en lista över alla anslutna filsystem, vilket kan vara svårt att tolka.

För att förenkla kan du använda parametern -t (typ) för att filtrera ut en specifik typ av filsystem. Till exempel:

mount -t tmpfs
mount -t ext4

Här visas enbart filsystem av typen tmpfs, vilket ger en mer överskådlig utskrift.

Ett tmpfs-filsystem lagras i det flyktiga minnet (RAM) istället för på en fysisk disk, och fungerar som ett vanligt filsystem.

Använd parametern som matchar den filsystemstyp du vill undersöka.

Kommandot för att lista ext4 filsystem visar enheten sda, oftast den primära hårddisken, monterad på /, vilket är roten i filsystemets katalogstruktur.

Övriga indikatorer betyder:

  • rw: Filysystemet är läs- och skrivbart.
  • relatime: Kärnan använder en optimerad algoritm för att hantera filåtkomst och metadataändringar.
  • errors=remount -o: Vid allvarliga fel monteras filsystemet om i skrivskyddat läge för att tillåta felsökning.

Utforska filsystem med ”df”

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

Utan några parametrar ger df en omfattande lista, som kan vara svåröverskådlig. Exempelvis kan alla snap-installerade applikationer i Ubuntu skapa egna squashfs pseudo-filsystem, vilket kan leda till en lång och irrelevant lista.

För att exkludera en viss filsystemstyp, som squashfs, använd parametern -x (exclude):

df -x squashfs

Nu visas tydligt filsystemens namn, totala storlek, använt och ledigt utrymme, samt monteringspunkter.

Ommontera alla filsystem i fstab

Filsystem som monteras vid uppstart definieras i filen fstab, som finns i katalogen /etc.

Med mount kan du tvinga en ”uppdatering” och montera om alla filsystem som anges i fstab. I normal drift är detta oftast inte nödvändigt, men det kan vara användbart om du stöter på problem med flera filsystem.

Du behöver använda sudo, vilket kräver att du anger ditt lösenord.

sudo mount -a

Om systemet fungerar som det ska, syns inga större förändringar.

På system med filsystemproblem kan ommonteringen potentiellt lösa dessa problem. Om problemen kvarstår visas felmeddelanden på skärmen och i systemloggarna, vilket kan underlätta felsökningen.

Montera en ISO-avbildning

Det är enkelt att montera en ISO-avbildning för att få tillgång till dess innehåll som om det vore en del av ditt vanliga filsystem.

Detta fungerar med alla ISO-filer. I detta exempel används en Tiny Core Linux ISO-fil på grund av dess lilla storlek.

Från samma katalog som ISO-avbildningen kör du följande kommando. Ersätt namnet på ISO-filen med namnet på den fil du vill montera:

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

Eftersom kommandot körs med sudo krävs ditt lösenord.

Parametern -t (typ) anger vilken typ av filsystem som monteras. För en ISO-fil används specifikationen iso9660.

Parametern -o (alternativ) skickar ytterligare parametrar till monteringskommandot. I detta fall används loop.

Med loop skapas en loop-enhetsfil som hanterar ISO-avbildningen som om den vore en lagringsenhet. Enhetsfiler fungerar som ett gränssnitt, så att anslutna enheter fungerar som vanliga filer.

Det finns många olika typer av enhetsfiler. Tidigare såg vi att ext4 filsystemet var monterat via filen /dev/sda.

Närmare bestämt finns ext4 filsystemet på en lagringsenhet som ansluts till filsystemet via enhetsfilen /dev/sda och filsystemet på lagringsenheten är monterat på /.

För att montera ISO-avbildningen behöver du ange sökvägen till filen, och var den ska monteras, exempelvis på monteringspunkten /mnt.

När ISO-avbildningen är monterad visas ett meddelande i terminalen att ISO-avbildningen alltid monteras skrivskyddad.

Utforska den monterade ISO-avbildningen

Efter att ha monterat ISO-avbildningen kan du navigera i filstrukturen som i vilken annan del av systemet som helst. Följande kommando visar innehållet i ISO-avbildningen, som nu är monterad på /mnt.

ls /mnt
ls /mnt/cde/

Demontera ISO-avbildningen

För att demontera ett monterat filsystem används kommandot umount. Det är viktigt att notera att det inte finns något ”n” mellan ”u” och ”m”, utan kommandot är just umount.

Du måste ange sökvägen till monteringspunkten för att tala om för umount vilket filsystem som ska demonteras.

sudo umount /mnt

Om ingen utskrift visas, har demonteringen lyckats.

Skapa en egen monteringspunkt

Du kan skapa egna monteringspunkter. Här skapar vi en monteringspunkt som heter isomnt och monterar ISO-avbildningen där. En monteringspunkt är egentligen bara en katalog, så den kan skapas med kommandot mkdir.

sudo mkdir /media/dave/isomnt

Nu kan vi använda samma monteringskommando som tidigare, men montera ISO-avbildningen i den nya katalogen:

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

Nu är filsystemet tillgängligt via vår nya monteringspunkt.

ls /media/dave/isomnt/cde/optional

Långa sökvägar som dessa kan snabbt bli otympliga. Låt oss hantera detta.

Binda en monteringspunkt

Du kan binda en monteringspunkt till en annan katalog. Då kan du nå det monterade filsystemet via både den ursprungliga monteringspunkten och den bundna katalogen.

Här skapas en katalog som heter iso i hemkatalogen. Monteringspunkten för ISO-avbildningen, /media/dave/isomnt, binds sedan till den nya katalogen.

Du kan komma åt ISO-avbildningen både via /media/dave/isomnt och via den nya katalogen. Parametern -B (bind) kräver namnet på monteringspunkten och den katalog som ska bindas till den.

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

Använda umount med bindningar

Ett filsystem vars monteringspunkt har bundits till en annan katalog måste demonteras både från monteringspunkten och från bindningspunkten.

Även om du demonterar filsystemet från dess ursprungliga monteringspunkt kan du fortfarande nå filsystemet från dess bundna katalog. Därför måste filsystemet demonteras även från den bundna katalogen.

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

Montera en diskettenhet

En diskettenhet (med diskett i) är en lagringsenhet. Det innebär att en sd enhetsfil (för lagringsenhet) används för att ansluta till den fysiska enheten. Vi måste fastställa vilken nästa lediga sd-fil är. Detta kan vi göra genom att filtrera utdata från kommandot df med grep och leta efter poster som innehåller sd.

df | grep /dev/sd

På den här datorn används en sd enhetsfil: /dev/sda. Nästa lediga sd fil kommer att vara /dev/sdb. När diskettenheten kopplas in kommer Linux att använda /dev/sdb för att ansluta till den.

Nu ber vi mount att montera filsystemet på diskettenheten som är ansluten via /dev/sdb till monteringspunkten /mnt.

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

sudo mount /dev/sdb /mnt

Filsystemsetiketter

Med parametern -l (etikett) med mount kan du få reda på eventuell etikett som är kopplad till ett filsystem. Etiketter är endast godtyckliga namn utan funktionell betydelse.

Vi använder -t (typ) för att bara lista vfat filsystem.

mount -l -t vfat

Du hittar etiketten i hakparenteser i slutet av listan. I detta fall är etiketten för diskettenheten NORTUN.

Du når disketten via monteringspunkten /mnt.

cd /mnt
ls
ls -l AMATCH.C

Disketten innehåller C källkodsfiler. Tidsstämpeln visar att filen senast ändrades i oktober 1992.

Om vi upprepar kommandot df med grep för att lista sd-enhetsfiler ser vi nu två av dem:

df | grep /dev/sd

Diskettenheten visas som monterad på /dev/sdb som förväntat. Filsystemet på diskettenheten är monterat på /mnt.

För att demontera diskettenheten använder vi umount med enhetsfilen som parameter.

sudo umount /dev/sdb

Lazy-alternativet för umount

Vad händer om du eller en annan användare använder filsystemet när du försöker demontera det? Då kommer demonteringen att misslyckas.

sudo umount /dev/sdb

Det misslyckades eftersom användarens aktuella arbetskatalog ligger i filsystemet som försöker demonteras. Linux skyddar dig från att ”såga av grenen du sitter på”.

För att lösa detta, använd parametern -l (lazy). Detta instruerar umount att vänta tills filsystemet kan demonteras säkert.

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

Även om kommandot umount har körts är filsystemet fortfarande monterat och användaren kan visa filerna som vanligt.

När användaren byter katalog till hemkatalogen, släpps och demonteras diskettfilsystemet. Ett försök att lista filerna i /mnt ger inget resultat.

Montera en Samba-delning

Samba är en samling av mjukvarutjänster som möjliggör nätverksresursåtkomst mellan Linux- och Unix-liknande operativsystem och Windows.

Konfiguration av Samba går bortom detta dokument. Men om du har behörighet att ansluta till en Samba-resurs så här monterar du den i Linux.

En Raspberry Pi i samma nätverk har en Samba-delning. En katalog som heter Backup delas ut med Samba-namnet ”share”. Låt oss använda en SSH-anslutning till den och se innehållet i den delade katalogen. Den delade katalogen finns på en USB-enhet monterad på Raspberry 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 kör ssh-kommandot och ombeds ange Raspberry Pi-lösenordet.

Efter att ha angett lösenordet är användaren inloggad. Terminalens prompt ändras till [email protected] eftersom användaren nu är ansluten till Raspberry Pi.

Användaren listar innehållet i den delade katalogen på /media/pi/USB64/Backup. Innehållet är två kataloger, dave och pat. Nu vet vi vad vi kan förvänta oss när vi monterar Samba-delningen.

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

För att använda Samba behöver du installera paketet cifs-utils.

Använd apt-get för att installera paketet om du använder Ubuntu eller en annan Debian-baserad distribution. På andra Linux-distributioner använder du din distributions pakethanterare.

sudo apt-get install cifs-utils

När installationen är klar monterar du resursen med ett kommando som följande. Justera IP-adress, resursnamn och monteringspunkt (som redan måste finnas) för att passa din situation.

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

Här är en genomgång av kommandot:

  • -t cifs: Filsystemstypen är cifs.
  • -o credentials=/etc/samba/creds,uid=1000,gid=1000: Alternativparametrarna är sökvägen till en fil med namnet creds som lagrar användarnamn och lösenord för Raspberry Pi-användaren. Användar-ID (UID) och grupp-ID (GID) används för att ange ägare och grupp för filsystemets rot.
  • //192.168.4.13/share: Nätverksplatsen för enheten med Samba-resursen och Samba-namnet för den delade katalogen. Resursens rot är en katalog som heter Backup, men dess Samba-resursnamn är ”share”.
  • /media/dave/NAS: Namnet på monteringspunkten. Du måste skapa monteringspunkten i förväg.

Genom att ansluta till monteringspunkten /media/dave/NAS ansluter vi till den delade katalogen på Raspberry Pi via nätverket. Vi kan se de två katalogerna dave och pat på Raspberry Pi.

cd /media/dave/NAS

Skapa och montera ett filsystem

Med kommandot dd kan du skapa en avbildningsfil, och med mkfs kan du skapa ett filsystem inuti den. Det filsystemet kan sedan monteras. Detta är en bra metod för att öva på mount.

Alternativet if (indatafil) instruerar dd att använda en ström med nollor från /dev/zero som indatafil.

Alternativet of (utdatafil) är den nya filen geek_fs.

Med bs (blockstorlek) anger vi blockstorleken till 1 MB.

count instruerar dd att inkludera 20 block i utdatafilen.

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

Detta skapar en avbildningsfil fylld med nollor.

Nu skapar vi ett filsystem inuti filen geek_fs med 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 filsystemet på /media/dave/geek och sedan använda chown för att ställa in ägare och grupp för att tillåta åtkomst.

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

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

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

Vi kunde byta katalog till det nya filsystemet och kopiera filen /etc/fstab. Det fungerar!

Om vi använder mount för att lista alla monterade filsystem, och begränsar resultatet till ext4 filsystem med parametern -t, ser vi nu två monterade ext4 filsystem.

mount -t ext4

Ommontera ett filsystem

När ett filsystem ommonteras används parametern -o remount. Det görs oftast för att ändra ett filsystem från skrivskyddat läge (test) till läs- och skrivbart läge (produktion).

Låt oss montera diskettenheten igen. Den här gången använder vi flaggan -r (skrivskyddad). Sedan filtrerar vi utskriften av mount med grep och tittar på diskettens filsystemdetaljer.

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

Som du ser markerar ro att filsystemet är monterat i skrivskyddat läge.

Genom att använda -o remount-parametern med rw (läs- och skriv) flaggan kan vi demontera och montera filsystemet med de nya inställningarna i ett enda kommando.

sudo mount -o remount,rw /mnt

Om vi upprepar filtreringen av mount ser vi att ro har ersatts med rw (markerat). Filsystemet är nu i läs- och skrivläge.

mount | grep /mnt

(Inte) Flytta ett filsystem

Tidigare kunde du demontera ett filsystem och montera det på en annan monteringspunkt med ett enda kommando.

Parametern -M (flytta) i mount är specifikt avsedd för att göra detta, men den fungerar inte längre i Linux-distributioner som har migrerat till systemd. Och det är de flesta av de stora distributionerna.

Om vi försöker flytta ett filsystem från /mnt till ./geek misslyckas det och ger felmeddelandet nedan. Ett försök att visa filer i filsystemet via ./geek ger inget resultat.

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

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

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

Förutom att den ursprungliga monteringspunkten inte frigörs ger detta samma praktiska resultat.

Slutsatser

Genom att använda alternativet --make-private var det möjligt att tvinga flytten att ske i tidigare versioner av Linux. Den tekniken presenteras inte här av två skäl.

  • Den kan ha ett oförutsägbart beteende.
  • Den var inte persistent och behövde upprepas vid varje omstart.

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

Förutom systemproblemen med -M alternativet (flytta) ska du tycka att användningen av mount och umount är enkel. Dessa kommandon är fantastiska att kunna när du står inför ett skadat system och behöver återskapa filsystemet manuellt.