Har du lagt til en ny harddisk eller SSD til din Linux-maskin? Da må du justere fstab-filen. Mange synes tanken er skremmende. Det er viktig å få det riktig, men med rett kunnskap er det ikke vanskelig. Vi skal guide deg gjennom prosessen med å redigere fstab-filen for å integrere den nye disken i filsystemet.
fstab, filsystemtabellen
Selv om det ikke er spesielt komplisert å legge til en ny harddisk i en Linux-maskin, kan det virke forvirrende første gang. Du kobler til hardwaren, starter maskinen og logger inn i operativsystemet. Likevel kan du ikke se den nye disken. Hvorfor dukker den ikke opp? Hvordan får du Linux til å «se» disken, slik at du kan begynne å konfigurere den?
Linux har faktisk registrert hardwaren din, men den informerer ikke om det uten videre. Du må spørre Linux om informasjonen du trenger for å legge inn i fstab-filen.
Slik setter du opp den nye harddisken slik at Linux – og du – kan se den og bruke den. Det er to deler i prosessen. Først må du identifisere harddisken og samle litt informasjon om den. Deretter redigerer du fstab-filen ved hjelp av informasjonen du har samlet.
Finne den nye disken
I dette eksemplet legger vi til to nye disker. En 32 GB mekanisk harddisk (HD), og en 16 GB solid-state disk (SSD).
Vi må bekrefte at Linux kan se dem, og hvilke blokkenheter Linux bruker for dem. I Linux og Unix-lignende operativsystemer, er en blokkenhet 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, som en partisjon på en harddisk. De er opprettet i /dev-mappen.
Vi kan bruke `lsblk`-kommandoen for å liste opp blokkenheter koblet til din Linux-maskin.
lsblk
Utdata fra `lsblk` er i kolonner.
Kolonnene er:
Navn: Dette er enhetens navn. Enhetsnavn som begynner med «sd» og etterfølges av en bokstav, representerer SCSI-harddisker. Bokstaven identifiserer individuelle disker, med «a» som den første, «b» som 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 type enhet (eller mer presist, type driver). Det mindre tallet er antall enheter av den typen.
Rm: Denne kolonnen viser om enheten er flyttbar eller ikke. Enheten sr0 har verdien 1, som indikerer at den kan fjernes. Dette er en CD-ROM-stasjon.
Størrelse: Dette er mengden data som kan lagres på enheten.
Ro: Denne kolonnen viser 1 for skrivebeskyttede enheter, og 0 for lese-skriveenheter. Loop-enheter er alle skrivebeskyttet.
Type: Dette identifiserer typen enhet. «Disk» betyr en diskstasjon, «del» står for partisjon, og «rom» betyr Read Only Memory (CD-ROM).
Monteringspunkt: Dette viser punktet i filsystemet der enheten er montert. Hvis dette er tomt, er ikke enheten montert.
I skjermbildet ovenfor ser vi at loop-enhetene alle har et hovednummer på 7 (som betyr en loopback-enhet), og de underordnede tallene øker med 1 hver gang. Loop-enheter brukes med squashfs-filsystemet. Et squashfs-filsystem opprettes hver gang en applikasjon installeres ved hjelp av snap-pakkebehandlingssystemet.
SCSI-harddiskene får navn som sda, sdb og sdc, og har et hovednummer på 8 (SCSI-harddisk). De underordnede tallene er gruppert i 16-tall. For den første disken, sda, går de fra 0 til 15. 0 representerer den fysiske disken, og 1 representerer den første partisjonen. For den andre disken, sdb, går de fra 16 til 31. 16 representerer den fysiske disken, og 17 den første partisjonen. De neste 16 tallene, 32 til 47, brukes for de underordnede tallene til sdc, og så videre.
Andre vanlige hovedtall er 3 (for IDE-harddisker) og 11 for CD-ROM.
Faktisk er /dev/sr0-stilen for SDCSI CD-ROM-stasjoner utdatert. Det godkjente formatet er /dev/scd0. Likevel var /dev/sr0-formatet fortsatt i bruk på alle maskinene som ble brukt til å undersøke dette.
Kjernedokumentasjonen inneholder en lang liste over alle verdier hoved- og undertall kan ta. Det er en overraskende lang liste.
For å forenkle utdataene fra `lsblk`, kan vi bruke `grep` til å velge ut det som er interessant. Vi vet at vi ikke har lagt til en loop-enhet, så vi velger alle SCSI-harddiskene. Disse vil ha «sd» i navnene sine.
lsblk | grep sd
Denne kommandoen vil få `grep` til å skrive ut kun linjer som inneholder «sd». På vår testmaskin ser vi:
Vi har tre SCSI-disker. Den første, /dev/sda, er montert i rotmappen, /. De to andre er ikke montert i det hele tatt, som forventet for helt nye disker. Vi ser at /dev/sdb er 32 GB, som er den mekaniske disken. Disken /dev/sdc er 16 GB, som er SSD-disken.
Siden dette er en virtuell maskin, er dette også virtuelle disker. SSD-en vises som en SCSI-mekanisk disk. På min vanlige datamaskin vises min NVMe SSD som /dev/nvme0n1, og den første partisjonen er /dev/nvme0n1p1. Hovednummeret er 259. Disse forskjellene endrer ikke hva vi må gjøre i fstab-filen, men vær klar over at en SSD ikke nødvendigvis vises som en fysisk disk.
Nye disker har sannsynligvis ikke noen partisjoner. Du kan bruke `fdisk` for å lage en partisjon om nødvendig.
Identifisere roterende og ikke-roterende disker
Hvis vi bruker `-o` (output) med `lsblk` og legger til ROTA-kolonnen (rotating), vil `lsblk` bruke 1 for å indikere en roterende disk (mekanisk disk) og 0 for ikke-roterende disker (SSD).
lsblk -o +ROTA | grep sd
Vi får en ekstra kolonne, ROTA (rotating). SSD har 0 for enheten og partisjonen. Det er logisk, siden SSD ikke er en roterende lagringsenhet.
Montere filsystemene
Før vi begynner å tenke på fstab-filen, lar vi sjekke om vi kan montere diskene manuelt. På denne måten vet vi om det er problemer med selve disken, eller om problemet ligger i fstab-filen.
Vi lager noen midlertidige monteringspunkter i /mnt-mappen. Du må bruke `sudo`, og du vil bli bedt om passordet ditt.
sudo mkdir /mnt/scsi
sudo mkdir /mnt/ssd
La oss montere SCSI-disken. Vi bruker `mount`-kommandoen i sin enkleste form. Vi forteller den navnet på partisjonen vi vil montere, og monteringspunktet. `mount` vil montere filsystemet på partisjonen på monteringspunktet vi angir.
Vi spesifiserer partisjonen som inneholder filsystemet, ikke selve disken. Husk å inkludere sifferet for partisjonen, i dette tilfellet «1».
sudo mount /dev/sdb1 /mnt/scsi
Hvis alt går bra, vil ikke `mount` returnere noe. Du går stille tilbake til ledeteksten.
Det er like enkelt å montere SSD-en. Vi forteller `mount` hvilken partisjon på hvilken disk som skal monteres, og monteringspunktet.
sudo mount /dev/sdc1 /mnt/ssd
Igjen, ingen melding betyr at alt er ok.
Sjekke monteringen
For å bekrefte at monteringen har funnet sted, bruker vi `lsblk` igjen. Vi sender utdataene gjennom `grep` og velger «sda1», «sdb2» og «sdc1».
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 disk. Partisjonen /dev/sdc1 er montert på /mnt/ssd og er på en ikke-roterende disk. Alt ser bra ut.
Nå må vi konfigurere fstab-filen slik at disse enhetene monteres hver gang datamaskinen starter.
fstab-filen
Fstab-filen inneholder en oppføring for hvert filsystem som monteres ved oppstart. Hver oppføring består av seks felter. Feltene er:
Filsystem: Ikke typen filsystem (det er det type-feltet er for), men identifikatoren for partisjonen som skal monteres.
Monteringspunkt: Plasseringen i filsystemet der du ønsker å ha partisjonen montert.
Type: Typen filsystem på partisjonen.
Alternativer: Hvert filsystem kan ha alternativer spesifisert.
Dump: En referanse til en gammel måte å sikkerhetskopiere filsystemer på.
Pass: Forteller Linux hvilke partisjoner som skal sjekkes for feil ved å bruke `fsck`, og i hvilken rekkefølge. Hovedpartisjonen bør ha 1, resten kan settes til 2. Hvis flagget er null, betyr det «ikke sjekk». Hvis filsystemet ditt ikke er et journalfilsystem (som ext2 eller FAT16/32), er det best å slå av dette ved å sette det til 0.
Disse feltene må angis i denne rekkefølgen, med mellomrom eller tabulator mellom seg. Det kan være skremmende å finne verdiene for disse feltene, spesielt verdiene for «alternativer»-feltet. Alternativene i feltet «Alternativer» må være i en kommadelt liste uten mellomrom.
Manualsiden for hvert filsystem viser alternativene som kan brukes. `ext4` har omtrent 40 alternativer. Her er noen av de vanligere:
auto: Filsystemet monteres automatisk ved oppstart.
noauto: Filsystemet monteres kun når du skriver `mount -a`.
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 monteres som skrivebeskyttet.
rw: Filsystemet monteres som lese-skrive.
sync: Filskriving bør utføres umiddelbart og ikke bufres. Best for disketter, hvis noen fortsatt bruker dem. Medfører ytelsestap.
async: Filskriving bør bufres og optimaliseres.
user: Enhver bruker har lov til å montere filsystemet.
nouser: Kun root-brukeren kan montere dette filsystemet.
defaults: En samling vanlige innstillinger: `rw, suid, dev, exec, auto, nouser og async`.
suid: Tillater bruk av suid- og sgid-bitene. Suid-biten brukes for å tillate at en fil kjøres som root av en vanlig bruker, uten å gi brukeren fulle root-rettigheter. Når sgid-biten er satt på en mappe, har filer og mapper som er opprettet i den, samme gruppeeierskap som mappen, ikke som brukeren som opprettet dem.
nosuid: Ikke tillat bruk av suid- og sgid-bitene.
noatime: Ikke oppdater filtilgangstider på filsystemet. Kan forbedre ytelsen på gammel hardware.
nodiratime: Ikke oppdater katalogtilgangstider på filsystemet.
relatime: Oppdater filtilgangstider i forhold til endret tid.
«Defaults» er et godt utgangspunkt. Du kan legge til eller fjerne flere alternativer hvis finjustering er nødvendig. Hvis det bare var en enkel måte å få innstillingene i riktig rekkefølge i fstab-filen.
Det er her mtab-filen kommer inn i bildet.
mtab-filen
Mtab-filen er en liste over filsystemer som er montert. 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 disker, så de skal vises i mtab-filen.
Vi kan se innholdet i mtab-filen med `cat`. Vi begrenser utdataene med `grep` for å 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 kopiert disse verdiene rett inn i fstab-filen, og sørget for at det var et mellomrom eller en tabulator mellom hvert felt. Det ville fungert, og diskene ville ha blitt montert ved oppstart.
Det er to forbehold. Det ene er monteringspunktet. Vi opprettet midlertidige monteringspunkter for å bekrefte at vi kunne montere partisjonene. Vi må angi de virkelige monteringspunktene i stedet for de midlertidige – hvis de er forskjellige.
Det andre forbeholdet er at hvis vi bruker innstillingene fra mtab-filen, vil vi bruke blokkenhetsfilen som identifikator for hver partisjon. Det ville fungert, men verdiene /dev/sda og /dev/sdb kan endres dersom ny masselagringsenhet legges til. Det betyr at innstillingene i fstab-filen kan bli feil.
Hver partisjon har en universelt unik identifikator (UUID), som vi kan bruke for å identifisere partisjonen. Denne vil aldri endres. Hvis vi bruker UUID for å identifisere partisjonene i fstab-filen, vil innstillingene alltid være korrekte.
Hvis du bruker de nye partisjonene som en del av et RAID-system, sjekk dokumentasjonen for det systemet. Det kan hende at du må bruke blokkeringsenhetsidentifikatoren i stedet for UUID.
Finne partisjonens UUID
For å finne UUID til en partisjon, kan vi bruke `blkid` for å skrive ut attributtene til blokkenhetene. Vi begrenser utdataene til de to nye partisjonene:
blkid | grep sd[b-c]1
Utdataene inkluderer UUID for hver partisjon.
PARTUUID er en type 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 en editor. Vi bruker `gedit`, en brukervennlig editor som finnes i de fleste Linux-distribusjoner.
sudo gedit /etc/fstab
Editoren vises med fstab-filen lastet inn.
Denne fstab-filen har allerede to oppføringer. Det er partisjonen på den eksisterende disken, /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-disken, og en for partisjonen på SSD-disken. Vi legger til SCSI-partisjonen først. Linjer som starter med # er kommentarer.
I «filsystem»-feltet bruker vi UUID som `blkid` fant. 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 ditt system. Trykk mellomrom eller tabulator.
For «type» skal vi skrive inn `ext4`, som er typen filsystem på partisjonen. Trykk mellomrom eller tabulator.
I «alternativer»-feltet bruker vi alternativene vi hentet med `cat /etc/mtab`. Disse er «rw, relatime». Trykk mellomrom eller tabulator.
«Dump»-feltet settes til null. Trykk mellomrom eller tabulator.
«Pass»-feltet settes til null.
Nå legger vi til fstab-oppføringen for SSD-disken, på en egen linje.
I «filsystem»-feltet skriver vi inn UUID som `blkid` hentet for partisjonen på SSD-disken. Start linjen med «UUID=», og lim deretter inn UUID. Trykk mellomrom eller tabulator.
For «monteringspunkt»-feltet bruker vi monteringspunktet vi opprettet tidligere, /mnt/ssd. Trykk mellomrom eller tabulator.
For «type» skriver vi inn `ext4`. Trykk mellomrom eller tabulator.
I «alternativer»-feltet – bare for å gjøre de to nye oppføringene forskjellige – bruker vi «defaults». Trykk mellomrom eller tabulator.
«Dump»-feltet settes til null. Trykk mellomrom eller tabulator.
«Pass»-feltet settes til null.
Lagre filen, og lukk editoren.
Teste fstab uten omstart
Vi kan demontere våre nye disker og tvinge en oppdatering av fstab-filen. Vellykket montering bekrefter at innstillingene er syntaktisk korrekte. Det betyr at fstab-filen skal behandles riktig under en omstart.
For å demontere SCSI-disken, bruk denne kommandoen:
sudo umount /dev/sdb1
For å demontere SSD-disken, bruk denne kommandoen:
sudo umount /dev/sdc1
Nå bruker vi `lsblk` for å sjekke om blokkenhetene er montert.
lsblk | grep sd
Vi ser at blokkenhetene er tilstede, men ikke montert.
Vi kan bruke `mount`-kommandoen med alternativet `-a` (alle) for å remmontere alle filsystemer i fstab.
sudo mount -a
Vi kan sjekke en gang til med `lsblk` for å se om partisjonene er montert:
lsblk | grep sd
Alt er montert der det skal. Nå må vi endre eierskapet til monteringspunktene, ellers vil kun root ha tilgang.
Dette kan vi gjøre med `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
Nå kan vi starte datamaskinen på nytt. Vi vet