BLACKBOXCentru de ajutor

Discul serverului este plin

Semnele unui disc plin, pașii rapizi pentru a elibera spațiu și cum preveniți problema.

generalActualizat 2026-10-09~8 min de citit
Pe această pagină

Când discul serverului se umple, bazele de date se opresc, site-urile dau erori și nu se mai pot salva fișiere. Comenzile se rulează pe server, prin SSH, ca root (Conectarea la server prin SSH (Windows, macOS, Linux)). Dacă serverul are serviciul „Monitoring 24/7”, evoluția ocupării discului o vedeți și în panoul app.blackbox.md, pe pagina „Monitorizare” (app.blackbox.md/monitoring, meniul lateral → „Infrastructură” → „Monitorizare”).

Disponibil pentru: oricine are acces root prin SSH la un server BLACKBOX. Graficele din „Monitorizare”: serverele cu serviciul „Monitoring 24/7” activ. Upgrade-ul din panou: titularul serverului.

Semnele unui disc plin

Semn Unde îl vedeți
Eroarea No space left on device în terminal, la salvarea unui fișier, la apt sau dnf, scp sau rsync, în jurnalele aplicațiilor
cannot create temp file for here-document când apăsați Tab în terminalul SSH
Baza de date se oprește, nu mai răspunde sau nu mai pornește systemctl --failed arată serviciul bazei de date (de exemplu mariadb, mysql sau postgresql); în jurnalul ei apare No space left on device sau Disk full
Site-ul răspunde cu eroarea 500 sau 502, autentificarea pe site nu se mai păstrează în browser și în jurnalele serverului web și ale PHP
Coloana „Disc” din tabelul „Serverele dvs.” are bara roșie (de la 90%), iar graficul „Utilizare disc (%)” urcă spre 100% pagina „Monitorizare”, doar pentru serverele cu serviciul „Monitoring 24/7” (Pagina „Monitorizare”). Se măsoară doar partiția /
O alertă despre disc în cardul „Alerte” sau pe email doar dacă serverul are reguli de monitorizare configurate (Alerte și notificări pe email)

Pasul 1. Verificați spațiul și inode-urile

df -h
df -i
  • df -h: coloana Use% la 100% (sau aproape) pentru / ori pentru altă partiție înseamnă că discul este plin. Continuați cu pașii 2–5.
  • df -i: coloana IUse% la 100% înseamnă că nu se mai pot crea fișiere, chiar dacă mai este spațiu. Treceți la secțiunea „Inode-urile sunt epuizate” de mai jos.

Pasul 2. Eliberați rapid spațiu fără risc

Jurnalul de sistem: prima comandă arată cât ocupă, a doua șterge arhivele lui până rămân cel mult 200 MB.

journalctl --disk-usage
journalctl --vacuum-size=200M

Cache-ul pachetelor descărcate:

Ubuntu și Debian

apt clean
apt autoremove --purge

A doua comandă șterge kernelurile vechi și pachetele de care nu mai depinde nimic. Citiți lista înainte să confirmați.

AlmaLinux și CentOS Stream

dnf clean all

Pasul 3. Găsiți ce ocupă spațiul

Listați folderele de pe partiția / în ordinea mărimii (cele mai mari sunt la sfârșit; ultimul rând este totalul partiției), apoi repetați comanda pentru cel mai mare folder, de exemplu /var:

du -xh --max-depth=1 / 2>/dev/null | sort -h
du -xh --max-depth=1 /var 2>/dev/null | sort -h

Fișierele de peste 500 MB:

find / -xdev -type f -size +500M -exec ls -lh {} + 2>/dev/null

Mai comod este programul ncdu (navigați cu săgețile, ieșiți cu q). Instalați-l după pasul 2, când discul are din nou puțin spațiu liber. Pe Ubuntu și Debian:

apt update
apt install -y ncdu

Pe AlmaLinux și CentOS Stream, pachetul vine din depozitul EPEL:

dnf install -y epel-release
dnf install -y ncdu

Apoi porniți-l:

ncdu -x /
Folder Ce conține de obicei Ce faceți
/var/log jurnalele sistemului și ale aplicațiilor „Jurnale mari” de mai jos
/var/lib/docker imagini, containere, jurnalele containerelor, volume „Docker” de mai jos
/root, /home, /var/www, /var/backups, /tmp exporturi de baze de date (.sql, .sql.gz), arhive (.zip, .tar.gz), copii uitate „Copii și arhive uitate” de mai jos
/var/lib/mysql, /var/lib/postgresql, /var/lib/pgsql fișierele bazelor de date nimic de mână; vedeți întrebările frecvente
/swapfile memoria swap Adăugarea memoriei swap

