Hur man använder kommandot mkfs på Linux

By rik

Innan en lagringsenhet, kopplad till en Linux-dator, kan användas, måste den ha ett filsystem. Denna artikel guidar dig genom processen att använda `mkfs` och andra verktyg för att skapa filsystem av olika typer.

`mkfs` skapar filsystem

Kommandot `mkfs` används för att skapa filsystem. I vissa operativsystem benämns denna process formatering. Oavsett benämning, handlar det om att förbereda en partition för att lagra data. Utöver plats för filer, krävs en mekanism för att hantera filernas namn, lagringsplatser och metadata. Metadatan kan inkludera tidpunkten för filskapande, ändringstider och filstorlekar. När `mkfs` har etablerat denna struktur, kan data börja lagras på partitionen.

Kommandots syntax är enkel. Du specificerar vilken enhetspartition som ska formateras och vilken typ av filsystem som önskas. Dock sker det en del i bakgrunden. I många Linux-distributioner fungerar `mkfs` som en omslag för `mke2fs`. `mkfs` anropar alltså `mke2fs` och vidarebefordrar dina val. Trots att `mke2fs` utför huvuddelen av arbetet, är det `mkfs` som exponeras för användaren.

Syntaxen för `mkfs` har genomgått en uppdatering, med ett äldre format som nu är utfasat. Även om båda stilarna fungerar, kommer den moderna syntaxen att användas i denna artikel.

Val av filsystem

Det moderna sättet att använda `mkfs` är att ange `mkfs.` följt av önskat filsystem.

För att se vilka filsystem `mkfs` kan skapa, skriv `mkfs` och tryck två gånger på Tab-tangenten. Ingen mellanslag behövs efter `mkfs`, bara två Tab-tryck.

Listan över tillgängliga filsystem visas i terminalfönstret. Skärmdumpen är tagen från Ubuntu 18.04 LTS, där andra distributioner kan ha fler eller färre valmöjligheter. Nedan går vi igenom varje filsystem och ger en kort beskrivning, men först en introduktion till journalföring.

Journalföring är en viktig aspekt av filsystem. Den loggar filskrivningar i en journal. För varje fil som skrivs uppdateras journalen och de väntande skrivoperationerna. Detta möjliggör för filsystemet att reparera skadade filer om exempelvis en strömavbrott skulle inträffa. Äldre filsystem saknar stöd för journalföring. Dessa skriver inte lika frekvent till disken eftersom de inte behöver uppdatera journalen. Även om det kan resultera i högre hastigheter, gör det dem mer känsliga för filskador vid avbrutna skrivprocesser.

Ext2: Det allra första filsystemet för Linux var MINIX-filsystemet, senare ersatt av Ext, specifikt designat för Linux. Ext2 är en efterföljare till Ext och saknar journalföring.

Ext3: Ext3 efterträdde Ext2 och tillförde journalföring. Detta skyddar filsystemet mot korruption som kan orsakas av krascher och oväntade strömavbrott.

Ext4: Ext4 är det vanligaste filsystemet i Linux-distributioner. Det är ett robust och pålitligt filsystem med funktioner som minskar filfragmentering och stödjer större enheter, partitioner och filer än Ext3.

BFS: Boot File System är specialdesignat för att hantera filer i startpartitionen. Det är inte vanligt att användare skapar ett startfilsystem manuellt, eftersom det hanteras av installationsprocessen.

FAT: File Allocation Table utvecklades för disketter 1977. Detta filsystem utan journalföring används främst för kompatibilitet med operativsystem som inte är Linux.

NTFS: New Technology File System, är Microsofts journalförande filsystem introducerat med Windows NT och är efterträdaren till FAT. Även det här används främst för kompatibilitet med icke-Linux-system.

MINIX: Skapat av Andrew S. Tanenbaum som utbildningsverktyg, är MINIX ett ”mini-Unix” operativsystem som strävar efter att vara självläkande och feltolerant. MINIX-filsystemet är en förenklad version av Unix filsystem. Det kan vara relevant vid utveckling riktat mot MINIX-plattformar eller för att uppnå kompatibilitet med MINIX-system. Det är dock mindre vanligt på Linux-datorer.

VFAT: Virtual File Allocation Table introducerades med Windows 95 och tillät filnamn upp till 255 tecken. Det används främst för kompatibilitet med icke-Linux-operativsystem.

CRAMFS: Compressed ROM File System är ett skrivskyddat filsystem för inbäddade system och specialiserade skrivskyddade användningsområden, som i startprocesser av Linux-datorer. Det möjliggör ett mindre, tillfälligt filsystem som förbereder för det huvudsakliga startsystemet.

