Ilustratie cu un modul RAM, un fisier swap pe disc si un ceas sincronizat pe un VPS Linux
Linux

Adauga un fisier swap si sincronizeaza ora pe VPS-ul Linux

Un VPS Linux nou porneste in cateva secunde si pare rapid, pana in noaptea in care un job de backup, un val de procese PHP si o interogare grea in baza de date vor memorie in acelasi moment. Kernelul ramane fara RAM, isi alege o victima si o opreste, de cele mai multe ori MySQL. O saptamana mai tarziu se strica altceva: reinnoirea unui certificat esueaza, codurile 2FA sunt respinse, iar orele din loguri nu se mai potrivesc cu ce s-a intamplat de fapt. Ambele probleme vin din doua lucruri mici pe care majoritatea imaginilor de server le lasa pe jumatate facute: nu exista swap si nimeni nu s-a uitat la ceas. In ghidul de azi le rezolvam pe amandoua cum trebuie: un fisier swap care rezista la reboot, o valoare rezonabila pentru swappiness, fusul orar corect si o sincronizare NTP care chiar functioneaza, cu explicatii pentru fiecare comanda.

Tot ce urmeaza functioneaza pe Debian 13 si Ubuntu 24.04, pe un VPS KVM, conectat ca utilizator obisnuit cu drepturi sudo. Acolo unde cele doua distributii se comporta diferit, o spunem explicit. Daca VPS-ul tau este un container LXC, citeste intai nota de la Pasul 1, pentru ca acolo unele dintre aceste setari tin de host, nu de tine.

De ce ai nevoie

  • Un VPS Linux cu Debian 13 sau Ubuntu 24.04 (un VPS DreamServer merge direct).
  • Acces SSH cu un utilizator care poate rula sudo.
  • Aproximativ 2-4 GB de spatiu liber pe disc pentru fisierul swap.
  • Zece-cincisprezece minute. Nu e nevoie de reboot; facem unul singur la final, doar ca sa demonstram ca setarile raman.

Ce este swap-ul si de ce are nevoie de el un VPS mic

RAM-ul este memoria de lucru rapida in care fiecare program care ruleaza isi tine datele. Este limitata: un VPS de 1 GB sau 2 GB se umple mai repede decat te-ai astepta, pentru ca serverul web, baza de date, pool-ul PHP si sistemul de operare stau toate acolo in acelasi timp.

Swap-ul este o zona rezervata pe disc pe care kernelul o poate folosi ca preaplin. Cand RAM-ul se strange, kernelul muta pe swap paginile de memorie pe care nu le-a mai atins nimeni de ceva vreme (un worker care sta degeaba, codul de pornire al unui daemon, un cache pe care nu-l citeste nimeni) si elibereaza RAM-ul pentru ce e cu adevarat activ. Discul e mult mai lent decat RAM-ul, deci swap-ul nu e “RAM in plus” pe care sa traiesti permanent. Este o plasa de siguranta.

Fara swap, cand se termina RAM-ul, kernelului ii mai ramane o singura unealta: OOM killer (Out Of Memory killer). Acesta alege un proces, de obicei pe cel care foloseste cea mai multa memorie, si il opreste pe loc. Pe un server obisnuit, acela este baza de date. Cu o cantitate modesta de swap, acelasi varf face serverul ceva mai lent pentru un minut, in loc sa-ti pice un serviciu.

Swap-ul poate sta pe o partitie dedicata sau intr-un fisier obisnuit. Pe un VPS, fisierul swap este alegerea mai buna: nu trebuie sa repartitionezi nimic, il poti redimensiona sau sterge intr-un minut, iar pe kernelurile moderne performanta e echivalenta cu a unei partitii. Majoritatea imaginilor de VPS, inclusiv imaginile cloud de Ubuntu, vin fara swap deloc, asa ca merita sa-l adaugi din prima zi.

De ce conteaza ceasul mai mult decat crezi

Fiecare server are un ceas de sistem, tinut intern in UTC (timpul universal coordonat, referinta globala, fara ora de vara). Fusul orar este doar o setare de afisare peste el: decide cum apare acel moment UTC in loguri, ce inseamna “ora 3 noaptea” pentru cron si ce ora afiseaza aplicatiile tale.

