Hvordan skrive en fstab-fil på Linux

Legger du til en ny harddisk eller solid-state-stasjon til Linux-datamaskinen din? Du må redigere fstab-filen. Mange synes selve ideen er skummel. Ja, det er viktig at du får det riktig, men bevæpnet med riktig kunnskap er det virkelig ikke vanskelig. Vi går deg gjennom prosessen med å redigere fstab-filen for å integrere den nye stasjonen i filsystemet.

fstab, filsystemtabellen

Selv om det ikke er for komplisert å legge til en ny harddisk på en Linux-datamaskin, kan det være litt forvirrende første gang du prøver. Du kobler til maskinvaren, slår på datamaskinen og logger på operativsystemet. Men du kan ikke se den nye stasjonen din noe sted. Hvorfor dukker den ikke opp? Hvordan får du Linux til å «se» stasjonen slik at du kan begynne å konfigurere den?

Faktisk har Linux sett maskinvaren din, men den kunngjør det ikke uten videre. Eller til og med gi deg et hint om at den har funnet din nye maskinvare. Du må spørre Linux for å få informasjonen du trenger for å legge inn i fstab-filen din.

Slik setter du opp den nye harddisken slik at Linux – og du – kan se den og bruke den. Det er to deler av prosessen. Den første delen er å gjøre litt rekognosering for å identifisere harddisken og samle litt informasjon om den. Den andre delen er redigering av fstab-filen ved å bruke informasjonen vi har samlet inn i rekognoseringsfasen.

Finne din nye stasjon

Vi legger til to nye stasjoner til dette systemet. Den ene er en 32 GB mekanisk harddisk (HD), og den andre er en 16 GB solid-state-stasjon (SSD).

