Hur man skriver en fstab-fil på Linux

By rik

Har du nyligen lagt till en ny hårddisk eller en SSD i din Linux-dator? Då behöver du justera din fstab-fil. Många kan tycka att tanken på det är lite skrämmande. Det är sant att det är viktigt att göra rätt, men med rätt kunskap är det absolut inte svårt. Vi kommer att guida dig steg för steg genom processen att ändra din fstab-fil så att din nya enhet integreras sömlöst i ditt filsystem.

fstab: Fil System Tabell

Att lägga till en ny hårddisk i en Linux-dator är inte alltför komplicerat, men det kan kännas förvirrande första gången man gör det. Du ansluter hårdvaran, slår på datorn och loggar in i operativsystemet. Men du kan inte se din nya enhet någonstans. Varför dyker den inte upp? Hur får du Linux att ”se” enheten så att du kan börja använda den?

Linux har faktiskt redan upptäckt din hårdvara, men det meddelar det inte på ett enkelt sätt, eller ens ger dig en antydan om att den har hittat din nya hårdvara. Du måste ”fråga” Linux för att få informationen som du behöver för din fstab-fil.

Här är stegen för att konfigurera din nya hårddisk så att Linux – och du – kan se den och använda den. Processen består av två delar. Först behöver vi göra en undersökning för att identifiera hårddisken och samla in lite information om den. Den andra delen är att redigera fstab-filen med hjälp av informationen vi samlat in.

Hitta Din Nya Enhet

I det här exemplet lägger vi till två nya enheter till systemet. Den ena är en 32 GB mekanisk hårddisk (HD) och den andra är en 16 GB SSD.

Vi måste kontrollera att Linux ser dem, och identifiera vilka blockenheter Linux använder för dem. I Linux och Unix-liknande operativsystem är en blockenhet en speciell fil som agerar som ett gränssnitt till en enhet från vilken data kan läsas och skrivas till (om den inte är skrivskyddad). Blockenheter representerar oftast någon typ av masslagringsenhet, som en partition på en hårddisk eller en CD-ROM. De skapas i katalogen /dev.

Vi kan använda kommandot `lsblk` för att lista alla blockenheter som är anslutna till din Linux-dator.

lsblk

Utmatningen från `lsblk` är uppdelad i kolumner.

Här är vad kolumnerna betyder:

Namn: Det här är enhetens namn. Enhetsnamn som börjar med ”sd” följt av en bokstav, representerar SCSI-hårddiskar. Bokstaven identifierar enskilda hårddiskar, där ”a” är den första, ”b” är den andra, och så vidare. Om ett tal läggs till, representerar det en partition. Till exempel skulle ”sdb2” vara partition 2 på den andra SCSI-hårddisken.
Maj:Min: Den här kolumnen innehåller enhetens huvud- och undernummer. Huvudnumret indikerar typen av enhet (eller mer specifikt, vilken drivrutin som används för att kommunicera med enheten). Undernumret räknar antalet enheter av den typen.
Rm: Denna kolumn visar om enheten är flyttbar eller inte. Notera att enheten sr0 har värdet 1, vilket betyder att den är flyttbar. Det är en CD-ROM-enhet.
Storlek: Det här är mängden data som kan lagras på enheten.
Ro: Den här kolumnen visar 1 för skrivskyddade enheter och 0 för enheter som kan läsas och skrivas till. Loop-enheterna är alla skrivskyddade.
Typ: Detta identifierar typen av enhet. ”Disk” betyder en diskenhet, ”del” står för partition och ”rom” betyder skrivskyddat minne (CD-ROM).
Mountpoint: Det här visar vilken plats i filsystemet som enheten är monterad på. Om detta är tomt är enheten inte monterad.