Atenție Nu ștergeți de mână fișierele bazelor de date (/var/lib/mysql, /var/lib/postgresql, /var/lib/pgsql) și nici folderele sistemului (/boot, /etc, /usr, /var/lib/dpkg, /var/lib/rpm). Datele din /var/lib/docker le curățați doar cu comenzile docker; singura excepție este golirea jurnalelor containerelor, descrisă mai jos. Ce ștergeți fără copie de rezervă nu se mai poate recupera.

Pasul 4. Eliberați spațiul

Jurnale mari

Nu ștergeți cu rm un jurnal în care un program încă scrie: spațiul nu revine până nu reporniți programul. Goliți-l (înlocuiți CALE_FISIER cu calea găsită la pasul 3):

truncate -s 0 CALE_FISIER

Arhivele comprimate ale jurnalelor rotite, mai vechi de 7 zile:

find /var/log -type f -name "*.gz" -mtime +7 -delete

Docker

Vedeți cât ocupă imaginile, containerele și volumele, apoi ștergeți imaginile pe care nu le folosește niciun container și cache-ul de build. Ultimele două comenzi cer confirmare înainte să șteargă.

docker system df
docker image prune -a
docker builder prune

Jurnalele containerelor nu au limită de mărime dacă nu ați setat-o. Afișați cele mai mari 5 jurnale, apoi goliți-l pe cel ales (înlocuiți CALE_FISIER cu calea lui din listă):