MSDOS: Filsystemet för Microsoft Disk operativsystem, släppt 1981, är ett mycket grundläggande filsystem. Första versionen saknade kataloger. Trots sin roll i datorhistorien, är det primärt relevant för kompatibilitet med äldre system.

Säkert sätt att experimentera med filsystem

Att skapa ett filsystem på en partition raderar all befintlig data. Därför är det bäst att experimentera på en extra hårddisk eller reservdator. Om du saknar detta kan du istället skapa en bildfil och formatera den. Du kan sedan montera den och använda som om det vore en fysisk partition. Detta möjliggör experiment utan extra hårdvara. Vi använder kommandot `dd` för att skapa en bildfil.

Bildfilen skapas genom att mata in data i en fil. Vi anger källan för `dd`, genom alternativet `if` (input file), som ska vara /dev/null. Denna källa ger oss en ström av nollor.

Med alternativet `of` (output file) namnger vi bildfilen. I detta fall, `wdzwdz.img`.

Storleken på bildfilen bestäms av storleken och antalet block. Genom alternativet `bs` (block size) anger vi en blockstorlek på 1 MB, och med alternativet `count` begär vi 250 block. Detta resulterar i ett 250 MB stort filsystem. Justera antalet block efter behov och tillgängligt lagringsutrymme.

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

Filen är nu skapad, och `dd` bekräftar att 250 block har skapats.

Vi kan kontrollera bildfilen med `ls`:

ls -hl

Det är 250 MB som förväntat.

Skapa filsystemet

Vi väljer Ext2 som filsystem, den tidigaste versionen som `mkfs` kan skapa. Det är ett filsystem utan journalföring, så spara inte viktig data utan säkerhetskopior. Vi använder `mkfs.ext2` varianten av `mkfs` och specificerar bildfilen som mål.

mkfs.ext2 ~/wdzwdz.img

Filsystemet skapas, och detaljer om det visas.

Som du ser, `mke2fs` figurerar i utskriften.

Nu har vi en behållare – bildfilen – som motsvarar en hårddisk, och ett filsystem i den. Vi behöver montera filsystemet för att använda det.

Eftersom detta är en tillfällig installation, skapar vi en monteringspunkt i `/mnt` med namnet `geek` som vi tar bort efteråt.

sudo mkdir /mnt/geek

Nu monterar vi bildfilen.

sudo mount ~/wdzwdz.img /mnt/geek

Vi behöver ändra äganderätt av monteringspunkten för att få läs- och skrivbehörighet.

sudo chown dave:users /mnt/geek/

Nu kan vi använda det nya filsystemet. Vi byter till det och kopierar över några filer.

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

Detta kopierar alla filer med enstaka teckentillägg från `~/Documents/Code` till det nya filsystemet. Vi kontrollerar att filerna har kopierats.

ls

Filerna har kopierats. Vi har skapat, monterat och använt filsystemet. För att vara säkra avmonterar vi det från vår hemkatalog. Notera att det bara finns ett `n` i `umount`.

sudo umount /mnt/geek

Om vi går tillbaka till `/mnt/geek` borde vi inte hitta några filer eftersom de nu finns i bildfilen, som har avmonterats.

cd /mnt/geek
ls

Ytterligare experiment

Nu när processen är klar kan vi testa ett annat filsystem. Vi testar MINIX-filsystemet. Från hemkatalogen skapar vi ett nytt filsystem i samma bildfil.

Var försiktig! Om det finns viktiga filer i filsystemet i bildfilen, se till att hämta dem först.

mkfs.minix ~/wdzwdz.image

Det nya filsystemet skapas över det gamla. Vi kan montera bildfilen med samma kommando som tidigare:

sudo mount ~/wdzwdz.img /mnt/geek

Vi byter till det nya filsystemet i `/mnt/geek` och kontrollerar om vi kan skapa en fil.

touch geek.txt

ls -ahl geek.txt

Nu har vi skapat, monterat och använt ett nytt filsystem.

Ta bort monteringspunkten

När vi är klara tar vi bort monteringspunkten `geek` med hjälp av `rmdir`:

cd /mnt
sudo rmdir geek

Att jonglera med elden

Med Linux, som mycket annat, lär man sig genom att göra. Problemet är att vissa kommandon kan vara destruktiva. Hur kan man då öva utan risk för system eller data?

Nu har du lärt dig ett enkelt sätt att skapa och experimentera med filsystem med hjälp av `mkfs`, helt utan att skada din egen dator.