Vi må vite at Linux kan se dem, og hvilke blokkenheter Linux bruker for dem. I Linux og Unix-lignende operativsystemer, en blokkenhet er en spesiell fil som fungerer som et grensesnitt til en enhet som data kan leses fra og skrives til (med mindre den er skrivebeskyttet). Blokkenheter representerer ofte en masselagringsenhet av noe slag (for eksempel en partisjon på en harddisk eller en CD-ROM. De er opprettet i /dev-katalogen.

Vi kan bruke lsblk-kommandoen til liste opp blokkeringsenhetene koblet til din Linux-datamaskin.

lsblk

Utdata fra lsblk er i kolonner.

Kolonnene er:

Navn: Dette er enhetsnavnet. Enhetsnavn som starter «sd» og etterfølges av en bokstav representerer SCSI-harddisker. Bokstaven identifiserer individuelle harddisker, med «a» som den første, «b». å være den andre og så videre. Hvis det er lagt til et nummer, indikerer det en partisjon. For eksempel vil «sdb2» være partisjon 2 på den andre SCSI-harddisken.
Maj:Min: Denne kolonnen inneholder hoved- og undernummeret til enheten. Hovedtallet indikerer typen enhet (eller mer presist, typen driver som brukes til å snakke med enheten). Det mindre antallet er en telling av antall enheter av den typen.
Rm: Denne kolonnen viser om enheten er flyttbar eller ikke. Merk at enheten sr0 har en verdi på 1, noe som indikerer at den kan fjernes. Dette er en CD-ROM-stasjon.
Størrelse: Dette er mengden data som kan lagres i enheten.
Ro: Denne kolonnen vil vise 1 for skrivebeskyttede enheter og 0 for lese-skriveenheter. Løkkeenhetene er alle skrivebeskyttet.
Type: Dette identifiserer typen enhet. «Disk»-oppføringen betyr en diskstasjon, «del»-oppføringen står for partisjon, og «rom» betyr Kun Les minne (CD ROM).
Monteringspunkt: Dette viser punktet i filsystemet der denne enheten er montert. Hvis dette er tomt, er ikke enheten montert.

I skjermbildet ovenfor kan du se at løkkeenhetene alle er gitt et hovednummer på 7 (som betyr en loopback- eller loop-enhet), og de underordnede tallene øker ganske enkelt med 1 hver gang. loop-enheter brukes med squashfs-filsystemet. Et squashfs-filsystem opprettes hver gang en applikasjon installeres ved hjelp av kjipt pakkehåndteringssystem.

SCSI-harddiskene får navn som sda, sdb og sdc, og alle har et hovednummer på 8 (SCSI-harddisk). De mindre tallene er gruppert i 16-tallet. De underordnede tallene for den første stasjonen, sda , går fra 0 til 15. 0-tallet representerer den fysiske stasjonen, og det underordnede tallet 1 representerer den første partisjonen på den stasjonen. For den andre stasjonen, sdb , går de mindre tallene fra 16 til 31. 16 representerer den fysiske stasjonen, og 17 representerer den første partisjonen på den stasjonen. De neste 16 tallene, 32 til 47, brukes for de mindre tallene til sdc , og så videre.

  Hvordan installere Delft-ikontemaet i Linux

Andre vanlige store tall er 3 (for a IDE-harddisk) og 11 for CD-ROM.

Faktisk er /dev/sr0-stilen for SDCSI CD-ROM-stasjoner utdatert. Det godkjente formatet er /dev/scd0. Til tross for det var /dev/sr0-formatet fortsatt i bruk på alle maskinene som ble brukt til å undersøke denne artikkelen.

Kjernedokumentasjonen inneholder en lang liste over alle verdier som dur og moll kan ta. Det er en overraskende lang liste.

For å rydde opp i utdataene fra lsblk kan vi bare bruke grep til å velge gjenstandene av interesse til oss. Vi vet at vi ikke har lagt til en loop-enhet, så la oss velge alle SCSI-harddiskene. vi vet at disse vil ha «sd» i navnene sine.

lsblk | grep sd

Denne kommandoen vil få grep til å skrive ut bare linjer som har «sd» i. På vår testmaskin ser vi:

Så vi har tre SCSI-stasjoner. Den første, /dev/sda , er montert i roten av filsystemet, /. De to andre er ikke montert i det hele tatt, noe som er å forvente for helt nye stasjoner. Vi kan se at stasjonen /dev/sdb er 32 GB i størrelse, noe som betyr at det er vår tradisjonelle mekaniske stasjon. Drive /dev/sdc er 16 GB i størrelse, og dette er vår SSD-stasjon.

Faktisk, siden dette er en virtuell datamaskin, er disse også virtuelle disker. Så SSD-en dukker opp akkurat som en SCSI-mekanisk stasjon. På mitt vanlige skrivebord min NVMe SSD vises som /dev/nvme0n1, og den første partisjonen på den er /dev/nvme0n1p1. Hovedtallet er 259. Disse forskjellene endrer ikke hva vi må gjøre i fstab-filen, men vær oppmerksom på at hvis du har en SSD, kommer den ikke til å vises som en fysisk stasjon.

Dessuten vil stasjonene dine sannsynligvis ikke ha en partisjon på dem hvis de er helt nye. Du kan bruke fdisk til å lage en partisjon om nødvendig.

Identifisere roterende og ikke-roterende stasjoner

Hvis vi bruker alternativet -o (utgang) med lsblk og legger til ROTA-kolonnen (roterende) på skjermen, vil lsblk bruke en 1 for å indikere en roterende lagringsenhet (mekanisk stasjon) og en 0 for å indikere en ikke-roterende lagringsenhet (solid state-stasjon).

lsblk -o +ROTA | grep sd

Vi får en ekstra kolonne til høyre på skjermen, som er ROTA (roterende) kolonne. Som du kan se, har «SSD» en 0 for enheten og partisjonen. Det er fornuftig fordi en SSD er en ikke-roterende lagringsenhet.

Montering av filsystemene

Før vi begynner å tenke på fstab-filen, la oss sjekke at vi kan montere stasjonene for hånd. På denne måten, hvis noe ikke fungerer når vi bruker fstab-filen, vet vi at problemet må være vår syntaks og ikke et problem med selve stasjonen.

Vi oppretter noen midlertidige monteringspunkter i /mnt-katalogen. Du må bruke sudo , og det blir du bedt om passordet ditt.

sudo mkdir /mnt/scsi

sudo mkdir /mnt/ssd

La oss nå montere SCSI-stasjonen på det nye monteringspunktet. Vi bruker mount-kommandoen i sin enkleste form. Vi vil fortelle den navnet på partisjonen vi ønsker å montere, og monteringspunktet vi vil ha den montert på. mount vil montere filsystemet på den partisjonen på monteringspunktet vi angir.

Vi spesifiserer partisjonen som inneholder filsystemet, ikke stasjonen, så sørg for å inkludere sifferet for partisjonen, i dette tilfellet «1».

sudo mount /dev/sdb1 /mnt/scsi

Hvis alt går bra, vil det ikke være noe svar fra mount. Du går stille tilbake til ledeteksten.

Det er like enkelt å montere SSD-en. Vi forteller montere hvilken partisjon på hvilken enhet som skal monteres, og monteringspunktet den skal monteres på.

sudo mount /dev/sdc1 /mnt/ssd

Igjen, stillhet er gull.

Sjekker festene

For å bekrefte at monteringene har funnet sted, bruker vi lsblk igjen. Vi sender utdataene gjennom grep og velger «sda1», «sdb2» og «sdc1» oppføringene.

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

mount viser oss de tre monterte partisjonene. Det er de to vi nettopp har montert og den originale partisjonen montert på /.

Partisjonen /dev/sdb1 er montert på /mnt/scsi, og er på en roterende lagringsenhet. Partisjonen /dev/sdc1 er montert på /mnt/ssd og er på en ikke-roterende lagringsenhet. Alt virker bra.

Nå må vi konfigurere fstab-filen slik at disse enhetene monteres hver gang datamaskinen startes opp.

  Slik bruker du FTP-kommandoen på Linux

fstab-filen

Fstab-filen inneholder en oppføring for hvert filsystem som er montert når datamaskinen startes på nytt. Hver oppføring består av seks felter. Feltene er:

Filsystem: Ikke, som navnet antyder, typen filsystem på partisjonen (det er det typefeltet er for). Dette er identifikatoren for partisjonen som skal monteres.
Monteringspunkt: Plasseringen i filsystemet der du ønsker å ha partisjonen montert.
Type: Type filsystem på partisjonen.
Alternativer: Hvert filsystem kan ha alternativer spesifisert for å slå på eller av funksjonalitet.
Dump: En referanse til en alt annet enn foreldet måte å sikkerhetskopiere filsystemer på, hvor hele filsystemet ble «dumpet» til tape.
Pass: Dette er «bestått»-flagget. Den forteller Linux hvilke partisjoner som skal sjekkes for feil ved å bruke fsck , og i hvilken rekkefølge. Din hovedoppstarts- og operativsystempartisjon bør være 1, og resten kan settes til 2. Hvis flagget er satt til null, betyr det «ikke sjekk i det hele tatt.» Hvis filsystemet ditt ikke er et journalfilsystem (som ext2 eller FAT16/32, for eksempel), er det best å slå av dette ved å sette det til 0.

Disse feltene må spesifiseres i denne rekkefølgen, og de må ha et mellomrom eller en tabulator mellom seg. Å finne verdiene for disse feltene kan være skremmende, spesielt verdiene for «alternativer»-feltet. Alternativene i feltet «Alternativer» må være i en kommadelt liste uten mellomrom.

Mannsiden for hvert filsystem vil vise alternativene som kan brukes. ext4 har ca 40 alternativer. Her er noen av de mer vanlige alternativene:

Auto: Filsystemet monteres automatisk ved oppstart.
Noauto: Filsystemet monteres kun når du skriver inn mount -a kommandoen.
Exec: Kjøring av binærfiler er tillatt på dette filsystemet.
Noexec: Kjøring av binærfiler er ikke tillatt på dette filsystemet.
Ro: Filsystemet skal monteres som skrivebeskyttet.
Rw: Filsystemet skal monteres som lese-skrive.
Synkronisering: Filskriving bør utføres umiddelbart og ikke bufret. Best reservert for disketter, hvis noen fortsatt bruker dem. Pådrar seg prestasjonsstraff.
Asynkron: Filskriving bør bufres og optimaliseres.
Bruker: Enhver bruker har lov til å montere filsystemet.
Nouser: Rotbrukeren er den eneste brukeren som kan montere dette filsystemet.
Standarder: Dette er en kortfattet måte å spesifisere et sett med vanlige innstillinger: rw, suid, dev, exec, auto, nouser og async).
Suid: Tillater drift av suid- og sgid-bitene. Suid-biten brukes til å tillate at en fil kjøres som root, av en vanlig bruker, uten å gi brukeren full root-rettigheter. Når sgid-biten er satt på en katalog, har filer og kataloger som er opprettet i den katalogen sitt gruppeeierskap satt til den for katalogenikke til gruppen til brukeren som opprettet dem.
Nosuid: Ikke tillat bruk av suid- og sgid-bitene.
Noatime: – Ikke oppdater filtilgangstidene på filsystemet. Dette kan hjelpe ytelsen på gammel maskinvare.
Nodiratime: Ikke oppdater katalogtilgangstidene på filsystemet.
Relatid: Oppdater filtilgangstidene i forhold til den endrede tiden.