du -h /var/lib/docker/containers/*/*-json.log | sort -h | tail -n 5
truncate -s 0 CALE_FISIER

Apoi limitați-le: Instalarea Docker și Docker Compose, secțiunea „Limitați jurnalele containerelor”.

Risc Nu rulați docker volume prune și nu adăugați --volumes la docker system prune. Volumele unui proiect oprit cu docker compose down sunt considerate nefolosite, iar datele lor (de exemplu baza de date) se pierd definitiv.

Copii și arhive uitate

Exporturile de baze de date, arhivele site-urilor și copiile făcute „pentru orice eventualitate” rămân des pe server. Copiați-le pe calculatorul dvs. sau pe alt server (Transferul fișierelor pe server (scp, rsync, SFTP)), verificați copia, apoi ștergeți-le de pe server:

rm CALE_FISIER

Fișiere șterse, dar încă deschise

Dacă după ștergere df -h arată aceeași ocupare, un program ține fișierele încă deschise. Le listează lsof +L1: coloana COMMAND arată programul, iar SIZE/OFF mărimea. Reporniți serviciul din care face parte programul (înlocuiți NUME_SERVICIU, de exemplu cu nginx):

lsof +L1
systemctl restart NUME_SERVICIU

Dacă lsof lipsește, instalați-l. Pe Ubuntu și Debian:

apt install -y lsof

Pe AlmaLinux și CentOS Stream:

dnf install -y lsof

Pasul 5. Reporniți serviciile și verificați

df -h /
systemctl --failed

df -h / trebuie să arate spațiu liber. systemctl --failed arată serviciile căzute, de exemplu mariadb, mysql, postgresql, nginx sau php8.3-fpm. Reporniți fiecare serviciu din listă (înlocuiți NUME_SERVICIU cu numele lui), apoi deschideți site-ul:

systemctl restart NUME_SERVICIU

Lăsați o rezervă de spațiu: pe pagina „Monitorizare”, bara din coloana „Disc” devine galbenă de la 80%.

Inode-urile sunt epuizate

df -i arată IUse% 100%, deși df -h mai are spațiu: pe disc sunt prea multe fișiere mici. Cauzele obișnuite sunt sesiunile PHP, cache-ul aplicației, coada de email și fișierele temporare. Găsiți folderele cu cele mai multe fișiere (numărul din stânga):

du --inodes -x --max-depth=3 / 2>/dev/null | sort -n | tail -n 20

Dacă folderul găsit conține sesiuni sau fișiere temporare, ștergeți-le pe cele vechi, de exemplu pe cele mai vechi de 7 zile (înlocuiți CALE_FOLDER cu calea folderului). Nu folosiți comanda în folderele cu datele site-ului (de exemplu fișierele încărcate de utilizatori) sau ale bazei de date.

find CALE_FOLDER -type f -mtime +7 -delete
  • Sesiunile PHP sunt în /var/lib/php/sessions (Ubuntu, Debian) sau /var/lib/php/session (AlmaLinux, CentOS Stream).

  • Cache-ul aplicației: folosiți comanda ei de golire a cache-ului, dacă are una.

  • Coada de email: dacă folosiți Postfix, comanda de mai jos arată pe ultimul rând câte mesaje așteaptă. Mii de mesaje pe care nu le-ați trimis indică un site compromis: Serverul a fost spart sau este atacat: ce faceți.

    postqueue -p | tail -n 1

Cum preveniți problema

  • Rotirea jurnalelor. logrotate rotește deja jurnalele din /var/log ale sistemului și ale pachetelor instalate din depozit. Pentru jurnalele aplicației dvs. din alt folder, creați fișierul /etc/logrotate.d/APLICATIE cu conținutul de mai jos:

    /var/www/APLICATIE/logs/*.log {
        weekly
        rotate 4
        compress
        missingok
        notifempty
        copytruncate
    }

    Apoi verificați-l (comanda doar simulează rotirea, fără să schimbe ceva):

    logrotate -d /etc/logrotate.d/APLICATIE
  • Limita jurnalului de sistem. Păstrați jurnalul la cel mult 200 MB:

    mkdir -p /etc/systemd/journald.conf.d
    printf '[Journal]\nSystemMaxUse=200M\n' > /etc/systemd/journald.conf.d/size.conf
    systemctl restart systemd-journald
  • Docker. Setați limita jurnalelor containerelor în /etc/docker/daemon.json și verificați periodic docker system df: Instalarea Docker și Docker Compose.

  • Copiile de rezervă în afara serverului. BLACKBOX nu face copii automate ale serverului, iar butonul „Backup” de pe cardul serverului nu este activ. Trimiteți copiile pe alt server și nu păstrați exporturi vechi pe același disc: Strategia de backup pentru serverul dvs..

  • Urmărirea discului. Cu serviciul „Monitoring 24/7” vedeți coloana „Disc” și graficul „Utilizare disc (%)” (Servicii suplimentare pentru server). Fără el, verificați periodic df -h.

Un disc mai mare

Butonul „Upgrade” de pe cardul serverului trece serverul pe un plan mai mare din aceeași familie. Plata se ia din sold, iar serverul repornește o dată: Upgrade server: trecerea la un plan mai mare.

Familie Discul la upgrade
Basic crește: 20 → 50 → 100 → 200 → 400 GB
Standard crește: 20 → 40 → 80 → 160 GB
High-Frequency crește: 100 → 200 → 400 GB
CPU rămâne 30 GB
High-Frequency Compute rămâne 50 GB
  • Pe CPU și High-Frequency Compute, upgrade-ul nu adaugă spațiu. Comandați un server nou dintr-o familie cu disc mai mare (Planurile VPS: cum alegeți), mutați datele, apoi ștergeți serverul vechi.
  • Eliberați puțin spațiu înainte de upgrade, ca serviciile să pornească normal după repornire și ca sistemul de fișiere să se poată extinde. La final verificați df -h /; dacă arată tot mărimea veche, scrieți-ne.
  • Pentru planurile „VPS hosting” și serverele dedicate, scrieți-ne: Cum contactați suportul BLACKBOX.

Întrebări frecvente

Am șters fișiere mari, dar df -h arată la fel. De ce? Un program ține fișierele încă deschise. Găsiți-l cu lsof +L1 și reporniți serviciul lui (pasul 4).

df -h arată spațiu liber, dar tot apare No space left on device. De ce? Verificați df -i: inode-urile pot fi epuizate. Uitați-vă și la celelalte rânduri din df -h: poate fi plină altă partiție, de exemplu /boot sau /tmp.

/var/lib/mysql ocupă mult, cu multe fișiere binlog.000…. Le pot șterge? Nu cu rm. Sunt jurnalele binare MySQL, pe care MySQL 8 le activează implicit și le păstrează 30 de zile. Dacă nu folosiți replicare, ștergeți-le pe cele vechi din MySQL:

mysql -e "PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;"

Ajută o repornire a serverului? Eliberează doar spațiul ținut de fișierele șterse, încă deschise. Restul rămâne ocupat, iar cu discul plin baza de date poate să nu pornească. Eliberați întâi spațiu, apoi reporniți dacă este nevoie: Repornirea, oprirea și pornirea serverului.

Nu mă pot conecta prin SSH. Ce fac? Panoul nu are consolă web. Urmați Nu mă pot conecta prin SSH; dacă nu reușiți, scrieți-ne cu adresa IP a serverului.

Pot cere asistentului AI să găsească ce ocupă discul? Da, dacă token-ul API al asistentului are permisiunea „Rulează orice comandă ca root pe serverele mele”. Citiți fiecare comandă înainte să o aprobați, mai ales pe cele care șterg: Rularea comenzilor pe server prin AI.

Poate echipa BLACKBOX să curețe discul în locul meu? Serverul îl administrați dvs., iar suportul vă ghidează. Dacă vreți ca echipa să facă lucrarea, cereți o ofertă separată pentru administrare: Servicii profesionale la cerere: administrare, DevOps, migrare.

N-ați găsit răspunsul?Scrieți-ne și echipa de suport vă răspunde. support@blackbox.md
Deschideți un tichet