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/libi/usrnasumično: tu žive podaci baze i sistemski paketi. Prvo utvrdi čemu direktorijum pripada, pa ga tek onda čisti.