Ceasul in sine deviaza. Temporizatorul pe care se bazeaza o masina virtuala nu e niciodata perfect, iar o pauza, o migrare sau restaurarea unui VM dintr-un snapshot il pot face sa sara. NTP (Network Time Protocol) rezolva asta: un mic serviciu in fundal intreaba periodic servere publice de timp cat e ora si corecteaza usor ceasul local.

Un ceas gresit strica mai multe decat ai crede:

  • Certificatele TLS au o data “nu inainte de” si una “nu dupa”. Daca ceasul tau ramane in urma, un certificat nou-nout pare “inca nevalid”; daca o ia inainte, unul valid pare expirat. Reinnoirile Let’s Encrypt, apt prin HTTPS si apelurile catre API-uri externe pot esua.
  • Codurile 2FA (TOTP, cele sase cifre din aplicatia de autentificare) sunt valabile cam 30 de secunde, uneori cu inca un pas de toleranta. Un server decalat cu un minut respinge coduri corecte.
  • Logurile de pe masini diferite nu mai pot fi corelate daca ceasurile nu se potrivesc, iar asta doare exact cand investighezi un incident.
  • Joburile cron ruleaza la ora locala gresita daca fusul orar nu e cel pe care il crezi.
Drumul memoriei si drumul orei pe un VPSMEMORIE: ce se intampla cand se umple RAM-ulAplicatiiweb, DB, PHPRAMrapid, limitatcu swapfara swapFisier swapmai lent, dar ruleazaOOM killerun proces e opritORA: cum ramane ceasul corectServere NTPpool.ntp.orgUDP 123timesyncdsau chronyajusteazaCeas sistemtinut in UTCfusul orar schimba doar afisareaLoguriJoburi cronTLS si 2FA
Swap-ul preia preaplinul de memorie inainte sa intervina OOM killer; NTP tine corect ceasul de sistem in UTC, iar fusul orar schimba doar felul in care e afisat.

Planul: adauga un fisier swap pe Ubuntu sau Debian, apoi repara ceasul

Cei 7 pasi din acest ghid1234567Analizafree, dfCrearefallocateActivareswapon, fstabAjustareswappinessFus orartimedatectlSincron NTPtimesyncdVerificaretest rebootSwap (1-4)Ora (5-6)Verificare (7)
Pasii 1-4 creeaza si ajusteaza fisierul swap, pasii 5 si 6 repara fusul orar si NTP, pasul 7 demonstreaza ca totul rezista la reboot.

Pasii 1-4 construiesc si ajusteaza fisierul swap, pasii 5 si 6 repara ora, iar pasul 7 verifica faptul ca totul supravietuieste unui reboot. Cele doua jumatati sunt independente, asa ca te poti opri dupa Pasul 4 si poti reveni mai tarziu pentru ceas.

Pasul 1: Verifica memoria, discul si swap-ul existent

Inainte sa cream ceva, ne uitam la ce avem. Mai intai aflam ce tip de virtualizare foloseste VPS-ul:

systemd-detect-virt

Pe un VPS KVM, comanda afiseaza kvm. Daca afiseaza lxc, esti intr-un container care imparte kernelul cu host-ul. Intr-un container LXC neprivilegiat nu poti crea sau activa swap (swapon da eroarea “Operation not permitted”), nu poti modifica vm.swappiness si nu poti seta ceasul, pentru ca limitele de memorie, swap-ul si ora sunt controlate de host. Fusul orar il poti seta in continuare (Pasul 5). Daca esti pe LXC si ai nevoie de mai mult spatiu de memorie, cere furnizorului sa mareasca limita de memorie sau de swap a containerului.

Acum verificam memoria si swap-ul curent:

free -h
swapon --show

free -h arata memoria in unitati usor de citit. Pe un VPS nou de 2 GB arata cam asa:

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       610Mi       880Mi       1.0Mi       600Mi       1.3Gi
Swap:             0B          0B          0B

Coloanele importante sunt total si available (cata memorie mai pot primi programele fara sa se ajunga la swap). Linia Swap: are doar zerouri, iar swapon --show nu afiseaza nimic: inca nu exista swap. Daca swapon --show listeaza deja un dispozitiv sau un fisier, imaginea ta vine cu swap si poti sari direct la Pasul 4.

La final, verificam spatiul liber si tipul sistemului de fisiere de pe partitia root:

df -h /
findmnt -no FSTYPE /