«Standard»-alternativet er et godt åpningsspill. Du kan legge til eller fjerne flere alternativer hvis noe finjustering er nødvendig. Hvis det bare var en fin måte å få innstillingene du trenger, i den rekkefølgen du trenger å legge dem inn i fstab-filen.

Skriv inn mtab-filen.

mtab-filen

mtab-filen er listen over filsystemer som er montert for øyeblikket. Dette er i motsetning til fstab-filen som viser filsystemene som skal monteres ved oppstart. Mtab-filen inkluderer manuelt monterte filsystemer. Vi har allerede montert våre nye stasjoner, så de bør vises i mtab-filen.

Vi kan se innholdet i mtab-filen ved hjelp av cat. Vi vil begrense utgangen ved å sende den gjennom grep og se kun på /dev/sdb1 og /dev/sdc1.

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

Utdataene viser mtab-oppføringene for disse to partisjonene.

Vi kunne løfte disse verdiene og slippe dem rett inn i fstab-filen, og sørge for at det var et mellomrom eller en tabulator mellom hvert felt. Og det ville være det. Stasjonene ville bli montert når vi startet på nytt.

Det er to forbehold til det. Det ene er monteringspunktet. Vi opprettet midlertidige monteringspunkter bare for å bevise at vi kunne montere de nye partisjonene på de nye stasjonene. Vi måtte angi de virkelige monteringspunktene i stedet for våre midlertidige – hvis de var annerledes.

