Hoe swapruimte toe te voegen op Ubuntu 22.04

Introductie

Een manier om te beschermen tegen out-of-memory fouten in applicaties is door wat wisselgeheugen toe te voegen aan uw server. In deze handleiding zullen we bespreken hoe u een wisselbestand toevoegt aan een Ubuntu 22.04 server.

Wat is Wisselgeheugen?

Wisselgeheugen is een gedeelte van de opslagruimte op de harde schijf dat is gereserveerd voor het besturingssysteem om tijdelijk gegevens op te slaan die niet meer in het RAM-geheugen passen. Hiermee kunt u de hoeveelheid informatie die uw server in het werkgeheugen kan houden vergroten, met enkele kanttekeningen. Het wisselgeheugen op de harde schijf wordt voornamelijk gebruikt wanneer er niet genoeg ruimte meer is in het RAM-geheugen om in gebruik zijnde applicatiegegevens vast te houden.

De informatie die naar de schijf wordt geschreven, is aanzienlijk langzamer dan informatie die in het RAM wordt bewaard, maar het besturingssysteem geeft er de voorkeur aan om draaiende applicatiegegevens in het geheugen te houden en wisselgebruik voor oudere gegevens te gebruiken. Over het algemeen kan het hebben van wisselruimte als een vangnet voor wanneer het RAM-geheugen van uw systeem is uitgeput, een goede bescherming bieden tegen out-of-memory uitzonderingen op systemen met beschikbare opslagruimte zonder SSD.

Stap 1 – Controleren van het systeem op wisselgeheugeninformatie

Voordat we beginnen, kunnen we controleren of het systeem al wat wisselgeheugen beschikbaar heeft. Het is mogelijk om meerdere wisselbestanden of wisselpartities te hebben, maar over het algemeen zou één voldoende moeten zijn.

We kunnen zien of het systeem een geconfigureerde wissel heeft door het volgende te typen:

  1. sudo swapon --show

Als je geen uitvoer terugkrijgt, betekent dit dat je systeem momenteel geen wisselgeheugen beschikbaar heeft.

Je kunt controleren of er geen actieve wissel is met behulp van het hulpprogramma free:

  1. free -h
Output
total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B 0B

Zoals je kunt zien in de Wissel-rij van de uitvoer, is er geen wissel actief op het systeem.

Stap 2 – Controleren van de beschikbare ruimte op de harde schijfpartitie

Voordat we ons wisselbestand maken, controleren we ons huidige schijfgebruik om er zeker van te zijn dat we genoeg ruimte hebben. Doe dit door het volgende in te voeren:

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 932K 98M 1% /run /dev/vda1 25G 1.4G 23G 7% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi /dev/loop0 55M 55M 0 100% /snap/core18/1705 /dev/loop1 69M 69M 0 100% /snap/lxd/14804 /dev/loop2 28M 28M 0 100% /snap/snapd/7264 tmpfs 99M 0 99M 0% /run/user/1000

Het apparaat met / in de Gemonteerd op-kolom is in dit geval onze schijf. We hebben voldoende ruimte beschikbaar in dit voorbeeld (slechts 1,4G gebruikt). Jouw gebruik zal waarschijnlijk anders zijn.

Hoewel er veel meningen zijn over de juiste grootte van een swapruimte, hangt het echt af van uw persoonlijke voorkeuren en de eisen van uw toepassing. Over het algemeen is een hoeveelheid gelijk aan of dubbel de hoeveelheid RAM op uw systeem een goed startpunt. Een andere goede vuistregel is dat alles boven de 4G aan swap waarschijnlijk overbodig is als u het alleen gebruikt als een RAM-reserve.

Stap 3 – Een swap-bestand maken

Nu we weten hoeveel beschikbare ruimte er op onze harde schijf is, kunnen we een swap-bestand aanmaken op ons bestandssysteem. We zullen een bestand van de gewenste grootte toewijzen, genaamd swapfile, in onze hoofdmap (/).

De beste manier om een swap-bestand aan te maken is met het programma fallocate. Met dit commando wordt direct een bestand van de opgegeven grootte aangemaakt.

Aangezien de server in ons voorbeeld 1G RAM heeft, zullen we een 1G-bestand aanmaken in deze handleiding. Pas dit aan naar de behoeften van uw eigen server:

  1. sudo fallocate -l 1G /swapfile

We kunnen controleren of de juiste hoeveelheid ruimte is gereserveerd door het volgende te typen:

  1. ls -lh /swapfile
  1. -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Ons bestand is aangemaakt met de juiste hoeveelheid ruimte.

Stap 4 – Het swap-bestand inschakelen

Nu we een bestand van de juiste grootte beschikbaar hebben, moeten we dit daadwerkelijk omzetten in wisselruimte.

Eerst moeten we de machtigingen van het bestand vergrendelen, zodat alleen gebruikers met root-rechten de inhoud kunnen lezen. Dit voorkomt dat normale gebruikers toegang hebben tot het bestand, wat aanzienlijke beveiligingsimplicaties zou hebben.

Maak het bestand alleen toegankelijk voor root door het volgende te typen:

  1. sudo chmod 600 /swapfile

Controleer de wijziging in machtigingen door het volgende te typen:

  1. ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Zoals u kunt zien, heeft alleen de gebruiker root de lees- en schrijf vlaggen ingeschakeld.