Ai nevoie de spatiu pentru fisierul swap plus o marja confortabila; nu umple niciodata un disc pana la 100%. Pe imaginile VPS de Debian si Ubuntu, sistemul de fisiere este aproape mereu ext4, iar pasul urmator pleaca de la aceasta presupunere. Daca vezi btrfs, citeste nota de la Pasul 2.

Pasul 2: Creeaza fisierul swap

Cat de mare sa fie fisierul swap?

Regulile vechi de tipul “de doua ori RAM-ul” vin de pe desktop-uri cu hibernare si memorie foarte putina. Un VPS nu hiberneaza niciodata, iar un fisier swap urias doar lasa un proces scapat de sub control sa chinuie discul mai mult timp inainte sa cada oricum. Un punct de plecare rezonabil:

RAM VPSSwap recomandatInterval rezonabil
1 GB2 GB1-2 GB
2 GB2 GB1-2 GB
4 GB2 GB2-4 GB
8 GB4 GB2-4 GB
16 GB sau mai mult4 GB2-4 GB
Swap recomandat dupa RAM-ul VPS-ului (aprox.)012345Swap recomandat (GB)2 GB2 GB2 GB4 GB4 GB1 GB RAM2 GB RAM4 GB RAM8 GB RAM16 GB RAMRAM-ul VPS-ului (barele sunt un punct de plecare, nu o regula fixa)
Valori de pornire aproximative: pe planurile mici swap-ul poate egala sau depasi RAM-ul, pe cele mari 2-4 GB de swap sunt suficienti.

In exemplele de mai jos folosim 2 GB. Daca ai ales alta dimensiune, inlocuieste 2G cu valoarea ta.

Aloca fisierul

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile

fallocate rezerva instant 2 GB de disc pentru fisier, fara sa scrie date. chmod 600 face fisierul accesibil doar pentru root, iar asta e esential: swap-ul poate contine bucati din orice a fost vreodata in memorie, inclusiv parole si chei private. Rezultatul lui ls ar trebui sa arate asa:

-rw------- 1 root root 2.0G Nov 10 08:00 /swapfile

Daca fallocate nu e suportat pe sistemul tau de fisiere, sau daca mai tarziu swapon se plange ca fisierul “has holes”, creeaza-l pe varianta mai lenta, dar mereu sigura, scriind zerouri reale:

sudo rm -f /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile

2048 de blocuri de cate 1 MiB inseamna exact 2 GiB; modifica count pentru alte dimensiuni. Pe btrfs, un fisier obisnuit nu poate fi folosit ca swap decat daca are copy-on-write dezactivat; foloseste in schimb sudo btrfs filesystem mkswapfile --size 2g /swapfile, care se ocupa singur de asta.

Formateaza-l ca swap

sudo mkswap /swapfile

mkswap scrie un mic antet care marcheaza fisierul ca spatiu de swap. Rezultatul asteptat:

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=3f1c2a9e-7b1d-4c55-9a0e-2d6b8f4e1a77

UUID-ul va fi altul pe serverul tau, e normal.

Pasul 3: Activeaza swap-ul si fa-l permanent

Pornim fisierul swap:

sudo swapon /swapfile
swapon --show

Ar trebui sa vezi:

NAME      TYPE SIZE USED PRIO
/swapfile file   2G   0B   -2

Swap-ul e activ chiar acum, dar ar disparea dupa un reboot. Ca sa devina permanent, adaugam o linie in /etc/fstab, fisierul care ii spune sistemului ce discuri si zone de swap sa activeze la pornire. Un fstab stricat poate impiedica pornirea curata a serverului, asa ca facem intai o copie de siguranta:

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

Linia se citeste asa: dispozitivul este /swapfile, nu are punct de montare (none), tipul este swap, se folosesc optiunile implicite de swap (sw), iar cele doua zerouri dezactiveaza dump si verificarea sistemului de fisiere. tee -a adauga linia la final cu drepturi de root si o afiseaza si in terminal. Un simplu sudo echo ... >> /etc/fstab ar esua, pentru ca redirectarea >> ruleaza ca utilizatorul tau normal, nu ca root.

Acum testam linia din fstab fara reboot: oprim swap-ul si cerem sistemului sa activeze tot ce apare in fstab:

sudo swapoff /swapfile
sudo swapon -a
swapon --show

