Hur man skriver en fstab-fil på Linux

Lägger du till en ny hårddisk eller solid state-enhet till din Linux-dator? Du måste redigera din fstab-fil. Många tycker själva idén är skrämmande. Ja, det är viktigt att du får det rätt, men beväpnad med rätt kunskap är det verkligen inte svårt. Vi stegar dig genom processen att redigera din fstab-fil för att integrera din nya enhet i ditt filsystem.

fstab, filsystemtabellen

Även om det inte är alltför komplicerat att lägga till en ny hårddisk till en Linux-dator, kan det vara lite förvirrande första gången du försöker. Du ansluter hårdvaran, sätter på datorn och loggar in på 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 konfigurera den?

Faktum är att Linux har sett din hårdvara, men den tillkännager det inte så lätt. Eller till och med ge dig en hint om att den har hittat din nya hårdvara. Du måste förhöra Linux för att få informationen du behöver lägga in i din fstab-fil.

Så här ställer du in din nya hårddisk så att Linux – och du – kan se den och använda den. Det finns två delar av processen. Den första delen är att göra lite spaning 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 har samlat in under spaningsfasen.

Hitta din nya enhet

Vi lägger till två nya enheter till det här systemet. Den ena är en 32 GB mekanisk hårddisk (HD), och den andra är en 16 GB solid-state drive (SSD).

Vi måste veta att Linux kan se dem och vilka blockenheter Linux använder för dem. I Linux och Unix-liknande operativsystem, en blockenhet är en speciell fil som fungerar som ett gränssnitt till en enhet som data kan läsas från och skrivas till (såvida den inte är skrivskyddad). Blockenheter representerar ofta en masslagringsenhet av något slag (till exempel en partition på en hårddisk eller en CD-ROM. De skapas i /dev-katalogen.

Vi kan använda kommandot lsblk för att lista de blockerade enheterna ansluten till din Linux-dator.

lsblk

Utdata från lsblk är i kolumner.

Kolumnerna är:

Namn: Detta är enhetens namn. Enhetsnamn som börjar ”sd” och följs av en bokstav representerar SCSI hårddiskar. Bokstaven identifierar enskilda hårddiskar, där ”a” är det första, ”b”. att vara den andra och så vidare. Om det finns ett tillagt nummer indikerar det en partition. Till exempel skulle ”sdb2” vara partition 2 på den andra SCSI-hårddisken.
Maj:Min: Den här kolumnen innehåller huvud- och undernummer för enheten. Huvudsiffran anger typen av enhet (eller, mer exakt, vilken typ av drivrutin som används för att prata med enheten). Det mindre antalet är en räkning av antalet enheter av den typen.
Rm: Denna kolumn visar om enheten är borttagbar eller inte. Observera att enheten sr0 har värdet 1, vilket indikerar att den är borttagbar. Detta är en CD-ROM-enhet.
Storlek: Det här är mängden data som kan lagras i enheten.
Ro: Den här kolumnen visar 1 för skrivskyddade enheter och 0 för läs-skrivenheter. Slinganordningarna är alla skrivskyddade.
Typ: Detta identifierar typen av enhet. ”Disk”-posten betyder en diskenhet, ”del”-posten står för partition och ”rom” betyder Skrivskyddat minne (CD-ROM).
Mountpoint: Detta visar den punkt i filsystemet där denna enhet är monterad. Om detta är tomt är enheten inte monterad.

I skärmdumpen ovan kan du se att slingenheterna alla får ett stort antal 7 (vilket betyder en loopback, eller loop, enhet), och de mindre talen ökar helt enkelt med 1 varje gång. loop-enheter används med squashfs filsystem. Ett squashfs-filsystem skapas varje gång en applikation installeras med hjälp av pigg pakethanteringssystem.

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

Andra vanliga stora tal är 3 (för a IDE hårddisk) och 11 för CD-ROM.

Egentligen är /dev/sr0-stilen för SDCSI CD-ROM-enheter utfasad. Det godkända formatet är /dev/scd0. Trots det användes /dev/sr0-formatet fortfarande på alla maskiner som användes för att undersöka den här artikeln.

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

För att rensa utdata från lsblk kan vi använda grep för att bara välja föremålen av intresse till oss. Vi vet att vi inte har lagt till en loop-enhet, så låt oss välja alla SCSI-hårddiskar. vi vet att dessa kommer att ha ”sd” i sina namn.

lsblk | grep sd

Detta kommando gör att grep endast skriver ut rader som har ”sd” i. På vår testmaskin ser vi:

Så vi har tre SCSI-enheter. Den första, /dev/sda , är monterad i roten av filsystemet, /. De andra två är inte alls monterade, vilket är att vänta för helt nya drev. Vi kan se att enheten /dev/sdb är 32 GB stor, vilket betyder att det är vår traditionella mekaniska enhet. Drive /dev/sdc är 16 GB stor, och det här är vår SSD-enhet.

I själva verket, eftersom detta är en virtuell dator, är dessa också virtuella diskar. Så SSD:n dyker upp precis som en SCSI-mekanisk enhet. På mitt vanliga skrivbord min NVMe SSD dyker upp som /dev/nvme0n1, och den första partitionen på den är /dev/nvme0n1p1. Dess största antal är 259. Dessa skillnader ändrar inte vad vi måste 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 förmodligen inte att ha en partition på dem 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 drivenheter

Om vi ​​använder alternativet -o (utgång) med lsblk och lägger till kolumnen ROTA (roterande) till displayen, 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 (solid-state-enhet).

lsblk -o +ROTA | grep sd

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

Montering av filsystemen

Innan vi börjar tänka på fstab-filen, låt oss kontrollera att vi kan montera enheterna för hand. På så sätt, om något inte fungerar när vi använder fstab-filen, vet vi att problemet måste vara vår syntax och inte ett problem med själva enheten.

Vi kommer att skapa några tillfälliga monteringspunkter i katalogen /mnt. Du måste använda sudo och det kommer du att göra ombedd 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 dess enklaste form. Vi kommer att berätta namnet på den partition vi vill montera och monteringspunkten vi vill att den ska monteras på. mount kommer att montera filsystemet på den partitionen vid den monteringspunkt vi anger.

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

sudo mount /dev/sdb1 /mnt/scsi

Om allt går bra kommer det inte att finnas något svar från mount. Du återgår tyst till kommandotolken.

Att montera SSD är lika enkelt. Vi berättar för monteringen vilken partition på vilken enhet som ska monteras och monteringspunkten den ska monteras på.

sudo mount /dev/sdc1 /mnt/ssd

Återigen är tystnaden gyllene.

Kontrollerar fästena

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 ”sda1”, ”sdb2” och ”sdc1”-posterna.

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

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

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

Nu måste vi konfigurera fstab-filen så att dessa enheter monteras varje gång datorn startas.

Fstab-filen

Fstab-filen innehåller en post för varje filsystem som monteras när din dator startas om. Varje post består av sex fält. Fälten är:

Filsystem: Inte, som namnet antyder, typen av filsystem på partitionen (det är vad typfältet är till för). Detta är identifieraren för den partition som ska monteras.
Monteringspunkt: Den plats i filsystemet där du vill ha partitionen monterad.
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: Detta är flaggan för ”passerande”. Det talar om för Linux vilka partitioner som ska kontrolleras för fel med fsck , och i vilken ordning. Din huvudstart- 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 ext2 eller FAT16/32, till exempel), är det bäst att stänga av detta genom att ställa in det på 0.

