Hvordan lage en byttefil på Linux

Legg til swap-plass på en Linux-datamaskin, eller øk swap-plassen som allerede er til stede, uten å rote med partisjoner. Vi viser deg den enkle måten å skreddersy bytteplassen din.

Bytt filer vs. Bytt partisjoner

Det er flere scenarier der du kanskje vil øke eksisterende eller legge til ny bytteplass til Linux-datamaskinen.

Kanskje din bytteplass ofte kjører på maksimum eller nær maksimum.
Det er lett å klikke på feil alternativ under installasjonsprosessen og å avslå å legge til swap til systemet ditt utilsiktet.
Kanskje du tidligere har bestemt deg for at du hadde så mye tilfeldig tilgangsminne (RAM) du trengte ikke bytte, og du har ombestemt deg.
Noen ganger arver du administrasjonen av et system som ikke har noen swap, av årsaker du aldri vil kunne oppdage.

Den enkle løsningen på alle disse er å legge til en bytte fil til datamaskinen din. Dette er en spesiell fil, forhåndstildelt og reservert for bruk som bytteplass. En swap-fil vil fungere sammen med enhver eksisterende swap du måtte ha, enten det er en swap-fil eller en swap-partisjon.

På et tidspunkt var det et ytelsestreff for å bruke en byttefil sammenlignet med en byttepartisjon. Det er ikke lenger tilfelle med forbedringer i ytelsen til mekaniske (snurrende) harddisker og mer effektivitet i byttefunksjonene i Linux-operativsystemet. Faktisk er det nå som standard at noen Linux-distribusjoner oppretter swap-filer i stedet for swap-partisjoner.

Swap brukes ikke bare som et middel til å frigjøre RAM når du har lite minne. Det er en viktig del av et velfungerende system. Uten noe bytte blir fornuftig minnebehandling svært vanskelig for kjernen å oppnå. La oss se på den enkle måten å legge til litt bytteplass.

Før vi dykker inn: Btrfs og SSDs

Det er to punkter vi ønsker å diskutere raskt.

De Btrfs filsystem har visse forbehold om swap-filer. På et tidspunkt var det en konflikt mellom kopi-på-skriv Naturen til Btrfs, som ønsket å operere på en måte og bytte filer som trengte å operere på en annen måte. Noen funksjoner som swap-filer er avhengige av ble ikke implementert, og noen antakelser som ble gjort om blokknummerering i swap-filene stemte ikke med Btrfs. Så swap-filer ble ikke støttet.

Siden kjernen 5.0 har du kan ha swap-filer i Btrfs-filsystemer hvis de er satt opp med følgende krav:

Ingen kopier-på-skriv-filer (NOCOW).
De er ikke komprimert.
De går ikke over forskjellige harddisker.

De fleste lesere vil bruke standard ext4-filsystemet, så dette vil ikke være en bekymring for dem.

Da Solid-State Drives (SSDer) først var tilgjengelige, var det en bekymring for å bruke dem i situasjoner som hadde hyppige filsystemskrivinger. Folk ble advart mot å sette bytteplass på SSD-er, og til og med for å unngå systemlogging til SSD-er.

  Hvordan spille Crusader Kings II på Linux

Dette er mye mindre av bekymring i dag, og mange SSD-er som er til salgs har forventet levetid som vil vare lenger enn de fleste PC-er. En swap-fil på en SSD vil ha en langt bedre ytelse enn en swap-partisjon på en mekanisk harddisk.

Sjekker eksisterende bytteplass

Se før du hopper. La oss sjekke hvilken bytteplass som er tilgjengelig på datamaskinen din. Du kan gjøre dette på to måter, og vi bruker begge. Gratis-kommandoen vil vise brukt og ledig minne. Alternativet -h (lesbar for mennesker) vil føre til gratis bruk av fornuftige enheter når det viser minneverdiene.

free -h

Utdataene fra gratis viser at det ikke er konfigurert noen bytteplass på denne maskinen.

Swap diskuteres aldri uten at RAM og gratis RAM dukker opp. Så det er verdt å merke seg at ledig RAM er gitt til 237 MB. Ikke ta feil av det totale RAM-minnet som er tilgjengelig for bruk. Denne verdien er gitt av «tilgjengelig»-tallet, som er 881 MB.

