Lag filsystemer i Linux: En komplett guide til mkfs

Opprettelse av filsystemer i Linux

Før en datalagringsenhet kan brukes på en Linux-maskin, må et filsystem etableres. Denne artikkelen utforsker hvordan man bruker kommandoen `mkfs` og andre verktøy for å sette opp ulike typer filsystemer. Vi skal gå gjennom prosessen trinnvis.

`mkfs`: Grunnlaget for filsystemer

Kommandoen `mkfs` er sentral i opprettelsen av filsystemer. I andre operativsystemer kalles denne prosessen gjerne «formatering». Uavhengig av begrepet, handler det om å forberede en partisjon for datalagring. En partisjon trenger ikke bare plass til filer, men også en mekanisme for å lagre filnavn, plasseringer og metadata (som opprettelsestidspunkt, endringstidspunkt og størrelse). Når `mkfs` har satt opp dette rammeverket, kan data lagres på partisjonen.

Syntaksen for `mkfs` er enkel: spesifiser enhetspartisjonen og ønsket filsystemtype. Likevel foregår det mer i kulissene. I de fleste Linux-distribusjoner er `mkfs` en «wrapper» for `mke2fs`. Kommandoen `mkfs` kaller opp `mke2fs` og overfører de spesifiserte alternativene. `mke2fs` utfører selve arbeidet, men får ikke alltid anerkjennelsen.

Selv om eldre syntaks for `mkfs` fortsatt fungerer, vil vi fokusere på den moderne stilen i denne artikkelen.

Filsystemtyper: Et mangfold av muligheter

For å bruke `mkfs` på den moderne måten, skriver man «mkfs.» etterfulgt av navnet på ønsket filsystem. For å se en liste over filsystemer som `mkfs` kan opprette, skriv «mkfs» i terminalen og trykk Tab-tasten to ganger. Dette vil vise en liste over tilgjengelige filsystemer, som kan variere mellom Linux-distribusjoner. La oss se nærmere på noen av disse, og diskutere konseptet journalføring først.

Journalføring er en viktig egenskap i moderne filsystemer. Journalførende filsystemer registrerer alle ventende filskriveoperasjoner i en journal. Dette gjør det mulig for filsystemet å reparere delvis skrevne eller ødelagte filer, for eksempel etter strømbrudd. Eldre filsystemer mangler denne funksjonaliteten, og selv om de kan skrive raskere, er de mer sårbare for korrupsjon.

Her er en oversikt over de mest vanlige filsystemene:

Filsystem Beskrivelse
Ext2 Det første filsystemet spesifikt for Linux, uten journalføring.
Ext3 Et forbedret Ext2-system med journalføring for økt sikkerhet mot datatap.
Ext4 Det mest brukte filsystemet for Linux, kjent for sin pålitelighet og funksjoner som reduserer filfragmentering.
BFS «Boot File System» som er spesielt utviklet for oppstartspartisjonen, vanligvis automatisk opprettet under installasjon.
FAT Et eldre filsystem utviklet for disketter, mest brukt for kompatibilitet med eldre operativsystemer.
NTFS Microsofts «New Technology File System», brukt for kompatibilitet med Windows-systemer.
MINIX Et filsystem som er en forenklet versjon av Unix-filsystemet, brukt i MINIX-operativsystemet. Kan være aktuelt i kryssutviklingsmiljøer.
VFAT «Virtual File Allocation Table» som støtter lengre filnavn enn FAT-systemet. Brukes hovedsaklig for kompatibilitet med eldre Windows-systemer.
CRAMFS «Compressed ROM File System» er et skrivebeskyttet system for innebygde systemer og oppstartsprosesser.
MSDOS Filsystemet fra Microsoft Disk Operating System. Grunnleggende og egner seg mest for eldre systemer.

Eksperimentering med filsystemer: En trygg tilnærming