Daca /swapfile apare din nou, linia din fstab e corecta. Daca swapon -a afiseaza o eroare, deschide fisierul cu sudo nano /etc/fstab si corecteaza linia, sau restaureaza copia cu sudo cp /etc/fstab.bak /etc/fstab. Verifica si ca nu ai rulat de doua ori comanda cu tee -a, pentru ca ai avea o linie duplicata.

Pasul 4: Ajusteaza swappiness

Swappiness este o setare de kernel, intre 0 si 200 pe kernelurile actuale, care ii spune Linux-ului cat de repede sa mute memoria aplicatiilor in swap, comparativ cu eliberarea cache-ului de fisiere. Valoarea implicita este 60, gandita pentru desktop-uri. Pe un server vrem ca kernelul sa tina memoria aplicatiilor in RAM cat mai mult si sa foloseasca swap-ul doar sub presiune reala, asa ca o valoare in jur de 10 merge foarte bine. Nu folosi 0: nu dezactiveaza swap-ul, dar il face pe kernel sa-l evite pana in ultimul moment, ceea ce readuce o buna parte din riscul de OOM pe care incercam sa-l eliminam.

Verifica valoarea curenta si schimb-o pentru sistemul pornit:

cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10

A doua comanda confirma cu vm.swappiness = 10. Ca valoarea sa ramana si dupa reboot, o punem intr-un fisier propriu in /etc/sysctl.d/ si reincarcam toate setarile sysctl:

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

sysctl --system listeaza fiecare fisier de configurare pe care il citeste; printre ele ar trebui sa apara /etc/sysctl.d/99-swappiness.conf, urmat de vm.swappiness = 10.

O diferenta intre Debian si Ubuntu: multe ghiduri mai vechi te trimit sa editezi /etc/sysctl.conf. Pe Ubuntu 24.04 fisierul exista inca si e citit la pornire, dar pe Debian 13 nu mai este livrat si nu mai este citit la boot, deci o setare pusa acolo e ignorata in tacere dupa restart. Un fisier in /etc/sysctl.d/ functioneaza pe ambele, de aceea il folosim. Vei mai vedea recomandari sa setezi vm.vfs_cache_pressure=50; valoarea implicita de 100 e buna pentru majoritatea serverelor, asa ca n-o atinge decat daca ai masurat un motiv concret.

Pasul 5: Seteaza fusul orar

Ne uitam la configuratia actuala a orei:

timedatectl

Pe un VPS nou, rezultatul arata de obicei asa:

               Local time: Tue 2026-11-10 06:00:12 UTC
           Universal time: Tue 2026-11-10 06:00:12 UTC
                 RTC time: Tue 2026-11-10 06:00:12
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Time zone este setarea de afisare. System clock synchronized si NTP service ne spun daca sincronizarea functioneaza, de care ne ocupam la Pasul 6. RTC in local TZ: no inseamna ca ceasul hardware virtual e tinut in UTC, ceea ce e corect pe Linux; lasa-l asa.

UTC sau ora locala?

Ambele variante sunt valide; important e sa alegi constient. UTC nu se schimba niciodata la ora de vara, deci nu ai ore lipsa sau dublate in loguri, iar serverele din tari diferite se aliniaza direct. Multe echipe tin toate serverele pe UTC. Ora locala e mai prietenoasa cand serverul deserveste o singura tara si citesti logurile si programezi joburile in ore locale. Pentru o firma din Romania, Europe/Bucharest este alegerea fireasca. Gasim numele exact si il setam:

timedatectl list-timezones | grep -i bucharest
sudo timedatectl set-timezone Europe/Bucharest
timedatectl

Linia Time zone arata acum Europe/Bucharest (EET, +0200) iarna si EEST, +0300 vara. Ceasul de sistem de dedesubt nu s-a schimbat deloc, doar felul in care este afisat.

Cron citeste fusul orar la pornire, asa ca il repornim pentru ca joburile programate sa urmeze noul fus. Serviciul se numeste cron atat pe Debian, cat si pe Ubuntu (pe alte distributii se numeste crond):

sudo systemctl restart cron

Daca primesti mesajul ca unitatea nu exista, cron pur si simplu nu e instalat, lucru frecvent pe instalarile minimale de Debian; nu ai ce reporni. Tine minte ca unele programe au propria setare de fus orar: PHP are date.timezone, MySQL si PostgreSQL au variabilele lor de time zone, iar containerele Docker ruleaza in UTC daca nu le dai variabila TZ sau nu montezi /etc/localtime in ele.