Linux bruker gratis RAM til sine egne formål, for eksempel filbufring og kjernebuffere. Mengden RAM dedikert til det er «buff/cache»-tallet, som er 871 MB. Men det minnet regnes fortsatt som – og regnes som – «tilgjengelig». Innholdet i «buff/cache» RAM kan forkastes umiddelbart og brukes av alle programmer som trenger litt minne.

En annen måte å sjekke om swap-plass er tilgjengelig er å bruke swapon-kommandoen. Alternativet –show lager ingen endringer i byttet på datamaskinen. Den gir kun statistikk.

swapon --show

Hvis det ikke er noe utdata fra denne kommandoen, er det ingen swap konfigurert.

Hvis disse kommandoene hadde avslørt at noe bytteplass allerede er konfigurert, bør størrelsen på den eksisterende bytteplassen tas med i avgjørelser angående størrelsen på byttefilen du skal lage.

Hvor mye bytteplass trenger jeg?

Det tradisjonelle svaret var «dobbelt så mye RAM du har.» Men dette ble laget da datamaskiner pleide å ha svært begrenset RAM. Ettersom RAM har blitt billigere, og programmer og spill mer krevende for minne, har PC-spesifikasjonene justert seg deretter. Hjemme-PCer med 32 GB RAM er ikke uvanlig i dag. Og du kommer ikke til å tildele 64 GB harddiskplass for å bytte plass hvis du har 32 GB RAM. Det er helt klart overdrevent.

Mengden bytte du trenger er som et brennende emne, sammenlignbart med «som er den beste redaktøren.» En av de mest fornuftige diskusjonene vi har sett om dette emnet er i Vanlige spørsmål om Ubuntu-bytte. Det er en kort og sunn tilnærming (selv om de, som mange mennesker, misforstår hvordan bytte fungerer på Linux). Det er en hendig tabell som viser en anbefalt mengde bytteplass for mengden RAM systemet ditt har, og om du legger datamaskinen i dvale eller ikke.

  Alt du noen gang har ønsket å vite om inoder på Linux

Og den gode nyheten er at det ikke spiller noen rolle hvilken verdi du velger. Vi kan alltid fjerne en byttefil og erstatte den med en større eller for den saks skyld en mindre. Eller du kan bare legge til en annen byttefil.

Plukke en swap-filstørrelse fra tabellen, og kjør den en stund. Overvåk systemets bruk av bytteplassen. Hvis finjustering er nødvendig, kan endringer enkelt gjøres. Med swap-filer er det en to-minutters jobb. Sammenlign det med å justere partisjoner på en live Linux-datamaskin.

Opprette byttefilen

Du bør ikke bruke fallocate-kommandoen for å lage din swapfil. Dette er fra man-siden for swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Så selv om fallocate er raskere, bruker vi dd til opprette byttefilen. Maskinen som brukes til å undersøke denne artikkelen har to GB RAM. Vi skal lage en byttefil på én GB.

Alternativene er:

if: Inndatafilen. I dette eksemplet bruker vi /dev/zero som vil gi en strøm på null byte.
av: Utdatafilen. Vi skal lage en fil i rotkatalogen, kalt swapfile.
bs: Blokkstørrelsen i byte. Dette spesifiserer hvor mange byte som skal leses fra inndatafilen og skrives til utdatafilen om gangen.
telle: Hvor mange blokker å lese og skrive. Multipliser dette tallet med bs-verdien for å få filstørrelsen.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Noe statistikk oppgis når filen opprettes.

Vi kan se antall blokker (poster) som ble skrevet til filen, størrelsen på filen, tiden det tar å lage filen og den effektive dataoverføringshastigheten.

Bruk ls-kommandoen for å se filen i rotkatalogen:

ls /

Forbereder byttefilen

Vi må klargjør byttefilen med mkswap-kommandoen før den kan brukes. Vi trenger ikke å oppgi andre parametere for å mkswap enn banen og navnet på filen:

sudo mkswap /swapfile

Filen er klargjort for bruk som en byttefil. Legg merke til advarselen om filtillatelser. Vi må endre disse slik at root-brukeren er den eneste som kan lese og skrive til byttefilen.