Det andre forbeholdet er at hvis vi bruker innstillingene fra mtab-filen, vil vi bruke blokkenhetsfilen som identifikator for hver partisjon. Det ville fungere, men verdiene /dev/sda og /dev/sdb og så videre står i fare for å endres hvis ny masselagringsmaskinvare legges til datamaskinen. Det ville bety at innstillingene i fstab-filen ville være feil.

  Hvordan spille Max Payne på Linux

Hver partisjon har en Universelt unik identifikator (UUID), som vi kan bruke til å identifisere partisjonen. Dette vil aldri endre seg. Hvis vi bruker UUID for å identifisere partisjonene i fstab-filen, vil innstillingene alltid forbli nøyaktige og sanne.

Hvis du bruker de nye partisjonene som en del av en Redundant rekke rimelige disker (RAID)-system, sjekk med dokumentasjonen for det systemet. Det kan spesifisere at du må bruke blokkeringsenhetsidentifikatoren i stedet for UUID.

Finne en partisjons UUID

For å finne UUID til en partisjon kan vi bruke blkid til skrive ut attributtene til blokkenhetene. Vi vil begrense utdataene til våre to nye partisjoner på våre nye stasjoner:

blkid | grep sd[b-c]1

Utdataene inkluderer UUID for hver partisjon.

PARTUUID er en form for UUID som kan brukes med GUID-partisjonstabeller (GPT) partisjoneringsmetode (hvis du ikke bruker Master Boot Record (MBR) partisjoneringsmetode).

Redigere fstab-filen

Åpne fstab-filen i et redigeringsprogram. Vi bruker gedit, en brukervennlig editor som finnes i de fleste Linux-distribusjoner.

sudo gedit /etc/fstab

Editoren vises med fstab-filen din lastet inn.

