Sådan opretter du en swap-fil på Linux

Tilføj swap-plads til en Linux-computer, eller øg den swap-plads, der allerede er til stede, uden at rode med partitioner. Vi viser dig den nemme måde at skræddersy dit bytteplads.

Skift filer vs. Byt partitioner

Der er flere scenarier, hvor du måske ønsker at øge eksisterende eller tilføje ny swap-plads til din Linux-computer.

Måske kører din bytteplads ofte på maksimum eller tæt på maksimum.
Det er nemt at klikke på den forkerte mulighed under installationsprocessen og at afvise at tilføje swap til dit system utilsigtet.
Måske har du tidligere besluttet, at du havde så meget Random Access Memory (RAM) du behøvede ikke bytte, og du har ombestemt dig.
Nogle gange arver du administrationen af ​​et system, der ikke har nogen swap, af årsager, du aldrig vil kunne opdage.

Den enkle løsning på alle disse er at tilføje en swap fil til din computer. Dette er en speciel fil, forhåndstildelt og reserveret til brug som swap-plads. En swap-fil vil fungere sammen med enhver eksisterende swap, du måtte have, uanset om det er en swap-fil eller en swap-partition.

På et tidspunkt var der et præstationshit for at bruge en swap-fil sammenlignet med en swap-partition. Det er ikke længere tilfældet med forbedringer i ydeevnen af ​​mekaniske (snurrende) harddiske og mere effektivitet i swap-funktionerne i Linux-operativsystemet. Faktisk er nogle Linux-distributioner nu standard til at oprette swap-filer i stedet for swap-partitioner.

Swap bruges ikke kun som et middel til at frigøre RAM, når du er ved at løbe tør for hukommelse. Det er en vigtig del af et velfungerende system. Uden nogen swap bliver fornuftig hukommelsesstyring meget vanskelig for kernen at opnå. Lad os se på den nemme måde at tilføje noget bytteplads.

Før vi dykker ind: Btrfs og SSD’er

Der er to punkter, vi gerne vil diskutere hurtigt.

Det Btrfs filsystem har visse forbehold om swap-filer. På et tidspunkt var der en konflikt mellem kopi-på-skriv karakter af Btrfs, som ønskede at fungere på én måde og bytte filer, der skulle fungere på en anden måde. Nogle funktioner, som swap-filer afhænger af, blev ikke implementeret, og nogle antagelser, der blev gjort om bloknummerering i swap-filerne, holdt ikke stik med Btrfs. Så swap-filer blev ikke understøttet.

Siden kerne 5.0 har du kan have swap-filer i Btrfs-filsystemer hvis de er sat op med følgende krav:

Ingen copy-on-write (NOCOW) filer.
De er ikke komprimerede.
De spænder ikke over forskellige harddiske.

De fleste læsere vil bruge standard ext4-filsystemet, så dette vil ikke være et problem for dem.

Da Solid-State Drives (SSD’er) først var tilgængelige, var der bekymring for at bruge dem i situationer, hvor der var hyppige filsystemskrivninger. Folk blev advaret mod at lægge bytteplads på SSD’er og endda for at undgå systemlogning til SSD’er.

  Sådan gendannes slettede filer på Linux med Photorec

Dette er meget mindre af bekymring i dag, og mange SSD’er, der er til salg, har en forventet levetid, der vil overleve de fleste pc’er. En swap-fil på en SSD vil have en langt bedre ydeevne end en swap-partition på en mekanisk harddisk.

Kontrollerer eksisterende swap-plads

Se før du springer. Lad os tjekke, hvilken bytteplads der er tilgængelig på din computer. Du kan gøre dette på to måder, og vi bruger begge. Gratis kommandoen viser den brugte og ledige hukommelse. Indstillingen -h (læsbar for mennesker) vil bevirke, at gratis brug af fornuftige enheder, når den viser hukommelsesværdierne.

free -h

Outputtet fra gratis viser, at der ikke er konfigureret noget bytteplads på denne maskine.

Swap diskuteres aldrig uden RAM og gratis RAM dukker op. Så det er værd at bemærke, at den frie RAM er givet til 237 MB. Forveksle det ikke med den samlede RAM, der er tilgængelig til brug. Denne værdi er angivet af “tilgængelig”-tallet, som er 881 MB.

