Virtuel hukommelse er en af de ting, der understøtter moderne operativsystemer, men normalt tænker du ikke rigtig over det, medmindre du har et problem. Linux-distros beder dig om at konfigurere dit virtuelle hukommelsesrum (swap-partitioner) under installationen, men de fleste begyndere er ikke klar over, hvor nyttigt det er.
Her er alt, hvad du behøver at vide om virtuel hukommelse på Linux.
Hvad er virtuel hukommelse?
Virtuel hukommelse er en måde at repræsentere din hukommelse, der er abstraheret fra den fysiske hukommelse på din maskine. Den gør brug af både din RAM og din lagerplads, uanset om det er på en traditionel harddisk eller en SSD.
I Linux gøres dette på kerne- og hardwareniveau. CPU'en har et stykke hardware kaldet en Memory Management Unit (MMU), der oversætter fysiske hukommelsesadresser til virtuelle. Disse adresser er uafhængige af, hvor de fysisk befinder sig på maskinen. Disse adresserum er kendt som "sider", og de kan være i RAM eller på din harddisk eller SSD. OS ser disse adresser som én stor pulje af hukommelse, kendt som et "adresserum".
Virtuel hukommelse udnytter det faktum, at ikke al den hukommelse, der bliver brugt i teorien, bliver brugt hele tiden. Programmer i hukommelsen er opdelt i sider, og de dele, som kernen anser som unødvendige, "byttes ud" eller flyttes til harddisken. Når de er nødvendige, kan de "byttes ind" eller bringes tilbage i RAM.
Den plads, der bruges til virtuel hukommelse på et drev, er kendt som "backing store" eller "swap space". I Windows-verdenen er det normalt implementeret som en fil, kendt som en "swap-fil". Det er også muligt at gøre dette i Linux, men det er meget mere almindeligt til brug en dedikeret diskpartition.
Swap-filer på Linux er normalt reserveret til minimale eller indlejrede systemer, og det er almindeligt, at sidstnævnte kører helt uden virtuel hukommelse, fordi indlejrede OS'er skal være små.
Resultatet af virtuel hukommelse er, at det er muligt at køre store programmer ved at bruge mere hukommelse end den fysiske RAM i din maskine, i lighed med hvordan et kreditkort lader dig foretage store indkøb for flere penge, end du har i din bank konto. Ligesom et kreditkort er virtuel hukommelse nyttig, når du har brug for den, men du ikke ønsker at overudvide brugen.
Virtuel hukommelse giver også udviklere mulighed for at oprette applikationer uden at skulle vide, hvordan en computers hukommelse er organiseret.
Den største ulempe historisk med virtuel hukommelse har været, at harddiske har været langsommere end RAM. Hvis en maskine ikke har nok RAM, kan systemet blive ved med at skifte sider ind og ud i det uendelige, en proces kendt som "thrashing". Dette er mindre af et problem på moderne pc'er med mere RAM og hurtigere SSD'er, der fortrænger mekaniske harddiske, men det er stadig noget at være opmærksom på af.
Linux Swap-partitioner
Som tidligere nævnt er den sædvanlige metode til opsætning af virtuel hukommelse på Linux at bruge en dedikeret diskpartition. Installationsværktøjet vil undersøge din hardware og foreslå et partitioneringsskema, der inkluderer en swap-partition.
Du kan også tilføje swap-partitioner efter installationen. Hvis du vil tilføje en ny partition til et eksisterende drev, bliver du nødt til det bruge et ikke-destruktivt partitioneringsværktøj ligesom GParted. Sørg for, at du har valgt "Linux swap" som filsystem for din partition.
Sikkerhedskopier vigtige data, før du genpartitionerer dit drev.
Når du har oprettet din partition, skal du bruge kommandoen mkswap til at formatere din partition.
sudo mkswap /dev/sdX
Nu bliver du nødt til at redigere din /etc/fstab som root for at tilføje din swap-partition. Denne linje, tilføjet til filen, vil konfigurere en swap-partition, der skal monteres ved opstart:
/dev/sdX ingen swap standard 0 0
Brug nu swapon kommando for at aktivere din nye swap-plads, hvor sdX er navnet på din swap-partition:
sudo swapon /dev/sdX
Brug af Swap-filer på Linux
Det er nemt at opsætte en swap-fil i Linux ved hjælp af kommandolinjen. Du ønsker måske at gøre dette, hvis du ikke vil genere at ompartitionere dit drev eller redigere /etc/fstab. En metode er at bruge falde:
For eksempel, for at oprette en 2 GB swap-fil:
sudo fallocate -l 2G /sti/til/byttefil
Som et alternativ kan du bruge kommandoen dd til at oprette swap-filen.
sudo dd hvis=/dev/nul af=/path/til/swapfil bs=1024 tælle=2048
Sørg for, at du bruger dd-kommandoen korrekt, da det kan medføre tab af data, hvis infilen og outfilen er forkert. fallocate er den foretrukne metode af denne grund.
Det /dev/zero enhed er en speciel enhed, der udsender "0". Hvad denne dd-kommando gør, er at oprette en tom to-gigabyte blokfil ved hjælp af 1024-kilobyte blokke, der egner sig til brug som swap-plads.
Du kan derefter bruge mkswap og swapon kommandoer med en swap-fil, som du ville med en swap-partition:
sudo mkswap /sti/til/byttefil
sudo swapon /sti/til/swapfil
Du spekulerer måske på, hvornår du skal bruge en swap-fil eller en dedikeret partition til dit swap-rum. Valget er nemt: I de fleste tilfælde bør du bruge en partition. Dette er det bedste valg til et Linux-skrivebord eller en server. Partitionsskemaet foreslået af installationsprogrammet er normalt tilstrækkeligt på et enkeltbruger Linux-skrivebord.
Du vil måske bruge en swap-fil, hvis du kører Linux på en virtuel maskine, på et lille indlejret system, eller du bare ikke vil ompartitionere dit eksisterende Linux-system.
Hvor meget bytteplads?
I mange år er standardrådene for, hvor meget swap-plads, der skal bruges, det dobbelte af den fysiske RAM. Med de store drev og mængder hukommelse, som selv de billigste pc'er kommer med, kan denne regel komme på tale.
På mange systemer, hvis du tjekker top eller htop, vil du måske endda bemærke, at din bytteplads slet ikke bliver brugt, hvis du konfigurerer dit system på denne måde.
Alligevel er det dobbelte af den fysiske hukommelse et godt udgangspunkt og en forsikring, hvis man stiller større krav til hukommelsen. Du kan foretage ændringer i dit system efter behov. Hvis dit system bruger al din RAM, kan computeren løbe ind i ydeevneproblemer, når du bruger virtuel hukommelse.
Computeren kan blive ved med at skifte ind og ud, en proces kendt som thrashing, hvilket får den til at se ud som den ikke reagerer. Hvis du stadig har en mekanisk harddisk, kan du ofte høre den konstant få adgang.
Dette er meget mindre af et problem i disse dage, da mængden af RAM på selv de billigste pc'er er mere end tilstrækkelig, plus hastigheden på SSD'er er meget hurtigere end de gamle harddiske. Det er stadig noget, du skal være opmærksom på.
Den nemmeste måde at løse dette på er blot at tilføje mere RAM til din maskine. Hvis det ikke er muligt, kan du prøve at justere "swappiness" af Linux-kernen.
Swappiness-tallet bestemmer, hvor meget kernen dykker ned i den virtuelle hukommelse. Det går fra 0 til 100. At sætte det til 0 betyder, at Linux slet ikke vil bytte, mens det ved 100 vil bytte ved enhver lejlighed. Standarden på de fleste systemer er 60.
For at ændre bytteforholdet midlertidigt, brug sysctl-kommandoen:
sudo sysctl vm.swappiness=20
"20" i den kommando vil være swappiness-tallet, indtil du genstarter. For at ændre det permanent skal du redigere /etc/sysctl.conf fil som root og placer linjen "vm.swappiness=[swappiness nummer]", hvor "[swappiness nummer]" er det swappiness nummer du ønsker. Dette vil være et stop, indtil du kan installere mere RAM.
Virtuel hukommelse holder dit Linux-system kørende
Virtuel hukommelse er en komponent i moderne operativsystemer, inklusive Linux, der holder din computer kørende. Du kan bruge en swap-fil, men den sædvanlige metode er en dedikeret partition. Du behøver ikke tænke så meget over det, men Linux swap-partitioner og swap-filer er nemme at sætte op og fejlfinde.
Mange af disse råd gælder også for andre systemer, inklusive Windows, selvom metoderne til opsætning af virtuel hukommelse er anderledes.