Pasul 6: Porneste sincronizarea orei prin NTP

Pe Debian si Ubuntu intalnesti de obicei doi clienti NTP: systemd-timesyncd, un client usor, perfect pentru un singur VPS, si chrony, o implementare NTP completa, cu mai multe functii. Ai nevoie de exact unul dintre ei. Verifica pe care il rulezi:

systemctl is-active systemd-timesyncd chrony

Comanda afiseaza cate o linie pentru fiecare serviciu, active sau inactive. Pe Ubuntu 24.04 vei vedea in mod normal timesyncd activ, configurat cu ntp.ubuntu.com. Pe Debian 13 depinde de imagine: multe folosesc timesyncd cu serverele debian.pool.ntp.org, unele imagini cloud vin cu chrony, iar instalarile minimale pot sa nu aiba niciunul. Daca ambele linii spun inactive, instaleaza timesyncd:

sudo apt update
sudo apt install systemd-timesyncd

Cele doua pachete sunt in conflict intentionat: instalarea unuia il elimina pe celalalt, ca sa nu ajungi cu doi daemoni care se bat pe acelasi ceas.

Cat deviaza un ceas nesincronizat (aprox., 20 ppm)Dupa 1 zi~2 sDupa 1 saptamana~12 sDupa 1 luna~52 sDupa 3 luni~156 s30 s: fereastra tipica a codului 2FA04080120160Eroarea ceasului fara NTP (secunde)Restaurarea unui snapshot sau pauzele lungi pot da salturi mult mai mari
Deviatia aproximativa a unui ceas necorectat la 20 ppm: in mai putin de o luna iese deja din fereastra tolerata de codurile 2FA.

Configureaza timesyncd

Valorile implicite merg, dar noi preferam servere apropiate din pool-ul public NTP. In loc sa editam fisierul principal de configurare, adaugam un fisier drop-in, care ramane neatins la actualizarile de pachete:

sudo mkdir -p /etc/systemd/timesyncd.conf.d
sudo tee /etc/systemd/timesyncd.conf.d/10-servers.conf > /dev/null <<'EOF'
[Time]
NTP=0.ro.pool.ntp.org 1.ro.pool.ntp.org 2.ro.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org
EOF
sudo systemctl restart systemd-timesyncd
sudo timedatectl set-ntp true

NTP= contine serverele pe care le vrem, aici zona romaneasca a pool-ului; in afara Romaniei foloseste zona tarii tale sau pur si simplu pool.ntp.org. FallbackNTP= e folosit doar daca niciunul dintre serverele principale nu raspunde. set-ntp true se asigura ca sincronizarea este pornita. Acum verificam starea:

timedatectl timesync-status
       Server: 192.0.2.10 (0.ro.pool.ntp.org)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C035676C
    Precision: 1us (-24)
Root distance: 1.035ms (max: 5s)
       Offset: -312us
        Delay: 4.812ms
       Jitter: 410us
 Packet count: 6
    Frequency: +11.204ppm

Liniile care conteaza: Server arata ce masina a raspuns, Stratum cati pasi o despart de un ceas de referinta (2 e excelent), iar Offset cat de departe era ceasul nostru fata de ea, aici 0,3 milisecunde. Imediat dupa restart intervalul de interogare e scurt, apoi creste pe masura ce ceasul se stabilizeaza. Daca rulezi din nou timedatectl, ar trebui sa vezi System clock synchronized: yes.

Daca sistemul tau foloseste chrony

Sari peste configurarea timesyncd si verifica chrony:

chronyc tracking
chronyc sources -v

tracking arata decalajul curent pe linia System time, iar sources listeaza serverele; cel marcat cu * este cel folosit. Atat pe Debian, cat si pe Ubuntu, configuratia principala este /etc/chrony/chrony.conf, care citeste si fisiere suplimentare din /etc/chrony/sources.d/. Ca sa folosesti serverele pool pe care le vrei, creeaza /etc/chrony/sources.d/ro-pool.sources cu o singura linie, pool ro.pool.ntp.org iburst, apoi ruleaza sudo chronyc reload sources.

Firewall

