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/liba/usrnaslepo: práve tam žijú dáta databáz a systémové balíky. Najprv zisti, čomu adresár patrí, a až potom ho uprac.