Enkel guide: Øk swap-plassen på Linux – uten rot!

Øk eller legg til bytteplass på en Linux-maskin på en enkel måte, uten å endre partisjoner. Denne veiledningen viser deg hvordan du enkelt kan tilpasse bytteplassen.

Byttefiler kontra byttepartisjoner

Det finnes flere situasjoner der du kan ønske å utvide eller legge til ny bytteplass på din Linux-datamaskin.

Kanskje bytteplassen din ofte er full eller nesten full. Det er lett å velge feil alternativ under installasjonen og utilsiktet velge bort swap. Du har kanskje tidligere bestemt at du hadde nok RAM og ikke trengte bytte, men har ombestemt deg. Noen ganger overtar du administreringen av et system uten bytte av uforklarlige årsaker.

Den enkle løsningen er å legge til en byttefil på maskinen. Dette er en spesiell fil som er forhåndsallokert og reservert for bruk som bytteplass. En byttefil fungerer i tillegg til eksisterende bytte, enten det er en byttefil eller en byttepartisjon.

Tidligere var det en ytelsesforskjell mellom bruk av byttefil kontra byttepartisjon. Det er ikke lenger tilfellet, takket være forbedringer i ytelsen til mekaniske harddisker og mer effektive byttefunksjoner i Linux. Nå oppretter faktisk noen Linux-distribusjoner byttefiler som standard i stedet for byttepartisjoner.

Bytte brukes ikke bare for å frigjøre RAM når du har lite minne. Det er en viktig del av et velfungerende system. Uten bytte blir minnehåndtering vanskelig for kjernen å utføre. La oss se på den enkle måten å legge til bytteplass.

Før vi begynner: Btrfs og SSD-er

Det er to ting vi raskt vil diskutere.

Btrfs filsystem har visse begrensninger når det kommer til byttefiler. Tidligere var det en konflikt mellom copy-on-write-funksjonen til Btrfs og måten byttefiler trengte å fungere på. Noen funksjoner som byttefiler er avhengig av, var ikke implementert, og noen antakelser om blokknummerering i byttefilene stemte ikke med Btrfs. Derfor ble ikke byttefiler støttet.

Siden kjerne 5.0, kan du ha byttefiler i Btrfs hvis de er konfigurert med følgende krav:

  • Ingen copy-on-write (NOCOW).
  • De er ikke komprimerte.
  • De går ikke over flere harddisker.

De fleste bruker standard ext4-filsystem, så dette er ikke et problem for dem.

Da SSD-er først kom, var det bekymring for å bruke dem i situasjoner med hyppige filsystemskrivinger. Folk ble advart mot å plassere bytteplass på SSD-er og til og med mot systemlogging til SSD-er.

Dette er mindre bekymringsfullt i dag, og mange SSD-er som selges har en forventet levetid som varer lenger enn de fleste PC-er. En byttefil på en SSD vil ha mye bedre ytelse enn en byttepartisjon på en mekanisk harddisk.

Sjekke eksisterende bytteplass

La oss sjekke hvilken bytteplass som er tilgjengelig på maskinen. Vi kan gjøre dette på to måter, og vi bruker begge. free-kommandoen viser brukt og ledig minne. Alternativet -h (human-readable) gjør at free bruker lesbare enheter når den viser minneverdiene.

free -h

Utdata fra free viser at ingen bytteplass er konfigurert på denne maskinen.

Bytte diskuteres ofte i forbindelse med RAM. Det er derfor verdt å merke seg at ledig RAM er 237 MB. Ikke forveksle dette med total RAM som er tilgjengelig. Denne verdien er 881 MB.

Linux bruker ledig RAM til interne formål som filbuffring og kjernebuffere. RAM brukt til dette er 871 MB. Innholdet i RAM brukt til «buff/cache» kan kastes umiddelbart og brukes av programmer som trenger minne.

En annen måte å sjekke om swap er tilgjengelig på er med swapon-kommandoen. Alternativet --show gjør ingen endringer, men viser kun statistikk.

swapon --show

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

Hvis disse kommandoene hadde avdekket at bytteplass allerede var konfigurert, bør størrelsen på denne tas med i betraktningen når du bestemmer størrelsen på byttefilen.

Hvor mye bytteplass trenger jeg?

Det tradisjonelle svaret var «dobbelt så mye RAM som du har». Dette var imidlertid da datamaskiner hadde begrenset RAM. Etter hvert som RAM har blitt billigere, og programmer og spill mer krevende, har PC-spesifikasjonene justert seg. Hjemme-PC-er med 32 GB RAM er ikke uvanlig i dag. Du vil ikke allokere 64 GB lagringsplass for bytteplass hvis du har 32 GB RAM. Det er klart overdrevet.