Un client NTP trimite cereri de pe serverul tau catre portul UDP 123 al serverelor de timp si primeste raspunsurile lor. Cu ufw in modul implicit (blocheaza traficul intrat, permite traficul iesit) totul merge deja, iar portul 123 nu trebuie deschis pentru trafic intrat: VPS-ul tau e client, nu server de timp. Doar daca ai schimbat politica de iesire pe deny ai nevoie de sudo ufw allow out 123/udp.

Pasul 7: Verifica totul dupa un reboot

Niciuna dintre schimbarile de mai sus nu are nevoie de reboot, toate sunt deja active. Repornim o singura data doar ca sa demonstram ca revin singure:

sudo reboot

Reconecteaza-te dupa un minut si ruleaza:

swapon --show
cat /proc/sys/vm/swappiness
timedatectl

Te astepti sa vezi /swapfile listat cu dimensiunea lui, 10 pentru swappiness, fusul orar ales si System clock synchronized: yes (imediat dupa pornire poate dura cateva secunde pana devine yes).

Daca tot vorbim de reboot, inca o diferenta intre Debian si Ubuntu: Ubuntu creeaza fisierul /var/run/reboot-required cand actualizarile instalate cer o repornire, deci ls /var/run/reboot-required e o verificare rapida acolo. Debian nu creeaza acest fisier in mod sigur; instaleaza pachetul needrestart ca sa afli ce trebuie repornit. Nimic din acest ghid nu creeaza fisierul respectiv, pe niciun sistem.

Cum urmaresti swap-ul

O anumita utilizare a swap-ului este perfect normala: paginile nefolosite parcate pe disc nu te costa nimic. Ce vrei sa eviti este traficul continuu dinspre si inspre swap. Il verifici cu:

vmstat 5 5

Comanda afiseaza cinci esantioane, la cinci secunde distanta. Uita-te la coloanele si (swap in) si so (swap out). Valori nenule ocazionale sunt in regula; valori mari in fiecare esantion inseamna ca serverul foloseste swap-ul tot timpul. E semn ca are prea putin RAM, iar solutia este sa reduci consumul de memorie sau sa treci pe un plan mai mare, nu sa maresti fisierul swap.

Probleme frecvente si greseli des intalnite

  • swapon: /swapfile: swapon failed: Operation not permitted: aproape sigur esti intr-un container LXC (verifica cu systemd-detect-virt). Acolo swap-ul este gestionat de host.
  • swapon: /swapfile: insecure permissions 0644, 0600 suggested: ai sarit peste sudo chmod 600 /swapfile. Ruleaz-o si incearca din nou.
  • swapon: /swapfile: swapfile has holes sau Invalid argument: sistemul de fisiere nu accepta un fisier prealocat. Recreeaza-l cu comanda dd de la Pasul 2, apoi ruleaza din nou mkswap.
  • Swap-ul a disparut dupa reboot: linia din fstab lipseste sau are o greseala de scriere. Verifica cu grep swap /etc/fstab si systemctl status swapfile.swap, unitatea pe care systemd o genereaza automat pentru /swapfile.
  • sysctl: setting key "vm.swappiness": Read-only file system: tot un container; valoarea o decide host-ul.
  • Swappiness revine la 60 dupa reboot pe Debian 13: probabil ai pus-o in /etc/sysctl.conf. Mut-o in /etc/sysctl.d/99-swappiness.conf.
  • System clock synchronized: no: verifica daca ruleaza un client (systemctl status systemd-timesyncd), citeste-i logul cu journalctl -u systemd-timesyncd -n 30 si asigura-te ca traficul UDP 123 spre exterior nu e blocat. Intr-un container, timesyncd nici nu porneste, intentionat, iar NTP service arata n/a sau inactive: se foloseste ceasul host-ului.
  • Cron ruleaza joburile la ora veche: ai schimbat fusul orar, dar nu ai repornit cron.
  • Erori de tip “certificate is not yet valid” sau certificat expirat la curl ori apt: compara date cu un ceas corect. Daca e decalat, repara intai NTP, apoi incearca din nou.
  • S-a umplut discul: fisierul swap e prea mare pentru un disc mic. Micsoreaza-l asa cum e descris in sectiunea de intrebari de mai jos.