Dessa fält måste anges i denna ordning, och de måste ha ett mellanslag eller en tabb mellan dem. Att hitta värdena för dessa fält kan vara skrämmande, särskilt värdena för fältet ”alternativ”. Alternativen i fältet ”alternativ” måste finnas i en kommaseparerad lista utan mellanslag mellan dem.

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

Auto: Filsystemet monteras automatiskt vid uppstart.
Noauto: Filsystemet monteras bara när du anger kommandot mount -a.
Exec: Exekvering av binära filer är tillåten i detta filsystem.
Noexec: Det är inte tillåtet att köra binärer i detta filsystem.
Ro: Filsystemet ska monteras som skrivskyddat.
Rw: Filsystemet ska monteras som läs-skriv.
Synkronisering: Filskrivning ska utföras omedelbart och inte buffras. Bäst reserverad för disketter, om någon fortfarande använder dem. Medför prestationsstraff.
Async: Filskrivningar bör buffras och optimeras.
Användare: Alla användare får montera filsystemet.
Nouser: Rotanvändaren är den enda användare som kan montera detta filsystem.
Standardvärden: Detta är ett förkortat sätt att specificera en uppsättning vanliga inställningar: rw, suid, dev, exec, auto, nouser och async).
Suid: Tillåter driften av suid- och sgid-bitarna. Suid-biten används för att tillåta en fil att exekveras som root, av en normal användare, utan att ge användaren fullständiga root-privilegier. När sgid-biten är inställd på en katalog har filer och kataloger som skapats i den katalogen sitt gruppägande inställt på katalogensinte till gruppen för användaren som skapade dem.
Nosuid: Tillåt inte användning av suid- och sgid-bitarna.
Noatime: – Uppdatera inte filåtkomsttiderna på filsystemet. Detta kan hjälpa prestanda på gammal hårdvara.
Nodiratime: Uppdatera inte katalogåtkomsttiderna på filsystemet.
Relatid: Uppdatera filåtkomsttider i förhållande till filens ändrade tid.

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