Bruke byttefilen

Standardtillatelsene er for liberale, vi må begrense dem slik at bare root kan bruke swapfilen. Bruk chmod for å endre filtillatelsene:

sudo chmod 600 /swapfile

Dette fjerner alle tillatelser fra filgruppemedlemmer og andre, men lar fileieren, roten, lese og skrive til filen.

Vi må bruke swapon-kommandoen for å fortelle Linux at det er en ny byttefil tilgjengelig for bruk. Vi trenger bare å oppgi banen og filnavnet:

sudo swapon /swapfile

Byttefilen er nå aktiv.

  Hvordan brenne en ISO-fil til en USB-stasjon i Linux

Legger til swap-filen til fstab

For å sikre at swap-filen din er tilgjengelig etter en omstart, legg den til i /etc/fstab-filen. Du kan bruke hvilken som helst tekstredigerer du foretrekker, men vi viser prosessen ved å bruke den grafiske Gedit-tekstredigereren.

sudo gedit /etc/fstab

Linjen vi må legge til nederst i filen er:

/swapfile    none    swap    sw    0    0

Feltene er:

Filsystem: Banen og navnet på byttefilen.
Monteringspunkt: Filen er ikke montert som et filsystem, så oppføringen er «ingen.»
Type: Dette er «bytte.»
Alternativer: Ved oppstart vil swapon -a (start alle enheter merket som swap) bli kalt opp fra et av oppstartsskriptene. Dette alternativet forteller Linux å behandle denne oppføringen som en bytteressurs som bør komme under kontroll av den swapon -a-kommandoen. Det er vanlig å se «standarder» brukt her fordi det er en feilaktig tro blant noen Linux-brukere at dette feltet er ignorert. Som vi skal se, er det ikke tilfelle. Så det er fornuftig å bruke det riktige alternativet.
Dump: Dette kan settes til null. Det er irrelevant i denne saken.
Pass: Dette kan settes til null. Det er irrelevant i denne saken.

Lagre endringene og lukk redigeringsprogrammet.

Kontrollerer byttebruk

For å se om bytteplassen din blir brukt, bruk swapon-kommandoen med –show-alternativet:

swapon --show

Kolonnene er:

Navn: Navnet på swap-partisjonen eller swap-filen.
Type: Type bytteenhet.
Størrelse: Størrelsen på bytteressursen.
Brukt: Mengden brukt bytteplass.
Prio: Prioriteten til denne bytteplassen.

Bytteplassprioriteten

Hver bytteplass er tildelt en prioritet. Hvis du ikke oppgir en, blir en automatisk tildelt. Automatisk tildelte prioriteringer er alltid negative. Utvalget av prioriteter som kan tildeles manuelt er 0 til 32767. Bytteressurser med høyere prioritet brukes først.

Hvis mer enn én bytteplass har samme prioritet, brukes de vekselvis til de begge er fulle, så ser systemet etter bytteplassen med nest lavest prioritet. Hvis du bare har en enkelt bytteplass, er prioriteringen irrelevant selvfølgelig. Men vi vil endre prioriteten til swapfilen vi har laget for å demonstrere hvordan du gjør det.

For å angi en prioritet, legg til alternativet pri= (prioritet) i /etc/fstab-oppføringen. Rediger linjen du la til /etc/fstab slik at den ser slik ut:

/swapfile    none    swap    sw,pri=10    0    0

Det vil si, legg til pri=10 i alternativfeltet, atskilt fra «sw» med komma. Ikke la det være mellomrom mellom «sw», kommaet og «pri=10.» Start datamaskinen på nytt og bruk swapon –show-kommandoen:

swapon -- show

Prioriteten til denne bytteplassen har blitt hevet til 10. Noe som er et positivt bevis på at alternativfeltet i /etc/fstab-oppføringen ikke ignoreres.

Bytt plass på en enkel måte

Når vi skjærer gjennom utstillingen og forklaringen, kan vi lage en ny byttefil like enkelt og raskt som dette:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

Og la oss sjekke at det fungerte:

swapon --show

Hvis du vil gjøre det permanente fallet, kan du legge det inn i /etc/fstab-filen.

Bom. Jobben er gjort.