I skärmdumpen ovan ser du att loop-enheterna alla får ett huvudnummer 7 (vilket betyder en loopback-enhet), och undernumren ökar helt enkelt med 1 för varje enhet. Loop-enheter används med squashfs-filsystem. Ett squashfs-filsystem skapas varje gång en applikation installeras med hjälp av snap pakethanteringssystem.

SCSI-hårddiskar får namn som sda, sdb och sdc, och har alla huvudnummer 8 (SCSI-hårddisk). Undernumren är grupperade i 16-tal. Undernumren för den första enheten, sda, går från 0 till 15. Nollan representerar den fysiska enheten och 1 representerar den första partitionen på den enheten. För den andra enheten, sdb, går undernumren från 16 till 31. 16 representerar den fysiska enheten och 17 representerar den första partitionen på den enheten. De följande 16 numren, 32 till 47, används för undernumren för sdc och så vidare.

Andra vanliga huvudnummer är 3 (för en IDE-hårddisk) och 11 för CD-ROM.

Egentligen håller formatet /dev/sr0 för SDCSI CD-ROM-enheter på att fasas ut. Det godkända formatet är /dev/scd0. Trots detta användes fortfarande /dev/sr0-formatet på alla maskiner som användes för att undersöka denna artikel.

Kärndokumentationen innehåller en lång lista över alla värden som huvud- och undernumren kan ha. Det är en förvånansvärt lång lista.

För att rensa utmatningen från `lsblk`, kan vi använda `grep` för att bara välja de objekt som är intressanta för oss. Vi vet att vi inte har lagt till någon loop-enhet, så låt oss välja alla SCSI-hårddiskar. Vi vet att de har ”sd” i sina namn.

lsblk | grep sd

Det här kommandot gör att grep endast skriver ut rader som innehåller ”sd”. På vår testmaskin ser vi:

Vi har alltså tre SCSI-enheter. Den första, /dev/sda, är monterad i roten av filsystemet, /. De andra två är inte monterade alls, vilket är som väntat för helt nya enheter. Vi ser att enheten /dev/sdb är 32 GB, vilket betyder att det är vår traditionella mekaniska enhet. Enheten /dev/sdc är 16 GB, vilket är vår SSD-enhet.

I själva verket, eftersom detta är en virtuell maskin, är det också virtuella diskar. Så SSD:n dyker upp precis som en mekanisk SCSI-enhet. På mitt vanliga skrivbord dyker min NVMe SSD upp som /dev/nvme0n1, och den första partitionen på den är /dev/nvme0n1p1. Dess huvudnummer är 259. Dessa skillnader ändrar inte det vi behöver göra i fstab-filen, men tänk på att om du har en SSD kommer den inte att dyka upp som en fysisk enhet.

Dessutom kommer dina enheter troligen inte att ha några partitioner om de är helt nya. Du kan använda fdisk för att skapa en partition om det behövs.

Identifiera Roterande och Icke-roterande Enheter

Om vi använder alternativet -o (utdata) med `lsblk`, och lägger till kolumnen ROTA (roterande) till visningen, kommer `lsblk` att använda en 1 för att indikera en roterande lagringsenhet (mekanisk enhet), och en 0 för att indikera en icke-roterande lagringsenhet (SSD).

lsblk -o +ROTA | grep sd

Vi får en extra kolumn till höger om displayen som är ROTA (roterande) kolumnen. Som du kan se har ”SSD:n” en 0 för enheten och partitionen. Det är logiskt eftersom en SSD är en icke-roterande lagringsenhet.

Montering av Filsystemen

Innan vi ens börjar tänka på fstab-filen, låt oss se till att vi kan montera enheterna manuellt. På det sättet, om något inte fungerar när vi använder fstab-filen, vet vi att problemet ligger i vår syntax och inte i enheten.

Vi skapar några tillfälliga monteringspunkter i katalogen /mnt. Du måste använda `sudo` och du kommer bli uppmanad att ange ditt lösenord.

sudo mkdir /mnt/scsi

sudo mkdir /mnt/ssd

