Virtuellt minne är en av de saker som ligger till grund för moderna operativsystem men vanligtvis tänker du inte riktigt på det om du inte har ett problem. Linux-distros ber dig att ställa in ditt virtuella minnesutrymme (swap-partitioner) under installationen, men de flesta nybörjare är inte medvetna om hur användbart det är.

Här är allt du behöver veta om virtuellt minne på Linux.

Vad är virtuellt minne?

Virtuellt minne är ett sätt att representera ditt minne som är abstraherat från det fysiska minnet på din maskin. Den använder både ditt RAM-minne och ditt lagringsutrymme, oavsett om det är på en traditionell hårddisk eller en SSD.

I Linux görs detta på kärn- och hårdvarunivå. CPU: n har en hårdvara som kallas en Memory Management Unit (MMU) som översätter fysiska minnesadresser till virtuella. Dessa adresser är oberoende av var de fysiskt finns på maskinen. Dessa adressutrymmen är kända som "sidor" och de kan vara i RAM eller på din hårddisk eller SSD. OS ser dessa adresser som en enda stor minnespool, känd som ett "adressutrymme".

instagram viewer

Virtuellt minne drar fördel av det faktum att inte allt minne som används i teorin används hela tiden. Program i minnet bryts ner i sidor och de delar som kärnan anser vara onödiga "bytas ut" eller flyttas till hårddisken. När de behövs kan de "bytas in" eller föras tillbaka till RAM.

Utrymmet som används för virtuellt minne på en enhet kallas "backing store" eller "swap space". I Windows-världen är det så vanligtvis implementerad som en fil, känd som en "växlingsfil". Det är också möjligt att göra detta i Linux, men det är mycket vanligare till använd en dedikerad diskpartition.

Swap-filer på Linux är vanligtvis reserverade för minimala eller inbäddade system, och det är vanligt att de senare körs utan virtuellt minne helt eftersom inbäddade operativsystem måste vara små.

Resultatet av virtuellt minne är att det är möjligt att köra stora program genom att använda mer minne än det fysiska RAM-minnet i din maskin, liknande hur ett kreditkort låter dig göra stora inköp för mer pengar än du har på din bank konto. Liksom ett kreditkort är virtuellt minne användbart när du behöver det men du vill inte överdriva användningen.

Virtuellt minne tillåter också utvecklare att skapa applikationer utan att behöva veta hur en dators minne är organiserat.

Den största nackdelen historiskt sett med virtuellt minne har varit att hårddiskar har varit långsammare än RAM. Om en maskin inte har tillräckligt med RAM-minne kan systemet fortsätta byta sidor in och ut i det oändliga, en process som kallas "thrashing". Detta är mindre problem på moderna datorer med mer RAM och snabbare SSD: er som ersätter mekaniska hårddiskar, men det är fortfarande något att vara medveten om av.

Linux Swap-partitioner

Som tidigare nämnts är den vanliga metoden för att ställa in virtuellt minne på Linux att använda en dedikerad diskpartition. Installationsverktyget kommer att undersöka din hårdvara och föreslå ett partitioneringsschema som inkluderar en swap-partition.

Du kan också lägga till swap-partitioner efter installationen. Om du vill lägga till en ny partition till en befintlig enhet måste du göra det använd ett oförstörande partitioneringsverktyg som GParted. Se till att du har valt "Linux swap" som filsystem för din partition.

Säkerhetskopiera viktig data innan du partitionerar om din enhet.

När du har skapat din partition, använd kommandot mkswap för att formatera din partition.

sudo mkswap /dev/sdX

Nu måste du redigera din /etc/fstab som root för att lägga till din swap-partition. Den här raden, som läggs till i filen, kommer att ställa in en swap-partition som ska monteras vid uppstart:

/dev/sdX ingen swap standardvärden 0 0

Använd nu swapon kommando för att aktivera ditt nya swap-utrymme, där sdX är namnet på din swap-partition:

sudo swapon /dev/sdX

Använda växlingsfiler på Linux

Det är lätt att ställ in en växlingsfil i Linux med hjälp av kommandoraden. Du kanske vill göra detta om du inte vill bry dig om att partitionera om din enhet eller redigera /etc/fstab. En metod är att använda fallocera:

