Swap faila izveide uz Linux VPS — soli pa solim

Palaist serverī ar vienu komandu (vispirms pārbaudiet skripta saturu zemāk):

curl -sSL https://cp.lv/scripts/nastrojka-swap-vps.sh | sudo bash

…vai ar wget:

wget -qO- https://cp.lv/scripts/nastrojka-swap-vps.sh | sudo bash

Skripta saturs nastrojka-swap-vps.sh:

#!/usr/bin/env bash
# 2 GB swap faila izveide + autoieslēgšanās caur fstab + swappiness
set -euo pipefail

SWAPFILE=/swapfile
SWAPSIZE=2G

# 1. Izveidot failu (fallocate, ja neizdodas — dd)
if ! sudo fallocate -l "$SWAPSIZE" "$SWAPFILE"; then
  sudo dd if=/dev/zero of="$SWAPFILE" bs=1M count=2048
fi
sudo chmod 600 "$SWAPFILE"

# 2. Formatēt kā swap un ieslēgt
sudo mkswap "$SWAPFILE"
sudo swapon "$SWAPFILE"

# 3. Autoieslēgšanās caur fstab (tikai ja vēl nav ierakstīts)
if ! grep -q "^${SWAPFILE} " /etc/fstab; then
  echo "${SWAPFILE} none swap sw 0 0" | sudo tee -a /etc/fstab
fi

# 4. swappiness=10 — uzreiz un turpmāk (heredoc failā sysctl.d)
sudo sysctl vm.swappiness=10
sudo tee /etc/sysctl.d/99-swappiness.conf > /dev/null << 'EOF'
vm.swappiness=10
EOF

sudo swapon --show
free -h
echo "Gatavs: 2 GB swap fails ir aktīvs, swappiness=10."

Swap ir fails vai sadaļa diskā, ko sistēma izmanto kā «rezerves» atmiņu, kad beidzas operatīvā. Uz VPS visvienkāršāk ir izveidot swap failu: komandas fallocate, mkswap un swapon aizņems pāris minūtes. Apskatīsim procesu un iestatījumus.

Kāpēc vajadzīgs swap

Swap neaizstāj operatīvo atmiņu (tas ir daudzkārt lēnāks), bet pasargā no procesu avārijas beigšanas maksimālās slodzes brīžos. Kodols izsūta swap failā reti izmantotās atmiņas lapas, atbrīvojot RAM aktīvajiem uzdevumiem. Īpaši noderīgi tarifos ar nelielu atmiņas apjomu.

1. solis. Pārbaudiet pašreizējo swap

sudo swapon --show
free -h

Ja swapon izvade ir tukša — swap vēl nav iestatīts.

2. solis. Izveidojiet swap failu

Izveidojiet vajadzīgā izmēra failu. Piemēram, 2 GB:

sudo fallocate -l 2G /swapfile

Ja fallocate nav pieejams, izmantojiet dd:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

Ierobežojiet tiesības, lai failu lasītu tikai root:

sudo chmod 600 /swapfile

3. solis. Formatējiet un ieslēdziet

Formatējiet failu kā swap un aktivizējiet:

sudo mkswap /swapfile
sudo swapon /swapfile

Pārbaudiet, vai swap ir parādījies:

sudo swapon --show
free -h

4. solis. Ieslēdziet autoieslēgšanos

Pagaidām swap darbojas tikai līdz pārstartēšanai. Lai tas pieslēgtos automātiski, pievienojiet ierakstu failā /etc/fstab:

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

Pārbaudiet, vai rinda pievienota korekti:

grep swapfile /etc/fstab

5. solis. Iestatiet swappiness

Parametrs vm.swappiness (0–100) nosaka, cik labprāt kodols izmanto swap. Serverī to parasti samazina līdz 10, lai swap tiktu iesaistīts tikai reāla RAM trūkuma gadījumā:

sudo sysctl vm.swappiness=10

Lai vērtība saglabātos pēc pārstartēšanas:

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf

Cik daudz swap veidot

Operatīvā atmiņa Ieteicamais swap
līdz 2 GB vienāds ar RAM apjomu
2–8 GB vienāds ar RAM apjomu
vairāk par 8 GB pietiek ar 2–4 GB

Tas ir orientieris, nevis stingrs noteikums: datubāzei swap labāk turēt nelielu, lai izvairītos no veiktspējas krituma.

Kā izdzēst swap

Ja swap vairs nav vajadzīgs:

sudo swapoff /swapfile
sudo rm /swapfile

Pēc tam izdzēsiet attiecīgo rindu no /etc/fstab.

Biežāk uzdotie jautājumi

Vai swap palēninās servera darbu? Swap diskā ir desmitiem reižu lēnāks par RAM. Kamēr swap dati tiek izmantoti reti — ietekmes gandrīz nav. Pastāvīgs aktīvs darbs ar swap nozīmē atmiņas trūkumu — vērts pievienot RAM.

Swap fails vai swap sadaļa? Uz VPS ērtāks ir fails: to viegli izveidot, mainīt izmēru un dzēst bez diska pārdalīšanas. Sadaļa vajadzīga reti.

Kādu swappiness izvēlēties serverim? Parasti 10 — swap pieslēdzas tikai reāla atmiņas trūkuma gadījumā. Vērtība 60 (pēc noklusējuma) ir pārāk agresīva serveriem ar datubāzēm.

Vai var izveidot swap uz VPS ar SSD? Jā. Uz NVMe/SSD swap strādā ātrāk nekā uz HDD, bet joprojām lēnāk par RAM. No pastāvīgas intensīvas lietošanas labāk izvairīties, lai nenodilinātu disku.

Kopsavilkums

Swap fails ir vienkārša apdrošināšana pret atmiņas trūkumu zem slodzes. Izveidojiet to ar fallocate, ieslēdziet ar swapon, ierakstiet fstab un iestatiet swappiness=10. Ja swap tiek izmantots pastāvīgi — tas ir signāls pāriet uz tarifu ar lielāku RAM apjomu.

Vajag vairāk atmiņas? Izvēlieties tarifu sadaļā Linux VPS, noformējiet VPS nomu vai pasūtiet Serveru administrēšanu.

Edgars Kalējs