Linux bruger gratis RAM til sine egne formål, såsom filcache og kernebuffere. Mængden af ​​RAM dedikeret til det er “buff/cache”-tallet, som er 871 MB. Men denne hukommelse betragtes stadig som – og tælles som – “tilgængelig”. Indholdet af “buff/cache” RAM kan kasseres med det samme og bruges af ethvert program, der har brug for noget hukommelse.

En anden måde at kontrollere, om swap-plads er tilgængelig, er at bruge swapon-kommandoen. Indstillingen –show gør ingen ændringer af swap på din computer. Det giver kun statistik.

swapon --show

Hvis der ikke er noget output fra denne kommando, er der ingen swap konfigureret.

Hvis disse kommandoer havde afsløret, at noget swap-rum allerede er konfigureret, bør størrelsen af ​​det eksisterende swap-rum tages med i beslutninger vedrørende størrelsen på den swap-fil, du vil oprette.

Hvor meget bytteplads har jeg brug for?

Det traditionelle svar var “dobbelt så meget RAM, du har.” Men dette blev opfundet, da computere plejede at have meget begrænset RAM. Efterhånden som RAM er blevet billigere, og programmer og spil mere krævende for hukommelsen, er pc-specifikationerne justeret i overensstemmelse hermed. Hjemme-pc’er med 32 GB RAM er ikke ualmindeligt i dag. Og du kommer ikke til at allokere 64 GB harddiskplads til at bytte plads, hvis du har 32 GB RAM. Det er klart overdrevet.

Mængden af ​​swap, du har brug for, er som et brændende emne, der kan sammenlignes med “hvilken er den bedste editor.” En af de mest fornuftige diskussioner, vi har set om dette emne, er i Ubuntu swap FAQ. Det er en kort og fornuftig tilgang (selvom de, som mange mennesker, misforstår, hvordan swappiness fungerer på Linux). Der er en praktisk tabel, der viser en anbefalet mængde swap-plads for mængden af ​​RAM dit system har, og om du sætter din computer i dvale eller ej.

  Sådan installeres Mumble-klienten på Linux

Og den gode nyhed er, at det er lige meget, hvilken værdi du vælger. Vi kan altid fjerne en swap-fil og erstatte den med en større eller for den sags skyld en mindre. Eller du kan bare tilføje en anden swap-fil.

Plukke en swap-filstørrelse fra tabellen, og kør det et stykke tid. Overvåg dit systems brug af byttepladsen. Hvis finjustering er påkrævet, kan ændringer nemt foretages. Med swap-filer er det et job på to minutter. Sammenlign det med at justere partitioner på en live Linux-computer.

Oprettelse af swap-filen

Du bør ikke bruge fallocate-kommandoen for at oprette 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å selvom fallocate er hurtigere, bruger vi dd til oprette swap-filen. Maskinen, der bruges til at undersøge denne artikel, har to GB RAM. Vi vil oprette en 1 GB swap-fil.

Mulighederne er:

if: Inputfilen. I dette eksempel bruger vi /dev/zero, som vil give en strøm af nul bytes.
af: Outputfilen. Vi vil oprette en fil i rodmappen, kaldet swapfile.
bs: Blokstørrelsen i bytes. Dette angiver, hvor mange bytes der skal læses fra inputfilen og skrives til outputfilen ad gangen.
tælle: Hvor mange blokke der skal læses og skrives. Multiplicer dette tal med bs-værdien for at få filstørrelsen.

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

Nogle statistikker leveres, når filen oprettes.

Vi kan se antallet af blokke (poster), der blev skrevet til filen, størrelsen af ​​filen, den tid det tager at oprette filen og den effektive dataoverførselshastighed.

Brug kommandoen ls for at se filen i rodmappen:

ls /

Forberedelse af swap-filen

Vi er nødt til klargør swap-filen med mkswap-kommandoen, før den kan bruges. Vi behøver ikke at angive andre parametre til mkswap end filens sti og navn:

sudo mkswap /swapfile

Filen er forberedt til brug som en swap-fil. Bemærk advarslen om filtilladelser. Vi bliver nødt til at ændre dem, så root-brugeren er den eneste, der kan læse og skrive til swap-filen.

Brug af Swap-filen