Låt oss nu montera SCSI-enheten på den nya monteringspunkten. Vi kommer att använda `mount`-kommandot i sin enklaste form. Vi anger namnet på partitionen vi vill montera och monteringspunkten vi vill att den ska monteras på. `mount` kommer att montera filsystemet på partitionen vid den monteringspunkt vi anger.

Vi anger partitionen som innehåller filsystemet, inte enheten, så se till att ta med numret för partitionen, i det här fallet ”1”.

sudo mount /dev/sdb1 /mnt/scsi

Om allt går bra får du inget svar från `mount`. Du återgår tyst till kommandotolken.

Att montera SSD:n är lika enkelt. Vi talar om för `mount` vilken partition på vilken enhet som ska monteras, och vilken monteringspunkt den ska monteras på.

sudo mount /dev/sdc1 /mnt/ssd

Återigen, tystnad är guld.

Kontrollera Monteringarna

För att verifiera att monteringen har ägt rum, kommer vi att använda `lsblk` igen. Vi skickar dess utdata genom `grep` och väljer posterna ”sda1”, ”sdb2” och ”sdc1”.

lsblk -o +ROTA | grep sd[a-c]1

`lsblk` visar de tre monterade partitionerna. Det är de två vi just har monterat och den ursprungliga partitionen som är monterad på /.

Partitionen /dev/sdb1 är monterad på /mnt/scsi och ligger på en roterande lagringsenhet. Partitionen /dev/sdc1 är monterad på /mnt/ssd och ligger på en icke-roterande lagringsenhet. Allt ser bra ut.

Nu behöver vi konfigurera fstab-filen så att dessa enheter monteras varje gång datorn startar.

fstab-Filen

fstab-filen innehåller en post för varje filsystem som monteras när datorn startar om. Varje post består av sex fält. Fälten är:

Filsystem: Inte, som namnet antyder, vilken typ av filsystem som finns på partitionen (det är vad typ-fältet är till för). Det här är identifieraren för partitionen som ska monteras.
Monteringspunkt: Platsen i filsystemet där du vill montera partitionen.
Typ: Typen av filsystem på partitionen.
Alternativ: Varje filsystem kan ha alternativ specificerade för att slå på eller av funktionalitet.
Dump: En referens till ett nästan föråldrat sätt att säkerhetskopiera filsystem, där hela filsystemet ”dumpades” till band.
Pass: Det här är flaggan för ”pass”. Den säger till Linux vilka partitioner som ska kontrolleras för fel med `fsck` och i vilken ordning. Din huvudstarts- och operativsystempartition bör vara 1, och resten kan ställas in på 2. Om flaggan är inställd på noll, betyder det ”kontrollera inte alls”. Om ditt filsystem inte är ett journalfilsystem (som till exempel ext2 eller FAT16/32), är det bäst att stänga av detta genom att ställa in det på 0.

Fälten måste anges i denna ordning, och de måste vara separerade med ett mellanslag eller en tab. Att hitta värdena för dessa fält kan vara svårt, speciellt värdena för ”alternativ”-fältet. Alternativen i fältet ”alternativ” måste finnas i en kommaseparerad lista utan mellanslag mellan dem.

Manualsidan för varje filsystem kommer att lista de alternativ som kan användas. ext4 har runt 40 alternativ. Här är några av de vanligaste alternativen:

