Skip to content
VDS · Kopie zapasowe i dysk

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

CoJak sprawdzićCo zrobić
Logi kontenerówdu -sh /var/lib/docker/containers/*/*-json.logOgranicz rozmiar, zobacz logi
Obrazy i cache budowaniadocker system dfdocker image prune, docker builder prune
Dziennik systemowyjournalctl --disk-usagejournalctl --vacuum-size=200M
Stare kernele w /bootdf -h /bootapt autoremove --purge
Cache pakietówdu -sh /var/cache/aptapt clean
Kopie zostawione na miejscudu -sh /backupPrzenieś je poza serwer, zobacz inna lokalizacja
Pliki wgrywane przez użytkownikówdu -sh /var/www/uploadsMiejsce 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 rm na 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

  1. Zwolnij kilka gigabajtów szybkimi środkami: journalctl --vacuum-size=100M, apt clean, docker builder prune -f.
  2. Znajdź prawdziwą przyczynę komendami powyżej — inaczej wszystko powtórzy się za tydzień.
  3. 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ć.