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 namnetcreds
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.