Virtuelt minne er en av de tingene som understøtter moderne operativsystemer, men vanligvis tenker du ikke på det med mindre du har et problem. Linux-distros ber deg om å sette opp ditt virtuelle minne (swap-partisjoner) under installasjonen, men de fleste nybegynnere er ikke klar over hvor nyttig det er.
Her er alt du trenger å vite om virtuelt minne på Linux.
Hva er virtuelt minne?
Virtuelt minne er en måte å representere minnet ditt som er abstrahert fra det fysiske minnet på maskinen din. Den bruker både RAM og lagringsplass, enten det er på en tradisjonell harddisk eller en SSD.
I Linux gjøres dette på kjerne- og maskinvarenivå. CPU-en har en maskinvare som kalles en Memory Management Unit (MMU) som oversetter fysiske minneadresser til virtuelle. Disse adressene er uavhengige av hvor de fysisk befinner seg på maskinen. Disse adresserommene er kjent som "sider", og de kan være i RAM eller på harddisken eller SSD-en din. OS ser på disse adressene som en stor lagringsplass, kjent som en "adresseplass".
Virtuelt minne utnytter det faktum at ikke alt minnet som brukes i teorien blir brukt hele tiden. Programmer i minnet brytes ned i sider og delene som kjernen anser som unødvendige blir "byttet ut" eller flyttet til harddisken. Når de trengs, kan de "byttes inn" eller bringes tilbake til RAM.
Plassen som brukes til virtuelt minne på en stasjon er kjent som "backing store" eller "swap space". I Windows-verdenen er det det vanligvis implementert som en fil, kjent som en "byttefil." Det er også mulig å gjøre dette i Linux, men det er mye mer vanlig til bruk en dedikert diskpartisjon.
Byttefiler på Linux er vanligvis reservert for minimale eller innebygde systemer, og det er vanlig at sistnevnte kjører helt uten virtuelt minne fordi innebygde operativsystemer må være små.
Resultatet av virtuelt minne er at det er mulig å kjøre store programmer ved å bruke mer minne enn den fysiske RAM-en i maskinen din, lik hvordan et kredittkort lar deg gjøre store kjøp for mer penger enn du har i banken regnskap. Som et kredittkort er virtuelt minne nyttig når du trenger det, men du ikke vil overutvide bruken.
Virtuelt minne lar også utviklere lage applikasjoner uten å måtte vite hvordan datamaskinens minne er organisert.
Den største ulempen historisk med virtuelt minne har vært at harddisker har vært tregere enn RAM. Hvis en maskin ikke har nok RAM, kan systemet fortsette å bytte sider inn og ut i det uendelige, en prosess kjent som "thrashing". Dette er mindre problem på moderne PC-er med mer RAM og raskere SSD-er som fortrenger mekaniske harddisker, men det er fortsatt noe å være klar over av.
Linux Swap-partisjoner
Som nevnt tidligere, er den vanlige metoden for å sette opp virtuelt minne på Linux å bruke en dedikert diskpartisjon. Installasjonsverktøyet vil undersøke maskinvaren din og foreslå et partisjoneringsskjema som inkluderer en byttepartisjon.
Du kan også legge til byttepartisjoner etter installasjonen. Hvis du vil legge til en ny partisjon til en eksisterende stasjon, må du bruk et ikke-destruktivt partisjoneringsverktøy som GParted. Sørg for at du har valgt "Linux swap" som filsystem for partisjonen din.
Sikkerhetskopier viktige data før du partisjonerer harddisken på nytt.
Etter at du har opprettet partisjonen, bruk mkswap-kommandoen til å formatere partisjonen.
sudo mkswap /dev/sdX
Nå må du redigere din /etc/fstab som root for å legge til swap-partisjonen din. Denne linjen, lagt til filen, vil sette opp en byttepartisjon som skal monteres ved oppstart:
/dev/sdX ingen swap standard 0 0
Bruk nå swapon kommando for å aktivere din nye swap-plass, der sdX er navnet på swap-partisjonen din:
sudo swapon /dev/sdX
Bruke swap-filer på Linux
Det er lett å sette opp en byttefil i Linux ved å bruke kommandolinjen. Det kan være lurt å gjøre dette hvis du ikke vil bry deg med å partisjonere harddisken på nytt eller redigere /etc/fstab. En metode er å bruke fallocate:
For eksempel, for å lage en 2 GB byttefil:
sudo fallocate -l 2G /bane/til/byttefil
Som et alternativ kan du bruke dd-kommandoen til å lage swap-filen.
sudo dd hvis=/dev/null av=/path/til/byttefil bs=1024 telle=2048
Forsikre deg om at du bruker dd-kommandoen riktig, ettersom å få inn- og utfilen feil kan føre til tap av data. fallocate er den foretrukne metoden av denne grunn.
De /dev/zero enhet er en spesiell enhet som gir ut "0." Det denne dd-kommandoen gjør er å lage en tom to-gigabyte blokkfil ved å bruke 1024-kilobyte blokker egnet for bruk som bytteplass.
Du kan da bruke mkswap og swapon kommandoer med en swap-fil som du ville gjort med en swap-partisjon:
sudo mkswap /bane/til/byttefil
sudo swapon /bane/til/byttefil
Du lurer kanskje på når du bør bruke en swap-fil eller en dedikert partisjon for swap-plassen din. Valget er enkelt: i de fleste tilfeller bør du bruke en partisjon. Dette er det beste valget for et Linux-skrivebord eller en server. Partisjonsskjemaet foreslått av installasjonsprogrammet er vanligvis tilstrekkelig på et enkeltbruker Linux-skrivebord.
Det kan være lurt å bruke en byttefil hvis du kjører Linux i en virtuell maskin, på et lite innebygd system, eller du bare ikke vil partisjonere det eksisterende Linux-systemet på nytt.
Hvor mye bytteplass?
I mange år har standardrådet for hvor mye bytteplass som trengs to ganger fysisk RAM. Med de store stasjonene og minnemengdene som selv de billigste PC-ene kommer med, kan denne regelen komme på tale.
På mange systemer, hvis du sjekker topp eller htop, kan du til og med legge merke til at bytteplassen din ikke en gang blir brukt i det hele tatt hvis du setter opp systemet på denne måten.
Likevel er dobbelt så mye fysisk minne et godt utgangspunkt og en forsikring dersom du stiller større krav til hukommelsen. Du kan gjøre endringer i systemet etter behov. Hvis systemet ditt bruker hele RAM-en, kan datamaskinen få ytelsesproblemer ved bruk av virtuelt minne.
Datamaskinen kan fortsette å bytte inn og ut, en prosess kjent som thrashing, noe som får den til å se ut som den ikke svarer. Hvis du fortsatt har en mekanisk harddisk, kan du ofte høre at den stadig har tilgang.
Dette er mye mindre av et problem i disse dager siden mengden RAM på selv de billigste PC-ene er mer enn tilstrekkelig, pluss at hastigheten på SSD-er er mye raskere enn de gamle harddiskene. Det er fortsatt noe du bør være klar over.
Den enkleste måten å fikse dette på er å bare legge til mer RAM til maskinen din. Hvis det ikke er mulig, kan du prøve å justere "swappiness" til Linux-kjernen.
Swappiness-tallet bestemmer hvor mye kjernen dypper inn i det virtuelle minnet. Det varierer fra 0 til 100. Å sette den til 0 betyr at Linux ikke vil bytte i det hele tatt, mens ved 100 vil den bytte ved enhver anledning. Standard på de fleste systemer er 60.
For å endre bytteforholdet midlertidig, bruk sysctl-kommandoen:
sudo sysctl vm.swappiness=20
"20" i den kommandoen vil være byttenummeret til du starter på nytt. For å endre den permanent, rediger /etc/sysctl.conf fil som root og plasser linjen, "vm.swappiness=[byttenummer]", der "[byttenummer]" er byttenummeret du ønsker. Dette vil være et stopp før du kan installere mer RAM.
Virtuelt minne holder Linux-systemet i gang jevnt
Virtuelt minne er en komponent i moderne operativsystemer, inkludert Linux, som holder datamaskinen i gang. Du kan bruke en byttefil, men den vanlige metoden er en dedikert partisjon. Du trenger ikke tenke så mye på det, men Linux swap-partisjoner og swap-filer er enkle å sette opp og feilsøke.
Mange av disse rådene gjelder også for andre systemer, inkludert Windows, selv om metodene for å sette opp virtuelt minne er forskjellige.