Note de securitate

  • Permisiunile fisierului swap nu sunt optionale. Swap-ul contine pagini brute de memorie: token-uri de sesiune, parole de baze de date, date decriptate. Tine-l pe 600, cu proprietar root.
  • Swap-ul nu este criptat implicit. Pe un VPS KVM discul virtual iti apartine doar tie, dar daca modelul tau de risc include pe cineva care citeste imagini de disc sau backup-uri, ia in calcul swap criptat cu o cheie aleatoare generata la pornire, sau evita swap-ul pentru procesele care tin secrete foarte sensibile.
  • Nu rula un server NTP deschis. VPS-ul tau trebuie doar sa interogheze servere de timp. Tine portul UDP 123 inchis pentru trafic intrat; serverele NTP publice configurate gresit au fost folosite des in atacuri de amplificare.
  • Ora corecta este un control de securitate. Validarea TLS, 2FA, expirarea token-urilor si cronologiile din investigatii depind toate de ea. Trateaza “clock not synchronized” ca pe o alerta de rezolvat, nu ca pe un avertisment cosmetic.
  • Swap-ul nu repara o scurgere de memorie. Daca o aplicatie creste continuu, swap-ul doar amana caderea. Monitorizeaza memoria si seteaza limite unde poti, de exemplu limite de memorie pe containerele Docker.

Deci, merita cele zece minute?

Cu siguranta. Un fisier swap dimensionat corect transforma caderile din lipsa de memorie in incetiniri scurte, un swappiness mic tine aplicatiile in RAM, acolo unde le e locul, iar un ceas sincronizat cu un fus orar ales constient tine certificatele, 2FA, cron si logurile in regula. E genul de configurare pe care nu o observa nimeni cand e facuta si pe care o observa toata lumea cand lipseste.

Daca pornesti un proiect nou, planurile noastre VPS ruleaza pe KVM in propriul nostru centru de date din Romania, deci tot ce scrie in ghid functioneaza exact asa. Iar daca preferi sa nu te ocupi singur de swap, ajustari de kernel, sincronizarea orei, actualizari si monitorizare, echipa noastra de administrare servere iti poate configura serverul si il poate avea in grija pentru tine.

Intrebari frecvente

Swap-ul imi incetineste VPS-ul?

Nu, nu de unul singur. Swap-ul e folosit doar cand RAM-ul e sub presiune, iar cu swappiness la 10 kernelul muta doar memoria care chiar sta nefolosita. Fara swap, aceeasi situatie se termina cu un proces oprit, ceea ce e mult mai rau decat o incetinire scurta.

Fisier swap sau partitie swap?

Pe un VPS, fisier swap. Performanta e echivalenta pe kernelurile moderne, iar un fisier e mult mai usor de creat, redimensionat sau sters decat o partitie.

Cum redimensionez sau sterg fisierul swap?

Opreste-l cu sudo swapoff /swapfile. Ca sa-l redimensionezi, ruleaza fallocate cu noua dimensiune, apoi din nou chmod 600, mkswap si swapon; linia din fstab ramane aceeasi. Ca sa-l stergi, elimina linia din /etc/fstab si ruleaza sudo rm /swapfile. Asigura-te ca ai destul RAM liber inainte de swapoff, pentru ca tot ce e acum in swap trebuie mutat inapoi in memorie.

Mai am nevoie de swap daca am 16 GB de RAM?

Un fisier swap mic, de 2-4 GB, e util in continuare ca loc de parcare pentru paginile nefolosite si ca tampon pentru varfuri neasteptate. Te costa doar putin spatiu pe disc.

Ce zici de zram?

zram creeaza un dispozitiv swap comprimat chiar in RAM. Ajuta pe masinile foarte mici si poate fi combinat cu un fisier swap, dar plateste memoria economisita cu timp de procesor. Pentru majoritatea VPS-urilor, un fisier swap simplu cu un swappiness rezonabil e mai usor de gestionat si suficient.

Serverul sa fie pe UTC sau pe ora locala?

Daca ai servere in mai multe tari sau te intereseaza corelarea logurilor, foloseste UTC. Daca totul deserveste Romania si preferi sa citesti orele locale, Europe/Bucharest e o alegere buna. Intern, ceasul de sistem e oricum in UTC.

Avem Incredere & Suntem Membri

Suntem membri ai principalelor organizatii de infrastructura internet.

RIPE NCC MANRS PeeringDB RoTLD DSIX SBIX 4IXP LOCIX Euro-IX RIPE NCC MANRS PeeringDB RoTLD DSIX SBIX 4IXP LOCIX Euro-IX