Skip to content
VDS · Riešenie problémov

Minulo sa mi miesto na disku

Ako rýchlo nájsť, čo zožiera disk, bezpečne uvoľniť gigabajty a pochopiť úskalia: zmazané otvorené súbory a vyčerpané inody.

Aktualizované 23. augusta 2026

Plný disk rozbije všetko naraz: databáza prestane prijímať zápisy, stránka vracia chyby, journalctl odmietne pracovať a niekedy ťa nepustí ani SSH, pretože do logu relácie už nie je čo zapísať. Musíš konať rýchlo a v správnom poradí.

Kontrola

df -h
df -i

Prvý príkaz ukazuje miesto, druhý inody. Plné inody spôsobujú rovnakú chybu "No space left on device" aj s voľnými gigabajtmi: stane sa to, keď sa v adresári nahromadili milióny drobných súborov (PHP sessions, cache, fronty).

Využité miesto vidíš aj v paneli na /hosting/vds/m/<id> — kruh na karte "Overview". Napĺňa sa z údajov, ktoré hlási qemu-guest-agent; ak bol agent odstránený, kruh zostane prázdny a panel namiesto toho zobrazí inštalačný príkaz.

Nájdi vinníka

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

Prepínač -x udrží hľadanie v rámci jedného súborového systému a zabráni mu blúdiť do /proc a pripojených adresárov.

Typickí vinníci: logy v /var/log, cache balíkov v /var/cache, Docker image a volumes v /var/lib/docker, dumpy databáz, zabudnuté archívy v /root a /tmp, súbory zo starých verzií aplikácií.

Uvoľni miesto

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

Aby si journal natrvalo obmedzil, uprav /etc/systemd/journald.conf (SystemMaxUse=300M); podrobnosti nájdeš v článku systemd journals. Pre súbory aplikácií nastav logrotate: bez rotácie môže jeden app.log pokojne narásť na desiatky gigabajtov.

Pasca: vymazaný, ale stále otvorený súbor

Vymazal si obrovský log, ale df ukazuje tie isté čísla. Kým proces drží súbor otvorený, miesto sa neuvoľní.

lsof +L1 | head -20

Správne riešenie je reštartovať službu, ktorá súbor drží (systemctl restart nginx), alebo súbor skrátiť bez vymazania:

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

Pasca: minú sa inody

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

Hľadaj adresár so stovkami tisíc súborov a uprac ho po častiach, aby si nezložil stroj:

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

Ak nie je miesto vôbec

Keď je disk na 100 % a systém sa sotva hýbe, prihlás sa cez kartu "Console" v paneli, uvoľni aspoň sto megabajtov (journalctl --vacuum-size=50M takmer vždy zaberie) a pokračuj v riešení normálne. V naozaj zlom prípade pomôže rescue disk: stroj nabootuje do SystemRescue, tvoj disk sa zobrazí ako /dev/sda, pripojíš ho a upraceš zvonku.

Aby sa to už nezopakovalo

  • Upozornenie pri prahu 85 % — pozri Site downtime alerts.
  • Rotuj všetky logy aplikácií, nielen systémové.
  • Dumpy databáz a archívy posielaj zo servera hneď, nenechávaj ich v /root.
  • Ak už niet čo upratať a dát stále pribúda, prejdi na tier s väčším diskom: 40, 80, 120, 160, 200 a 250 GB. Len upgrady: disky sa nedajú zmenšovať a downgrady nie sú dostupné.

Nevymazávaj súbory z /var/lib a /usr naslepo: práve tam žijú dáta databáz a systémové balíky. Najprv zisti, čomu adresár patrí, a až potom ho uprac.