I Linux og Unix-baserte operativsystemer som macOS, er det mulig å administrere filsystemer ved å montere, demontere og remmontere dem via terminalen. Dette er et robust og fleksibelt verktøy. Her er en oversikt over det viktigste du trenger å vite.
Filsystemstrukturen i Linux
I Linux, macOS og lignende systemer fungerer filsystemer annerledes enn for eksempel i Windows. Der Windows gir hver lagringsenhet en stasjonsbokstav som C: eller D:, og organiserer filene i et hierarkisk katalogsystem under den stasjonen, har Linux en mer integrert tilnærming. Linux ser på filsystemet som et enkelt, sammenhengende katalogtre. Når en lagringsenhet monteres, blir dens filsystem integrert i dette treet, som om det var en naturlig del av det. Tilgang til det monterte filsystemet skjer via en spesifikk katalog, kjent som monteringspunktet.
Automatisk montering skjer ofte ved oppstart eller når enheter kobles til. For å ha mer kontroll kan systemadministratorer deaktivere automatisk montering. Da må enheter kobles til manuelt. Fordelen med manuell montering er at man kan bestemme monteringspunkt og velge om filsystemet skal være skrivebeskyttet eller ikke.
Uansett om det er påkrevd eller selvvalgt, lar kommandoene `mount`, `umount` og `remount` deg styre denne viktige delen av Linux-systemet.
Utforsk filsystemet med `mount`
`mount`-kommandoen har mange alternativer, men du trenger ingen for å liste opp de monterte filsystemene. Skriv bare `mount` og trykk Enter:
Dette gir en fullstendig oversikt over alle monterte filsystemer, som kan være vanskelig å navigere i. For å begrense resultatet, kan du bruke `-t`-alternativet for å spesifisere filsystemtypen du ønsker å se.
mount -t tmpfs
mount -t ext4
Som eksemplet viser, ber vi om en liste over `tmpfs`-filsystemer. Dette gir en mer oversiktlig utskrift. `tmpfs` lagrer data i det flyktige minnet, i stedet for på en lagringsenhet.
Ved å endre parameteren `tmpfs` til andre filsystemtyper, får du informasjon om disse. Ved å bruke `ext4` ser vi at dette systemet er på enheten `sda` (normalt hovedharddisken) og er montert på `/`, som er rotkatalogen.
Forklaring av de andre indikatorene:
- `rw`: Filsystemet er lesbart og skrivbart.
- `relatime`: Optimalisert metode for lagring av metadata.
- `errors=remount -o`: Ved feil, remonter filsystemet som skrivebeskyttet for analyse.
Undersøk filsystemet med `df`
`df`-kommandoen viser også monterte filsystemer og deres monteringspunkter.
Uten parametere gir `df` ofte for mye informasjon. I Ubuntu vises for eksempel `squashfs`-filsystemer for hver snap-applikasjon. For å unngå disse, bruk `-x` (ekskluder) alternativet:
df -x squashfs
Denne kommandoen viser filsystemenes navn, kapasitet, brukt plass, ledig plass og monteringspunkter.
Filsystemer i `fstab`
Filsystemer som monteres ved oppstart, er listet i `/etc/fstab`, filsystemtabellen. Med `mount -a` kan du tvinge systemet til å laste inn alle filsystemer fra `fstab`. Vanligvis er ikke dette nødvendig, men det kan være nyttig ved problemer med flere filsystemer. Du må bruke `sudo` for dette.
sudo mount -a
Dette vil normalt ikke gi mye synlig resultat, men kan løse problemer. Hvis ikke, gir det deg feilmeldinger som kan peke deg mot årsaken.
Montering av ISO-bilder
Det er enkelt å montere et ISO-bilde for å få tilgang til innholdet som en del av filsystemet. Dette fungerer for alle ISO-bilder. Vi bruker en Tiny Core Linux ISO som eksempel.
Kjør følgende kommando fra samme katalog som ISO-bildet. Bytt ut filnavnet med ditt:
sudo mount -t iso9660 -o loop TinyCore-current.iso /mnt
Du må skrive inn passordet ditt. `-t` angir filsystemtypen, i dette tilfellet `iso9660`. `-o loop` bruker en loop-enhetsfil for å knytte ISO-bildet til et enhetsgrensesnitt, slik at det kan behandles som en lagringsenhet. Dette er en del av Linux sin «alt er en fil»-filosofi. Enhetsfiler er spesielle filer som gir et grensesnitt for tilkoblede enheter. Som vi så tidligere, er f.eks. `/dev/sda` en enhetsfil.
Til slutt angir vi ISO-filens navn og monteringspunktet `/mnt`.
ISO-bildet er nå montert som skrivebeskyttet.
Utforsk ISO-bildet
Etter montering kan du navigere i ISO-bildet på samme måte som andre deler av filsystemet.
ls /mnt
ls /mnt/cde/
Avmontering av ISO-bildet
For å avmontere filsystemer, bruk kommandoen `umount`. Merk at det ikke er noen «n» i `umount`. Angi monteringspunktet for å demontere.
sudo umount /mnt
Ingen respons betyr at operasjonen var vellykket.
Opprette et monteringspunkt
Du kan lage egne monteringspunkter. La oss lage en katalog kalt `isomnt` og montere ISO-bildet der. Et monteringspunkt er bare en katalog, så vi bruker `mkdir`:
sudo mkdir /media/dave/isomnt
Nå kan vi montere ISO-bildet på `/media/dave/isomnt`:
sudo mount -r -t iso9660 -o loop TinyCore-current.iso /media/dave/isomnt/
Vi kan nå få tilgang til det monterte filsystemet via det nye monteringspunktet.
ls /media/dave/isomnt/cde/optional
Binde et monteringspunkt
Du kan binde et monteringspunkt til en annen katalog, slik at filsystemet kan nås fra begge steder. Vi lager en katalog `iso` i hjemmekatalogen og binder `/media/dave/isomnt` til den. Med `-B`-alternativet angis monteringspunktet og den nye katalogen.
mkdir iso
sudo mount -B /media/dave/isomnt/ iso
ls iso
ls /media/dave/isomnt
cd iso
ls
cd cde
Avmontering med bindinger
Et filsystem som er bundet til en annen katalog, må avmonteres fra både monteringspunktet og bindepunktet. Selv om du avmonterer det opprinnelige monteringspunktet, vil du fremdeles ha tilgang via det bundne punktet.
sudo umount /media/dave/isomnt
ls iso
sudo umount iso
ls iso
Montering av en diskett
En diskettstasjon er også en lagringsenhet. Derfor bruker den en `sd`-enhetsfil. For å finne den neste ledige, kan vi bruke `df` og `grep` for å søke etter `sd`:
df | grep /dev/sd
Her ser vi at `/dev/sda` er i bruk, så den neste blir `/dev/sdb`. Deretter kobler vi til diskettstasjonen og monterer den. Kommandoen er:
sudo mount /dev/sdb /mnt
Filsystemetiketter
Vi kan bruke `-l` (etikett) med `mount` for å finne etikettene til filsystemene. Dette er bare vilkårlige navn, uten funksjonell betydning. La oss sjekke etikettene til `vfat`-filsystemer:
mount -l -t vfat
Vi finner etiketten i hakeparenteser. I dette tilfellet er etiketten for diskettstasjonen `NORTUN`.
Vi får tilgang til disketten via `/mnt`:
cd /mnt
ls
ls -l AMATCH.C
Her finner vi C-kildekodefiler fra 1992. Det er ikke sikkert at etikettens mening er like åpenbar lenger.
Ved å gjenta `df | grep /dev/sd` ser vi at det nå er to `sd`-enhetsfiler:
df | grep /dev/sd
For å avmontere disketten bruker vi `umount` med enhetsfilen som parameter:
sudo umount /dev/sdb
`lazy` alternativet for `umount`
Hva skjer om filsystemet er i bruk når du prøver å avmontere det? Avmontering vil mislykkes:
sudo umount /dev/sdb
Dette skjer fordi brukeren har filsystemet i bruk. Linux hindrer deg i å «sage av grenen du sitter på.»
For å unngå dette kan vi bruke `-l` (lazy) alternativet. Da vil umount vente til filsystemet trygt kan demonteres:
sudo umount -l /dev/sdb
ls
cd ~
ls /mnt
Selv om umount-kommandoen er gitt, er filsystemet fortsatt montert og brukeren ser filene. Når brukeren har byttet katalog frigjøres diskettfilsystemet og avmonteres.
Montering av en Samba-deling
Samba er en programvarepakke som gir mulighet for tilgang til nettverksandeler mellom Linux/Unix og Windows-systemer. Selve oppsettet av Samba er utenfor omfanget av denne artikkelen. Men om du har tilgang til en Samba-andel, kan du montere den i Linux:
En Raspberry Pi har en Samba-andel som heter «share». Vi oppretter en SSH-forbindelse til den og ser på innholdet i mappen. Mappen er en USB-enhet på Raspberry Pi.
Brukernavnet er `pi`, og nettverksnavnet til Raspberry Pi er `marineville.local`:
ssh [email protected]
ls /media/pi/USB64/Backup
exit
Etter å ha oppgitt passordet, ser vi to mapper i `/media/pi/USB64/Backup`, `dave` og `pat`. Etter å ha logget ut, går ledeteksten tilbake til det opprinnelige systemet.
For å bruke Samba må du installere `cifs-utils` pakken. Bruk `apt-get` i Ubuntu og andre Debian-baserte systemer, eller pakkehåndtereren for din distribusjon.
sudo apt-get install cifs-utils
Når installasjonen er ferdig, monterer du delingen med en kommando som dette, men husk å endre IP-adressen, delingsnavnet og monteringspunktet:
sudo mount -t cifs -o credentials=/etc/samba/creds,uid=1000,gid=1000 //192.168.4.13/share /media/dave/NAS
La oss se på de ulike delene av denne kommandoen:
- `-t cifs`: Filsystemtypen er `cifs`.
- `-o credentials=/etc/samba/creds,uid=1000,gid=1000`: Alternativer for å angi brukerinfo for Samba (bruker/passord i `creds` filen), samt bruker-ID (`uid`) og gruppe-ID (`gid`).
- `//192.168.4.13/share`: Plasseringen for Samba-andelen, samt andelsnavnet.
- `/media/dave/NAS`: Monteringspunktet. Dette må opprettes på forhånd.
Ved å gå til `/media/dave/NAS`, får vi tilgang til delingen på Raspberry Pi over nettverket. Vi ser mappene `dave` og `pat` der.
cd /media/dave/NAS
Opprettelse og montering av et filsystem
Du kan bruke `dd` til å lage en bildefil, og deretter `mkfs` for å lage et filsystem i den. Det nye filsystemet kan så monteres. Dette er en god måte å øve seg på. Vi bruker `/dev/zero` som input, og `geek_fs` som output. Blokkstørrelsen er 1 MB, og filen skal bestå av 20 blokker.
dd if=/dev/zero of./geek_fs bs=1M count=20
Nå har vi en bildefil med nullverdier. Vi bruker `mkfs` med `-t ext4` for å lage et `ext4`-filsystem i den:
mkfs -t ext4 ./geek_fs
Nå har vi et fungerende filsystem. Vi monterer det på `/media/dave/geek` og bruker `chown` for å gi tilgang til det.
sudo mount ./geek_fs /media/dave/geek
sudo chown dave:users /media/dave/geek
La oss sjekke om det fungerer. Vi går til det nye filsystemet og kopierer en fil.
cd /media/dave/geek
cp /etc/fstab .
ls -l
Vi kan nå navigere i det nye filsystemet og kopiere filer. Ved å bruke `mount -t ext4`, ser vi at det nå er to monterte `ext4`-filsystemer:
mount -t ext4
Remontering av et filsystem
Remontering med `-o remount` kan brukes til å endre filsystemets tilstand. Ofte endrer vi det fra skrivebeskyttet til lese-skrive. La oss montere diskettstasjonen igjen, denne gangen med `-r` (skrivebeskyttet). Ved hjelp av `mount` og `grep`, sjekker vi status.
sudo mount -r /dev/sdb /mnt
mount | grep /mnt
Vi ser at `ro` indikerer at det er skrivebeskyttet. Med `-o remount,rw` kan vi remmontere den med nye innstillinger.
sudo mount -o remount,rw /mnt
Gjenta kommandoen `mount` og `grep` viser at `ro` er erstattet med `rw`. Filsystemet er nå i lese-skrivemodus.
mount | grep /mnt
(Ikke) Flytte et filsystem
Tidligere kunne man demontere et filsystem og remmontere det på et annet monteringspunkt med en enkel kommando. `-M` (flytt) i `mount` var designet for dette. Men, det fungerer ikke lenger i Linux-distribusjoner som bruker systemd.
Et forsøk på å flytte et filsystem fra `/mnt` til `./geek` vil mislykkes, og gi en feilmelding. Listingen av innholdet i `./geek` vil også vise null resultater.
sudo mount -M /mnt ./geek
ls ./geek
Løsningen er å bruke `-B` (bind) slik vi gjorde tidligere:
sudo mount -B /mnt ./geek
ls ./geek
Dette vil, med unntak av at det opprinnelige monteringspunktet ikke frigjøres, gi samme resultat.
Avsluttende kommentarer
I eldre versjoner av Linux var det mulig å tvinge en flytting til å skje med `–make-private`-alternativet, men denne tilnærmingen er ikke brukt her på grunn av ustabilitet og det faktum at det måtte gjøres ved hver oppstart.
Devuan Linux, som bruker SysV i stedet for systemd, tillater fremdeles `-M` (flytt). Testet på Devuan, fungerte kommandoen som forventet.
Med unntak av utfordringene med `-M` (move)-alternativet, er bruken av `mount` og `umount` rett frem. Dette er kraftige verktøy som kan hjelpe deg ved reparasjon av et skadet system.