Miejsce na dysku: gdzie znika
Jak znaleźć, co zapełniło dysk, dlaczego usunięty, ale otwarty plik jest niebezpieczny, co można bezpiecznie wyczyścić i dlaczego wskaźnik zajętości w panelu może pokazywać nieprawdę.
Zaktualizowano 23 sierpnia 2026
Skończenie się miejsca to awaria, która wygląda jak wszystko naraz: baza danych nie zapisuje, strona zwraca błąd, kontenery restartują się. Dysk VPS ma od 40 GB w najniższym planie do 250 GB w najwyższym, a niemal zawsze zapełnia się tymi samymi rzeczami.
Pierwsze komendy
df -h
df -i
sudo du -x -h -d1 / | sort -h | tail -15
Nie pomijaj df -i: możesz mieć miejsce, a skończyć się na inodach — wtedy dostajesz „disk full” przy wolnych gigabajtach. Sprawcą zwykle jest miliony małych plików cache.
Potem zejdź głębiej do największego katalogu:
sudo du -x -h -d1 /var | sort -h | tail
sudo du -x -h -d1 /var/lib | sort -h | tail
Flaga -x trzyma liczenie w obrębie jednego systemu plików i nie zapuszcza się do zamontowanych katalogów.
Typowi sprawcy
| Co | Jak sprawdzić | Co zrobić |
|---|---|---|
| Logi kontenerów | du -sh /var/lib/docker/containers/*/*-json.log | Ogranicz rozmiar, zobacz logi |
| Obrazy i cache budowania | docker system df | docker image prune, docker builder prune |
| Dziennik systemowy | journalctl --disk-usage | journalctl --vacuum-size=200M |
Stare kernele w /boot | df -h /boot | apt autoremove --purge |
| Cache pakietów | du -sh /var/cache/apt | apt clean |
| Kopie zostawione na miejscu | du -sh /backup | Przenieś je poza serwer, zobacz inna lokalizacja |
| Pliki wgrywane przez użytkowników | du -sh /var/www/uploads | Miejsce poza serwerem albo większy dysk |
Usunięty plik, który nadal zajmuje miejsce
Klasyczna zagadka: du pokazuje 5 GB, df pokazuje 30 GB zajęte. To znaczy, że plik został usunięty, ale proces nadal trzyma go otwartego i miejsce nie zwolni się do restartu.
sudo lsof +L1 | head -20
Wynik pokaże procesy i rozmiary. Rozwiązaniem jest restart sprawcy:
sudo systemctl restart <service>
docker compose restart <service>
Nigdy nie zwalniaj miejsca przez
rmna pliku logu, który jest używany. Właściwy sposób to obcięcie go:sudo truncate -s 0 /var/log/big.log. Usunięcie pliku zostawi zajęte miejsce, a dodatkowo stracisz log.
Pierścień użycia w panelu
W zakładce „Przegląd” jest pierścień użycia dysku. Jest liczony przez agenta gościa qemu-guest-agent. Jeśli agent zostanie usunięty lub nie działa, dane się nie zaktualizują — panel pokaże komendę instalacji. Aby sprawdzić wewnątrz maszyny:
systemctl status qemu-guest-agent
Odczyty agenta i df -h powinny się zgadzać. Rozbieżność najczęściej oznacza, że część miejsca zajmuje osobno zamontowana partycja — zobacz partycje i systemy plików.
Zapobieganie
Ustaw zadanie cykliczne z czyszczeniem i alertem:
#!/bin/bash
USED=$(df --output=pcent / | tail -1 | tr -dc '0-9')
if [ "$USED" -gt 85 ]; then
journalctl --vacuum-size=200M
apt clean
docker image prune -f
echo "Disk is ${USED}% full" | mail -s "VDS: low disk space" you@example.com
fi
Próg 85% daje ci zapas na reakcję. Nie możesz czekać na 100%: gdy dysk jest pełny, niektóre usługi nie będą w stanie nawet zapisać logu o tym, co się stało.
Jeśli nie ma już w ogóle miejsca
- Zwolnij kilka gigabajtów szybkimi środkami:
journalctl --vacuum-size=100M,apt clean,docker builder prune -f. - Znajdź prawdziwą przyczynę komendami powyżej — inaczej wszystko powtórzy się za tydzień.
- Jeśli dane naprawdę urosły, musisz powiększyć dysk, przechodząc na wyższy plan. Zejście na niższy nie jest dostępne: dysku nie da się zmniejszyć.