Standardtilladelserne er for liberale, vi er nødt til at begrænse dem, så kun root kan bruge swapfilen. Brug chmod til at ændre filtilladelserne:

sudo chmod 600 /swapfile

Dette fjerner alle tilladelser fra filgruppemedlemmerne og andre, men tillader filejeren, root, at læse og skrive til filen.

Vi skal bruge swapon-kommandoen til at fortælle Linux, at der er en ny swap-fil tilgængelig til brug. Vi behøver kun at angive stien og filnavnet:

sudo swapon /swapfile

Swap-filen er nu aktiv.

  Sådan gemmer du filer gratis i skyen med Ice Drive på Linux

Tilføjelse af Swap-filen til fstab

For at sikre, at din swap-fil er tilgængelig efter en genstart, skal du tilføje den til filen /etc/fstab. Du kan bruge enhver teksteditor, du foretrækker, men vi viser processen ved hjælp af den grafiske Gedit-teksteditor.

sudo gedit /etc/fstab

Linjen vi skal tilføje til bunden af ​​filen er:

/swapfile    none    swap    sw    0    0

Felterne er:

Filsystem: Stien og navnet på swap-filen.
Monteringspunkt: Filen er ikke monteret som et filsystem, så indgangen er “ingen”.
Type: Dette er “swap.”
Indstillinger: Ved opstart vil swapon -a (start alle enheder markeret som swap) blive kaldt fra et af opstartsscripterne. Denne mulighed fortæller Linux at behandle denne post som en swap-ressource, der bør være under kontrol af den swapon -a-kommando. Det er almindeligt at se “defaults” brugt her, fordi der er en fejlagtig tro blandt nogle Linux-brugere, at dette felt ignoreres. Som vi skal se, er det ikke tilfældet. Så det giver mening at bruge den rigtige mulighed.
Dump: Dette kan sættes til nul. Det er irrelevant i denne sag.
Pass: Dette kan indstilles til nul. Det er irrelevant i denne sag.

Gem ændringerne og luk editoren.

Kontrollerer Swap-brug

For at se, om dit bytteplads bliver brugt, skal du bruge swapon-kommandoen med –show-indstillingen:

swapon --show

Kolonnerne er:

Navn: Navnet på swap-partitionen eller swap-filen.
Type: Typen af ​​bytteenhed.
Størrelse: Størrelsen af ​​bytteressourcen.
Brugt: Mængden af ​​brugt bytteplads.
Prio: Prioriteten for denne bytteplads.

Swap Space Prioritet

Hver bytteplads tildeles en prioritet. Hvis du ikke giver en, tildeles en automatisk. Automatisk tildelte prioriteter er altid negative. Udvalget af prioriteter, der kan tildeles manuelt, er 0 til 32767. Byt ressourcer med højere prioriteter bruges først.

Hvis mere end én bytteplads har samme prioritet, bruges de skiftevis, indtil de begge er fulde, så leder systemet efter byttepladsen med den næstlaveste prioritet. Hvis du kun har en enkelt bytteplads, er prioriteringen selvfølgelig irrelevant. Men vi ændrer prioriteringen af ​​den swapfil, vi har oprettet, for at vise, hvordan man gør det.

For at indstille en prioritet skal du tilføje pri= (prioritet)-indstillingen til /etc/fstab-indgangen. Rediger den linje, du tilføjede til /etc/fstab, så den ser sådan ud:

/swapfile    none    swap    sw,pri=10    0    0

Det vil sige, tilføj pri=10 til indstillingsfeltet, adskilt fra “sw” med et komma. Efterlad ikke mellemrum mellem “sw”, kommaet og “pri=10”. Genstart din computer og brug swapon –show kommandoen:

swapon -- show

Prioriteten af ​​dette swap-rum er blevet forhøjet til 10. Hvilket er et positivt bevis på, at indstillingsfeltet i /etc/fstab-indgangen ikke ignoreres.

Byt plads på en nem måde

Når vi skærer gennem udstillingen og forklaringen, kan vi oprette en ny swap-fil lige så nemt og hurtigt som dette:

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

Og lad os tjekke, at det virkede:

swapon --show

Hvis du vil lave det permanente drop, skal det ind i din /etc/fstab-fil.

Bom. Færdigt arbejde.