Auto: Filsystemet monteras automatiskt vid uppstart.
Noauto: Filsystemet monteras endast när du använder kommandot `mount -a`.
Exec: Körning av binära filer är tillåten i filsystemet.
Noexec: Det är inte tillåtet att köra binärer i filsystemet.
Ro: Filsystemet ska monteras som skrivskyddat.
Rw: Filsystemet ska monteras som läs- och skrivbart.
Synk: Filskrivningar ska genomföras omedelbart och inte buffras. Rekommenderas endast för disketter, om någon fortfarande använder dem. Leder till sämre prestanda.
Asynk: Filskrivningar buffras och optimeras.
Användare: Alla användare får montera filsystemet.
Nouser: Endast root-användaren kan montera filsystemet.
Default: Det här är ett kort sätt att specificera en uppsättning vanliga inställningar: rw, suid, dev, exec, auto, nouser och async.
Suid: Tillåter användning av suid- och sgid-bitarna. Suid-biten används för att tillåta en fil att köras som root, av en vanlig användare, utan att ge användaren fullständiga root-behörigheter. När sgid-biten är inställd för en katalog, kommer filer och kataloger som skapas i den katalogen ha sitt gruppägarskap inställt till katalogen, och inte till gruppen för den användaren som skapade dem.
Nosuid: Tillåt inte användning av suid- och sgid-bitarna.
Noatime: – Uppdatera inte filernas åtkomsttider på filsystemet. Det kan förbättra prestandan på äldre hårdvara.
Nodiratime: Uppdatera inte katalogernas åtkomsttider på filsystemet.
Relatime: Uppdatera filernas åtkomsttider i förhållande till filernas ändringstid.

Alternativet ”defaults” är en bra startpunkt. Du kan lägga till eller ta bort ytterligare alternativ om finjusteringar behövs. Om det bara fanns ett enkelt sätt att få de inställningar du behöver, i den ordning du behöver ange dem i fstab-filen.

Kom in i mtab-filen.

mtab-Filen

mtab-filen är en lista över filsystem som för närvarande är monterade. Detta i motsats till fstab-filen, som listar de filsystem som ska monteras vid start. Mtab-filen inkluderar manuellt monterade filsystem. Vi har redan monterat våra nya enheter, så de bör dyka upp i mtab-filen.

Vi kan visa innehållet i mtab-filen med `cat`. Vi begränsar utmatningen genom att skicka den via `grep` och bara titta på /dev/sdb1 och /dev/sdc1.

cat /etc/mtab | grep sd[b-c]1

Utmatningen visar mtab-posterna för dessa två partitioner.

Vi kan kopiera dessa värden direkt till fstab-filen, och se till att det finns ett mellanslag eller en tabulator mellan varje fält. Och det skulle vara det. Enheterna skulle monteras när vi startar om.

Det finns två viktiga saker att notera. Den första är monteringspunkten. Vi skapade tillfälliga monteringspunkter bara för att visa att vi kunde montera de nya partitionerna på de nya enheterna. Vi skulle behöva ange de faktiska monteringspunkterna istället för våra tillfälliga – om de var annorlunda.

Den andra varningen är att om vi använder inställningarna från mtab-filen, kommer vi att använda blockenhetsfilen som identifierare för varje partition. Det skulle fungera, men värdena /dev/sda och /dev/sdb, med flera, kan ändras om ny masslagringshårdvara läggs till datorn. Det skulle innebära att inställningarna i fstab-filen skulle vara felaktiga.

Varje partition har en Universellt Unik Identifierare (UUID) som vi kan använda för att identifiera partitionen. Den kommer aldrig att ändras. Om vi använder UUID för att identifiera partitionerna i fstab-filen, kommer inställningarna alltid att vara korrekta och sanna.

Om du använder dina nya partitioner som en del av ett Redundant Array of Independent Disks (RAID) -system, kontrollera med dokumentationen för systemet. Det kan säga att du måste använda blockenhetsidentifieraren istället för UUID.

Hitta En Partitions UUID

För att hitta UUID för en partition kan vi använda `blkid` för att skriva ut attributen för blockenheter. Vi begränsar utmatningen till våra två nya partitioner på våra nya enheter:

blkid | grep sd[b-c]1

Utmatningen innehåller UUID för varje partition.

PARTUUID är en form av UUID som kan användas med GUID Partition Table (GPT) partitioneringsmetod (om du inte använder Master Boot Record (MBR) partitioneringsmetod).

