Skip to content
VDS · Rešavanje problema

Ponestalo prostora na disku

Kako brzo da nađeš šta jede disk, bezbedno oslobodiš gigabajte i razumeš zamke: obrisane otvorene datoteke i iscrpljene inode.

Ažurirano 23. avgust 2026.

Pun disk lomi sve odjednom: baza prestaje da prima upise, sajt vraća greške, journalctl odbija da radi, a ponekad ni SSH ne pušta unutra, jer nema više mesta za upis u dnevnik sesije. Moraš da reaguješ brzo i po redu.

Provera

df -h
df -i

Prva komanda pokazuje prostor, druga inode. Puni inode daju istu grešku "No space left on device" čak i sa gigabajtima slobodnog prostora: to se dešava kada je direktorijum nakupio milione sitnih fajlova (PHP sesije, keš, redovi čekanja).

Zauzet prostor možeš da vidiš i u panelu na /hosting/vds/m/<id> — prsten na kartici "Overview". Puni se iz podataka koje prijavljuje qemu-guest-agent; ako je agent uklonjen, prsten ostaje prazan, a panel umesto toga prikazuje komandu za instalaciju.

Pronađi krivca

du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -15
du -xh --max-depth=1 /var 2>/dev/null | sort -h | tail -15
ncdu -x /                     # apt install ncdu, interactive
find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null

Oznaka -x zadržava pretragu unutar jednog fajl sistema i sprečava je da zaluta u /proc i montirane direktorijume.

Tipični krivci: logovi u /var/log, keš paketa u /var/cache, Docker slike i volumeni u /var/lib/docker, dumpovi baze, zaboravljeni arhivi u /root i /tmp, fajlovi starih verzija aplikacije.

Oslobodi prostor

journalctl --vacuum-size=200M
apt clean                                   # Debian, Ubuntu
dnf clean all                               # AlmaLinux, CentOS Stream
docker system prune -af --volumes           # careful: will remove unused volumes
find /tmp -type f -mtime +7 -delete

Da trajno ograničiš journal, izmeni /etc/systemd/journald.conf (SystemMaxUse=300M); detalje potraži u članku systemd dnevnici. Za fajlove aplikacije podesi logrotate: bez rotacije jedan app.log lako naraste na desetine gigabajta.

Zamka: obrisan ali još otvoren fajl

Obrisao si ogroman log, ali df pokazuje iste brojeve. Dok god proces drži fajl otvoren, prostor se ne vraća.

lsof +L1 | head -20

Ispravno rešenje je da restartuješ servis koji drži fajl (systemctl restart nginx), ili da skratiš fajl bez brisanja:

: > /var/log/nginx/access.log

Zamka: ponestalo inoda

df -i
find /var/www -xdev -type d -printf '%h\n' | sort | uniq -c | sort -rn | head

Potraži direktorijum sa stotinama hiljada fajlova i očisti ga u delovima da ne oboriš mašinu:

find /var/lib/php/sessions -type f -mtime +2 -delete

Ako uopšte nema prostora

Kada je disk 100% pun i sistem se jedva pokreće, prijavi se preko kartice "Console" u panelu, oslobodi bar sto megabajta (journalctl --vacuum-size=50M skoro uvek uspe) i nastavi sa rešavanjem problema normalno. U baš lošem slučaju pomoći će rescue disk: mašina se podiže u SystemRescue, tvoj disk se pojavljuje kao /dev/sda, montiraš ga i čistiš sa strane.

Da se ne ponovi

  • Upozorenje na pragu od 85% — vidi Upozorenja o padu sajta.
  • Rotiraj sve logove aplikacija, ne samo sistemske.
  • Dumpove baze i arhive odmah šalji van servera, umesto da ih držiš u /root.
  • Ako nema više šta da se čisti, a podaci nastavljaju da rastu, pređi na paket sa većim diskom: 40, 80, 120, 160, 200 i 250 GB. Samo nadogradnje: diskovi ne mogu da se smanjuju, a downgrade nije dostupan.

Ne briši fajlove iz /var/lib i /usr nasumično: tu žive podaci baze i sistemski paketi. Prvo utvrdi čemu direktorijum pripada, pa ga tek onda čisti.