Denne fstab-filen har allerede to oppføringer. De er partisjonen på den eksisterende harddisken /dev/sda1, og swap-filsystemet. Vær forsiktig så du ikke endrer disse oppføringene.

Vi må legge til to nye oppføringer i fstab-filen. En for partisjonen på SCSI-stasjonen og en for partisjonen på SSD-stasjonen. Vi legger til SCSI-partisjonen først. Merk at linjer som starter med en hash # er kommentarer.

I «filsystem»-feltet bruker vi UUID som blkid hentet for oss tidligere. Start linjen med «UUID=» og lim deretter inn UUID. Trykk mellomrom eller tabulator.
For «monteringspunkt»-feltet skal vi bruke monteringspunktet vi opprettet tidligere, /mnt/scsi. Du vil bruke riktig monteringspunkt fra systemet ditt. Trykk mellomrom eller tabulator.
For «type» skal vi skrive inn ext4 , som er typen filsystem på partisjonen vår. Trykk mellomrom eller tabulator.
I «alternativer»-feltet bruker vi alternativene vi hentet ved hjelp av cat /etc/mtab. Disse er «rw, relatime». Trykk mellomrom eller tabulator.
«Dump»-feltet er satt til null. Trykk mellomrom eller tabulator.
«Pass»-feltet er satt til null.

Nå legger vi til fstab-partisjonen på SSD-stasjonen på en egen linje.

I «filsystem»-feltet skriver vi inn UUID som blkid hentet for partisjonen på SSD-stasjonen. Start linjen med «UUID=» og lim deretter inn UUID. Trykk mellomrom eller tabulator.
For «monteringspunkt»-feltet skal vi bruke monteringspunktet vi opprettet tidligere, /mnt/ssd. Trykk mellomrom eller tabulator.
For «type» skal vi skrive inn ext4 , som er typen filsystem på partisjonen vår. Trykk mellomrom eller tabulator.
I «alternativer»-feltet – bare for å gjøre de to nye oppføringene forskjellige i vårt eksempel – bruker vi «standard»-alternativet. Trykk mellomrom eller tabulator.
«Dump»-feltet er satt til null. Trykk mellomrom eller tabulator.
«Pass»-feltet er satt til null.

Lagre filen og lukk redigeringsprogrammet.

Tester fstab uten omstart

Vi kan demontere våre nye stasjoner og deretter tvinge en oppdatering på fstab-filen. Vellykket montering av våre nye partisjoner vil bekrefte at innstillingene og parameterne vi har angitt er syntaktisk korrekte. Det betyr at fstab-filen vår skal behandles riktig under en omstart eller oppstartssekvens.

For å demontere SCSI-stasjonen, bruk denne kommandoen. Merk at det bare er én «n» i «umount»:

sudo umount /dev/sdb1

For å demontere SSD-stasjonen, bruk denne kommandoen:

sudo umount /dev/sdc1

Nå skal vi bruke lsblk for å sjekke om disse blokkenhetene er montert.

lsblk | grep sd

Og vi ser at blokkenhetene er tilstede i datamaskinen, men ikke montert noe sted.

Vi kan bruke mount-kommandoen med alternativet -a (alle) for å remontere alle filsystemene i fstab.

sudo mount -a

Og vi kan sjekke en gang til med lsblk for å se om våre nye partisjoner nå er montert:

lsblk | grep sd

Alt er montert der det skal. Alt vi trenger å gjøre nå er å endre eierskapet til monteringspunktene, ellers vil root være den eneste som kan få tilgang til de nye lagringsenhetene.

Vi kan gjøre dette enkelt ved å bruke chown. Dette er kommandoen for SCSI-monteringspunktet:

sudo chown dave:users /mnt/scsi

Og dette er kommandoen for SSD-monteringspunktet:

sudo chown dave:users /mnt/ssd

Vi kan nå starte datamaskinen på nytt med tillit, vel vitende om at partisjonene vi har lagt til vil bli montert for oss, og vi har tilgang til dem.

Ikke så skummelt likevel

Alt det harde arbeidet er i rekognoseringsfasen – og det var heller ikke vanskelig. Å redigere fstab-filen når du har samlet informasjonen du trenger er en lek. Forberedelse er alt.