We kunnen het bestand nu markeren als wisselruimte door het volgende te typen:

  1. sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Nadat we het bestand hebben gemarkeerd, kunnen we de wisselbestand inschakelen, waardoor ons systeem het kan gaan gebruiken:

  1. sudo swapon /swapfile

Controleer of de wisselruimte beschikbaar is door het volgende te typen:

  1. sudo swapon --show
Output
NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2

We kunnen opnieuw de uitvoer van het hulpprogramma free controleren om onze bevindingen te bevestigen:

  1. free -h
Output
total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 1.0Gi 0B 1.0Gi

Onze wisselruimte is succesvol ingesteld en ons besturingssysteem zal het beginnen te gebruiken indien nodig.

Stap 5 – Het Wisselbestand Permanent Maken

Onze recente wijzigingen hebben het wisselbestand ingeschakeld voor de huidige sessie. Als we echter opnieuw opstarten, behoudt de server de wisselinstellingen niet automatisch. We kunnen dit veranderen door het wisselbestand toe te voegen aan ons /etc/fstab-bestand.

Maak een back-up van het /etc/fstab-bestand voor het geval er iets misgaat:

  1. sudo cp /etc/fstab /etc/fstab.bak

Voeg de swap-bestandsinformatie toe aan het einde van je /etc/fstab-bestand door het volgende te typen:

  1. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Vervolgens zullen we enkele instellingen bekijken die we kunnen bijwerken om onze wisselgeheugenruimte af te stemmen.

Stap 6 – Het afstemmen van je Wisselgeheugeninstellingen

Er zijn enkele opties die je kunt configureren die van invloed zullen zijn op de prestaties van je systeem bij het omgaan met wisselgeheugen.

Het Aanpassen van de Swappiness-instelling

De swappiness-parameter configureert hoe vaak je systeem gegevens van RAM naar het wisselbestand verplaatst. Dit is een waarde tussen 0 en 100 die een percentage vertegenwoordigt.

Met waarden dicht bij nul zal de kernel gegevens niet naar de schijf verplaatsen tenzij absoluut noodzakelijk. Onthoud dat interacties met het wisselbestand “kostbaar” zijn omdat ze veel langer duren dan interacties met RAM en ze kunnen een aanzienlijke vermindering van de prestaties veroorzaken. Het systeem vertellen niet veel op het wisselbestand te vertrouwen, zal over het algemeen je systeem sneller maken.

Waarden die dichter bij 100 liggen, zullen proberen meer gegevens in het wisselbestand te plaatsen om meer RAM-ruimte vrij te houden. Afhankelijk van het geheugenprofiel van je applicaties of waarvoor je je server gebruikt, kan dit in sommige gevallen beter zijn.

We kunnen de huidige swappiness-waarde zien door het volgende te typen:

  1. cat /proc/sys/vm/swappiness
Output
60

Voor een desktop is een swappiness-instelling van 60 geen slechte waarde. Voor een server wilt u deze misschien dichter bij 0 zetten.

We kunnen de swappiness-instelling naar een andere waarde wijzigen door het sysctl-commando te gebruiken.

Bijvoorbeeld, om de swappiness in te stellen op 10, kunnen we typen:

  1. sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Deze instelling blijft behouden tot de volgende herstart. We kunnen deze waarde automatisch instellen bij het opnieuw opstarten door de regel toe te voegen aan ons /etc/sysctl.conf-bestand:

  1. sudo nano /etc/sysctl.conf

Voeg onderaan toe:

/etc/sysctl.conf
vm.swappiness=10

Sla het bestand op en sluit het af wanneer je klaar bent.

Het aanpassen van de Cache Pressure-instelling

Nog een gerelateerde waarde die je mogelijk wilt aanpassen is de vfs_cache_pressure. Deze instelling configureert hoeveel het systeem ervoor kiest om inode en dentry-informatie te cachen ten opzichte van andere gegevens.

Feitelijk is dit toegangsgegevens over het bestandssysteem. Dit is over het algemeen erg duur om op te zoeken en wordt zeer vaak aangevraagd, dus het is een uitstekende zaak voor uw systeem om te cachen. U kunt de huidige waarde zien door opnieuw het proc-bestandssysteem te bevragen:

  1. cat /proc/sys/vm/vfs_cache_pressure
Output
100

Zoals het momenteel is geconfigureerd, verwijdert ons systeem inode-informatie te snel uit de cache. We kunnen dit instellen op een meer conservatieve waarde zoals 50 door te typen:

  1. sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Opnieuw, dit is alleen geldig voor onze huidige sessie. We kunnen dat wijzigen door het toe te voegen aan ons configuratiebestand zoals we hebben gedaan met onze swappiness-instelling:

  1. sudo nano /etc/sysctl.conf

Voeg onderaan de regel toe die uw nieuwe waarde specificeert:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Sla het bestand op en sluit het af wanneer u klaar bent.

Conclusie

Het volgen van de stappen in deze handleiding zal u wat ademruimte geven in gevallen die anders zouden leiden tot out-of-memory-uitzonderingen. Swap-ruimte kan ontzettend nuttig zijn om sommige van deze veelvoorkomende problemen te vermijden.

Als u te maken krijgt met OOM (out of memory) fouten, of als u merkt dat uw systeem niet in staat is om de benodigde toepassingen te gebruiken, is de beste oplossing om uw toepassingsconfiguraties te optimaliseren of uw server te upgraden.

Source:
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-22-04