Å opprette et filsystem på en partisjon sletter eksisterende data. Derfor er det en god idé å bruke en ekstra harddisk eller en annen maskin for å eksperimentere. Hvis dette ikke er mulig, kan vi lage en bildefil og opprette filsystemer inni denne. Dette tillater testing uten fare for å skade eksisterende data.

Vi kan bruke `dd` kommandoen for å opprette en bildefil. Den tar kildedata og legger det inn i en bildefil. I dette tilfellet bruker vi `/dev/zero` som kilde, som genererer en strøm av nuller.

Vi bruker `if` parameteren for å spesifisere inndata filen til `/dev/zero`, `of` parameteren spesifiserer utdata filen til `~/wdzwdz.img`. Vi spesifiserer en blokkstørrelse på 1MB med `bs` parameteren og teller 250 blokker med `count` parameteren for å opprette en fil på 250MB.

dd if=/dev/zero of=~/wdzwdz.img bs=1M count=250

`dd` bekrefter at filen er opprettet som ønsket.

Vi kan bekrefte størrelsen med ls kommandoen:

ls -hl

Filen har nå en størrelse på 250 MB, som forventet.

Opprettelse av filsystem i bildefilen

La oss velge Ext2 filsystemet, den tidligste versjonen av Ext som `mkfs` kan opprette. Husk at dette er et filsystem uten journalføring, så ikke lagre viktige data her uten en sikkerhetskopi. Kommandoen for å lage filsystemet er:

mkfs.ext2 ~/wdzwdz.img

Filsystemet er nå opprettet, og det vises informasjon om filsystemet. Vi ser at `mke2fs` dukker opp.

Nå trenger vi å montere filsystemet slik at vi kan bruke det. Vi oppretter et midlertidig monteringspunkt i `/mnt`, kalt `geek`.

sudo mkdir /mnt/geek

Monter bildefilen:

sudo mount ~/wdzwdz.img /mnt/geek

Vi endrer eierskapet av monteringspunktet slik at vi har lese- og skrivetilgang.

sudo chown dave:users /mnt/geek/

Nå kan vi kopiere filer til det nye filsystemet:

cd /mnt/geek
cp ~/Documents/Code/*.? .

Dette vil kopiere alle filer med en bokstavsutvidelse fra `~/Documents/Code` katalogen til vårt nye filsystem. Vi bekrefter at filene er kopiert.

ls

Filene er kopiert, så filsystemet fungerer som det skal. Vi demonterer filsystemet fra hjemmekatalogen vår.

sudo umount /mnt/geek

Hvis vi nå går inn i `/mnt/geek` ser vi at det ikke er noen filer, fordi filsystemet har blitt demontert.

cd /mnt/geek
ls

Utforsking av andre filsystemer

Nå som vi har fått erfaring med prosessen, kan vi prøve et annet filsystem. La oss prøve MINIX denne gangen. Vi kan lage et nytt filsystem i den eksisterende bildefilen vår.

Vær forsiktig! Hvis det er viktige filer på filsystemet i bildefilen, må du først montere den og hente dem før du oppretter et nytt filsystem.

mkfs.minix ~/wdzwdz.image

Det nye filsystemet opprettes over det gamle uten ytterligere spørsmål. Vi monterer bildefilen med samme kommando som før:

sudo mount ~/wdzwdz.img /mnt/geek

Vi bytter til `/mnt/geek` og oppretter en fil:

touch geek.txt

ls -ahl geek.txt

Dermed har vi opprettet og brukt et nytt filsystem enkelt og raskt.

Fjerning av monteringspunktet

Til slutt kan vi fjerne monteringspunktet `geek`. Vi bruker `rmdir` for dette:

cd /mnt
sudo rmdir geek

Sikker eksperimentering

Med Linux lærer man best ved å gjøre. Noen kommandoer kan være risikable, så det er viktig å øve på en trygg måte uten å sette systemet i fare. Denne metoden med bildefiler gir deg en mulighet til å eksperimentere med filsystemer trygt, uten å risikere systemet eller dataene.