Ange mtab-filen.

mtab-filen

mtab-filen är listan över för närvarande monterade filsystem. Detta är i motsats till fstab-filen som listar de filsystem som ska monteras vid uppstart. Mtab-filen innehåller manuellt monterade filsystem. Vi har redan monterat våra nya enheter, så de borde dyka upp i mtab-filen.

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

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

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

Vi kunde lyfta dessa värden och släppa dem direkt i fstab-filen och se till att det fanns ett mellanslag eller en flik mellan varje fält. Och det skulle vara det. Enheterna skulle monteras när vi startade om.

Det finns två förbehåll för det. Den ena är monteringspunkten. Vi skapade tillfälliga monteringspunkter bara för att bevisa att vi kunde montera de nya partitionerna på de nya enheterna. Vi skulle behöva ange de riktiga 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 och så vidare riskerar att ä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. Detta kommer aldrig att förändras. Om vi ​​använder UUID för att identifiera partitionerna i fstab-filen kommer inställningarna alltid att förbli korrekta och sanna.

Om du använder dina nya partitioner som en del av en Redundant utbud av billiga diskar (RAID)-system, kontrollera med dokumentationen för det systemet. Det kan ange att du måste använda blockeringsenhetsidentifieraren istället för UUID.

Hitta en partitions UUID

För att hitta UUID för en partition kan vi använda blkid till skriva ut attributen för blockenheterna. Vi kommer att begränsa utdata till våra två nya partitioner på våra nya enheter:

blkid | grep sd[b-c]1

Utdata inkluderar UUID för varje partition.

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

Redigera fstab-filen

Öppna fstab-filen i en editor. Vi använder gedit, en lättanvänd redigerare som finns i de flesta Linux-distributioner.

sudo gedit /etc/fstab

Redaktören visas med din fstab-fil laddad i den.

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 måste 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. Observera att rader som börjar med ett 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å blanksteg eller tabb.
För fältet ”monteringspunkt” kommer vi att använda monteringspunkten vi skapade tidigare, /mnt/scsi. Du skulle använda lämplig monteringspunkt från ditt system. Tryck på blanksteg eller tabb.
För ”typ” kommer vi att ange ext4 , vilket är typen av filsystem på vår partition. Tryck på blanksteg eller tabb.
I fältet ”alternativ” kommer vi att använda alternativen som vi hämtade med cat /etc/mtab. Dessa är ”rw, relatime”. Tryck på blanksteg eller tabb.
Fältet ”dump” är nollställt. Tryck på blanksteg eller tabb.
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 sedan in UUID. Tryck på blanksteg eller tabb.
För ”monteringspunkt”-fältet kommer vi att använda monteringspunkten vi skapade tidigare, /mnt/ssd. Tryck på blanksteg eller tabb.
För ”typ” kommer vi att ange ext4 , vilket är typen av filsystem på vår partition. Tryck på blanksteg eller tabb.
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å blanksteg eller tabb.
Fältet ”dump” är nollställt. Tryck på blanksteg eller tabb.
Fältet ”pass” är nollställt.

Spara filen och stäng redigeraren.

Testar fstab utan att starta om

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

Använd detta kommando för att avmontera SCSI-enheten. Observera att det bara finns ett ”n” i ”umount”:

sudo umount /dev/sdb1

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

sudo umount /dev/sdc1

Nu kommer vi att 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 kan komma åt de nya lagringsenheterna.

Vi kan göra detta enkelt med chown. Detta är kommandot för SCSI-monteringspunkten:

sudo chown dave:users /mnt/scsi

Och det här är kommandot för SSD-monteringspunkten:

sudo chown dave:users /mnt/ssd

Vi kan nu starta om vår dator med tillförsikt, i vetskap om att de partitioner vi har lagt till kommer att monteras åt oss, och vi har tillgång till dem.

Inte så läskigt trots allt

Allt hårt arbete är i spaningsfasen — och det var inte svårt heller. Att redigera fstab-filen när du har samlat in den information du behöver är enkelt. Förberedelser är allt.