Till exempel, för att skapa en 2 GB växlingsfil:

sudo fallocate -l 2G /path/to/swapfile

Som ett alternativ kan du använda kommandot dd för att skapa växlingsfilen.

sudo dd om=/dev/noll- av=/path/till/swapfil bs=1024 räkna=2048

Se till att du använder dd-kommandot korrekt, eftersom om infilen och outfilen är fel kan det orsaka dataförlust. fallocate är den föredragna metoden av denna anledning.

De /dev/zero enhet är en speciell enhet som matar ut "0". Vad det här dd-kommandot gör är att skapa en tom två-gigabyte blockfil med 1024-kilobyte block som lämpar sig för användning som växlingsutrymme.

Du kan sedan använda mkswap och swapon kommandon med en swap-fil som du skulle med en swap-partition:

sudo mkswap /sökväg/till/bytesfil
sudo swapon /sökväg/till/swapfil

Du kanske undrar när du ska använda en växlingsfil eller en dedikerad partition för ditt växlingsutrymme. Valet är enkelt: i de flesta fall bör du använda en partition. Detta är det bästa valet för ett Linux-skrivbord eller en server. Det partitionsschema som föreslås av installationsprogrammet är vanligtvis lämpligt på ett Linux-skrivbord för en användare.

Du kanske vill använda en växlingsfil om du kör Linux i en virtuell maskin, på ett litet inbäddat system, eller om du helt enkelt inte vill partitionera om ditt befintliga Linux-system.

Hur mycket byta utrymme?

Under många år är standardrådet för hur mycket swap-utrymme som behövs två gånger det fysiska RAM-minnet. Med de stora enheter och mängder minne som även de billigaste datorerna kommer med kan denna regel komma i fråga.

På många system, om du kollar top eller htop, kanske du till och med märker att ditt bytesutrymme inte ens används alls om du ställer in ditt system på detta sätt.

Ändå är det dubbla fysiska minnet en bra utgångspunkt och en försäkring om man ställer större krav på minnet. Du kan göra ändringar i ditt system vid behov. Om ditt system använder allt ditt RAM-minne kan datorn stöta på prestandaproblem när du använder virtuellt minne.

Datorn kan fortsätta byta in och ut, en process som kallas thrashing, vilket gör att den inte svarar. Om du fortfarande har en mekanisk hårddisk kan du ofta höra den ständigt komma åt.

Detta är mycket mindre av ett problem nuförtiden eftersom mängden RAM på även de billigaste datorerna är mer än tillräcklig, plus hastigheten på SSD-enheter är mycket snabbare än de gamla hårddiskarna. Det är fortfarande något du bör vara medveten om.

Det enklaste sättet att fixa detta är att bara lägga till mer RAM-minne till din maskin. Om det inte är möjligt, kan du försöka justera "swappiness" för Linux-kärnan.

Swappiness-numret bestämmer hur mycket kärnan dyker in i det virtuella minnet. Det sträcker sig från 0 till 100. Att sätta den till 0 betyder att Linux inte kommer att byta alls, medan den vid 100 byter vid varje tillfälle. Standard på de flesta system är 60.

Använd kommandot sysctl för att tillfälligt ändra bytesvärdet:

sudo sysctl vm.swappiness=20

"20" i det kommandot kommer att vara swappiness-numret tills du startar om. För att ändra det permanent, redigera /etc/sysctl.conf fil som root och placera raden "vm.swappiness=[swappiness nummer]", där "[swappiness number]" är det swappiness nummer du vill ha. Detta kommer att vara ett stopp tills du kan installera mer RAM.

Virtuellt minne håller ditt Linux-system igång smidigt

Virtuellt minne är en komponent i moderna operativsystem, inklusive Linux, som håller din dator igång smidigt. Du kan använda en växlingsfil, men den vanliga metoden är en dedikerad partition. Du behöver inte tänka så mycket på det, men Linux swap-partitioner och swap-filer är lätta att ställa in och felsöka.

Många av dessa råd är också tillämpliga på andra system, inklusive Windows, även om metoderna för att ställa in virtuellt minne är annorlunda.