Mengden bytte du trenger er et vanskelig tema, som «hvilken editor er best?». En av de mest fornuftige diskusjonene om dette emnet er i Ubuntu Swap FAQ. De gir en tabell med anbefalt mengde bytteplass basert på RAM og om du setter maskinen i dvale.

Det gode 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 mindre. Du kan også legge til enda en byttefil.

Velg en størrelse fra tabellen, og bruk den en stund. Overvåk systemets bruk av bytteplassen. Hvis du trenger å finjustere, kan du gjøre endringer enkelt. Med byttefiler tar det to minutter. Sammenlign det med å justere partisjoner på en live Linux-maskin.

Opprette byttefilen

Du bør ikke bruke fallocate-kommandoen for å lage byttefilen. Dette er fra man-siden til 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.

Selv om fallocate er raskere, bruker vi dd for å opprette byttefilen. Maskinen i denne artikkelen har 2 GB RAM. Vi lager en byttefil på 1 GB.

Alternativene er:

  • if: Inndatafilen. Her bruker vi /dev/zero som gir en strøm med null byte.
  • of: Utdatafilen. Vi lager en fil i rotkatalogen, kalt swapfile.
  • bs: Blokkstørrelse i byte. Dette angir hvor mange byte som skal leses fra inndatafilen og skrives til utdatafilen om gangen.
  • count: Hvor mange blokker som skal leses og skrives. Multipliser dette tallet med bs-verdien for å få filstørrelsen.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Statistikk vises når filen opprettes.

Vi ser antall blokker skrevet til filen, filstørrelsen, tiden det tar å lage filen og dataoverføringshastigheten.

Bruk ls-kommandoen for å se filen i rotkatalogen:

ls /

Forberede byttefilen

Vi må klargjøre byttefilen med mkswap-kommandoen før den kan brukes. Vi trenger bare å oppgi banen og navnet på filen til mkswap.

sudo mkswap /swapfile

Filen er klar for bruk som byttefil. Merk advarselen om filtillatelser. Vi må endre disse slik at kun root-brukeren kan lese og skrive til filen.

Bruke byttefilen

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

sudo chmod 600 /swapfile

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

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

sudo swapon /swapfile

Byttefilen er nå aktiv.

Legge til byttefilen i fstab

For å sikre at byttefilen din er tilgjengelig etter omstart, legg den til i /etc/fstab-filen. Du kan bruke hvilken som helst teksteditor du foretrekker, men vi bruker Gedit.

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 «none».
  • Type: Dette er «swap».
  • Alternativer: Ved oppstart kalles swapon -a (start alle enheter merket som swap) fra et av oppstartsskriptene. Dette alternativet forteller Linux å behandle oppføringen som en bytteressurs som skal kontrolleres av swapon -a. Det er vanlig å se «defaults» her. Det er en misforståelse at dette feltet ignoreres. Det er derfor fornuftig å bruke det riktige alternativet.
  • Dump: Dette kan settes til null. Det er irrelevant.
  • Pass: Dette kan settes til null. Det er irrelevant.

Lagre endringene og lukk redigeringsprogrammet.

Kontrollere byttebruk

For å se om bytteplassen din brukes, bruk swapon-kommandoen med --show-alternativet:

swapon --show

Kolonnene er:

  • Navn: Navnet på byttepartisjonen eller byttefilen.
  • Type: Type bytteenhet.
  • Størrelse: Størrelsen på bytteressursen.
  • Brukt: Mengden brukt bytteplass.
  • Prio: Prioriteten til bytteplassen.

Bytteplassprioriteten

Hver bytteplass er tildelt en prioritet. Hvis du ikke angir en, tildeles en automatisk. Automatiske prioriteter er alltid negative. Du kan manuelt angi prioriteter fra 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, deretter ser systemet etter bytteplassen med nest lavest prioritet. Hvis du bare har én bytteplass, er prioriteten irrelevant. Vi endrer prioriteten til byttefilen for å demonstrere hvordan du gjør det.

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

/swapfile     none    swap    sw,pri=10      0       0

Legg til pri=10 i alternativfeltet, atskilt fra sw med komma. Ikke la det være mellomrom mellom sw, kommaet og pri=10. Start maskinen på nytt og bruk swapon --show-kommandoen:

swapon --show

Prioriteten til bytteplassen har blitt endret til 10. Dette beviser at alternativfeltet i /etc/fstab-oppføringen ikke ignoreres.

Bytteplass på en enkel måte

Når vi forenkler prosessen, 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

La oss sjekke at det fungerte:

swapon --show

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

Ferdig!