Redigera fstab-Filen

Öppna fstab-filen i en textredigerare. Vi använder `gedit`, en enkel redigerare som finns i de flesta Linux-distributioner.

sudo gedit /etc/fstab

Redigeraren öppnas med din fstab-fil inläst.

Denna fstab-fil har redan två poster. De är partitionen på den befintliga hårddisken /dev/sda1 och växlingsfilsystemet. Var försiktig så att du inte ändrar dessa poster.

Vi behöver lägga till två nya poster i fstab-filen. En för partitionen på SCSI-enheten och en för partitionen på SSD-enheten. Vi lägger till SCSI-partitionen först. Notera att rader som börjar med en hash # är kommentarer.

I fältet ”filsystem” kommer vi att använda UUID som `blkid` hämtade åt oss tidigare. Börja raden med ”UUID=” och klistra sedan in UUID. Tryck på mellanslag eller tab.
För ”monteringspunkt” fältet kommer vi att använda monteringspunkten som vi skapade tidigare, /mnt/scsi. Du bör använda lämplig monteringspunkt från ditt system. Tryck på mellanslag eller tab.
För ”typ” kommer vi att ange ext4, vilket är typen av filsystem på vår partition. Tryck på mellanslag eller tab.
I ”alternativ”-fältet kommer vi att använda de alternativ som vi hämtade med `cat /etc/mtab`. De är ”rw, relatime”. Tryck på mellanslag eller tab.
Fältet ”dump” är nollställt. Tryck på mellanslag eller tab.
Fältet ”pass” är nollställt.

Nu lägger vi till fstab-partitionen på SSD-enheten på en separat rad.

I fältet ”filsystem” anger vi UUID som `blkid` hämtade för partitionen på SSD-enheten. Börja raden med ”UUID=” och klistra in UUID. Tryck på mellanslag eller tab.
För ”monteringspunkt”-fältet kommer vi att använda monteringspunkten som vi skapade tidigare, /mnt/ssd. Tryck på mellanslag eller tab.
För ”typ” kommer vi att ange ext4, vilket är typen av filsystem på vår partition. Tryck på mellanslag eller tab.
I ”alternativ”-fältet – bara för att göra de två nya posterna olika i vårt exempel – använder vi alternativet ”defaults”. Tryck på mellanslag eller tab.
Fältet ”dump” är nollställt. Tryck på mellanslag eller tab.
Fältet ”pass” är nollställt.

Spara filen och stäng redigeraren.

Testa fstab Utan Att Starta Om

Vi kan demontera våra nya enheter och sedan tvinga fram en uppdatering av fstab-filen. En lyckad montering av våra nya partitioner kommer att verifiera att inställningarna och parametrarna som vi har angett är syntaktiskt korrekta. Det betyder att vår fstab-fil bör bearbetas korrekt under en omstart eller startsekvens.

Använd det här kommandot för att demontera SCSI-enheten. Observera att det bara finns ett ”n” i ”umount”:

sudo umount /dev/sdb1

För att demontera SSD-enheten, använd det här kommandot:

sudo umount /dev/sdc1

Nu ska vi använda `lsblk` för att kontrollera om dessa blockenheter är monterade.

lsblk | grep sd

Och vi ser att blockenheterna finns i datorn, men inte monterade någonstans.

Vi kan använda kommandot `mount` med alternativet -a (all) för att montera om alla filsystem i fstab.

sudo mount -a

Och vi kan kontrollera en gång till med `lsblk` för att se om våra nya partitioner nu är monterade:

lsblk | grep sd

Allt är monterat där det ska. Allt vi behöver göra nu är att ändra ägandet av monteringspunkterna, annars kommer root att vara den enda som har tillgång till de nya lagringsenheterna.

Vi kan göra detta enkelt med `chown`. Det här är kommandot för SCSI-monter