PRZYGOTOWANIE
Czego potrzebujesz
- System Linux z zainstalowanym GNU coreutils (df, du, sort)
- Dostęp do odczytu badanych katalogów (własny katalog domowy bez sudo)
- Opcjonalnie sudo do diagnostyki katalogów systemowych (/var, /tmp)
KROK 01
Zacznij od systemów plików
Gdy system zgłasza brak miejsca, pierwszym krokiem jest sprawdzenie, który system plików jest pełny. Polecenie df -hT wyświetla wszystkie zamontowane systemy plików wraz z rozmiarem, użyciem i dostępną przestrzenią w czytelnym formacie. Litera T dodaje kolumnę z typem systemu plików (ext4, xfs, btrfs itd.), co pomaga zrozumieć, z jakim rodzajem partycji masz do czynienia.
Drugie polecenie, df -i, pokazuje wykorzystanie i-węzłów (inode). To kluczowa informacja, ponieważ system plików może mieć wolne gigabajty, ale jeśli pula inode się wyczerpie, nie utworzysz żadnego nowego pliku. Wiele osób pomija ten krok i traci czas na szukanie dużych plików, podczas gdy problem leży w zbyt dużej liczbie małych plików.
df -hT
df -iPierwsze polecenie pokazuje zajętość przestrzeni na wszystkich zamontowanych systemach plików. Drugie pokazuje wykorzystanie i-węzłów – kolumna IUse% mówi, jaki procent puli inode jest zajęty. Jeśli któryś system plików ma 100% IUse%, to właśnie tam leży przyczyna problemu.
KROK 02
Sprawdź katalog użytkownika
Sprawdź katalog, który rzeczywiście znajduje się na pełnym systemie plików. Jeśli problem dotyczy miejsca użytkownika, dobrym początkiem jest jego katalog domowy. GNU du z opcją -d1 wypisuje podsumowania dla podkatalogów pierwszego poziomu, ale w celu obliczenia tych sum odczytuje również ich głębszą zawartość. Opcja -x nie przechodzi na inne systemy plików napotkane podczas tego odczytu.
Opcja -h formatuje rozmiary w czytelnych jednostkach (K, M, G), a sort -h sortuje wyniki według rozmiaru, od najmniejszego do największego. Dzięki temu od razu widzisz, które podkatalogi zajmują najwięcej miejsca. Jeśli du nie ma uprawnień do odczytu niektórych plików, zgłosi to komunikatem, ale nie przerywa działania – wyniki będą niepełne, ale nadal użyteczne.
du -xhd1 "$HOME" | sort -hWynik zawiera podsumowania podkatalogów oraz całego katalogu domowego. Wiersz sumy nie jest kolejnym podkatalogiem. Po sortowaniu największe wartości znajdują się na końcu; wybierz konkretny duży podkatalog do dalszej analizy. Nie zakładaj, że katalog domowy jest przyczyną, jeżeli df wskazuje pełny wolumin montowany gdzie indziej.
KROK 03
Zbadaj miejsce używane przez aplikacje
Jeśli katalog domowy nie jest przyczyną, sprawdź katalog /var, który często przechowuje logi, pamięć podręczną pakietów i dane tymczasowe. Polecenie sudo du -xhd1 /var wymaga uprawnień administratora, ponieważ niektóre pliki w /var są czytelne tylko dla roota. Opcja -x zapobiega przejściu na inne zamontowane systemy plików – jeśli /var jest osobną partycją, wyniki będą dotyczyć wyłącznie jej.
Jeśli /var ma własny wpis w df, osobne sprawdzenie du w katalogu głównym (/var) jest nadal przydatne, ale pamiętaj, że df i du mogą pokazywać różne wartości. Nie ignoruj ostrzeżeń o braku uprawnień – jeśli du pominie katalog, wyniki będą zaniżone. W razie potrzeby powtórz analizę z sudo.
sudo du -xhd1 /var | sort -hPo podaniu hasła sudo polecenie wyświetli posortowaną listę podkatalogów /var według rozmiaru. Typowymi dużymi katalogami są /var/log, /var/cache i /var/lib.
KROK 04
Dlaczego df i du pokazują różne liczby
Df opisuje wykorzystanie systemu plików, a du sumuje miejsce przydzielone widocznym plikom i katalogom. Wyniki mogą różnić się z powodu metadanych, zarezerwowanej przestrzeni, pominiętych katalogów, dowiązań albo plików usuniętych z katalogu, które proces wciąż ma otwarte. Przy plikach rzadkich rozmiar logiczny może być dużo większy niż liczba przydzielonych bloków. Najpierw upewnij się, że porównujesz ten sam wolumin.
Jedną z przyczyn dużej rozbieżności bywają usunięte, lecz otwarte pliki. Polecenie lsof +L1 wyszukuje otwarte pliki o liczbie dowiązań mniejszej niż jeden. Lsof nie jest częścią coreutils i może wymagać osobnej instalacji. Samo znalezienie wpisu nie określa jeszcze przydzielonej przestrzeni ani tego, czy wolno zatrzymać proces. Ustal właściciela aplikacji i sposób ponownego otwarcia jej plików.
sudo lsof +L1Wynik lsof wskazuje procesy i otwarte pliki bez dowiązania katalogowego. Nazwy kolumn różnią się między wersjami; SIZE/OFF może oznaczać rozmiar lub pozycję, więc nie sumuj tej kolumny jako pewnej wartości bloków do odzyskania. Zwolnienie ostatniego uchwytu do pliku pozwala odzyskać jego przestrzeń, ale sposób wykonania zależy od aplikacji.
KROK 05
Brak inode mimo wolnych gigabajtów
Gdy df -i wskazuje brak wolnych i-węzłów, nowy plik może nie powstać mimo dostępnego miejsca na treść. Szczegóły zarządzania inode zależą od systemu plików: nie każdy ma stałą pulę ustaloną podczas formatowania. Wysoka liczba niewielkich plików jest częstym tropem. Dowiązania twarde do jednego pliku współdzielą inode, więc liczba nazw nie zawsze równa się liczbie używanych i-węzłów.
Aby znaleźć katalogi z bardzo dużą liczbą plików, możesz użyć polecenia find, ale ostrożnie – przeszukiwanie milionów plików obciąża system. Skuteczniejszym podejściem jest sprawdzenie, który proces lub aplikacja tworzy wiele małych plików. Typowymi sprawcami są pamięci podręczne przeglądarek, logi systemowe bez rotacji, katalogi tymczasowe aplikacji lub pakiety pocztowe.
KROK 06
Co zrobić po znalezieniu przyczyny
Po zidentyfikowaniu źródła problemu nie usuwaj plików na oślep. Jeśli winne są logi, skonfiguruj rotację za pomocą logrotate – dokumentacja narzędzia opisuje, jak ustawić maksymalny rozmiar i czas przechowywania. Jeśli to pamięć podręczna menedżera pakietów, użyj dedykowanego polecenia do czyszczenia (na przykład apt clean). Nie kasuj ręcznie plików z /var/lib ani z katalogów baz danych bez wykonania kopii zapasowej.
Zapisz pomiar przed działaniem i powtórz go po kontrolowanej zmianie. Gdy problem wraca, ustal tempo przyrostu danych i politykę przechowywania w aplikacji. Powiększenie woluminu lub zmiana systemu plików wymaga osobnego planu, kopii oraz znajomości środowiska. Tego poradnika nie traktuj jako instrukcji formatowania: diagnoza braku miejsca nie uzasadnia kasowania całej partycji.
Pytania i odpowiedzi
Czy brak inode oznacza konieczność formatowania?
Nie. Najpierw ustal system plików oraz aplikację tworzącą wiele obiektów. Kontrolowane usunięcie zbędnych plików zgodnie z zasadami tej aplikacji może uwolnić inode. Niektóre systemy przydzielają je dynamicznie; rozszerzanie innych może powiększać dostępną pulę. Wybór działania zależy od typu i układu woluminu. Nie rozpoczynaj od formatowania.
Dlaczego po usunięciu plików nadal brakuje miejsca?
Możliwą przyczyną jest otwarty uchwyt procesu do usuniętego pliku. Sprawdź to za pomocą lsof +L1, zanim wybierzesz sposób działania. Znaczenie mogą też mieć migawki lub zasady systemu plików. Nie restartuj przypadkowych usług: ustal, której aplikacji dotyczy problem i jak bezpiecznie zamknąć lub ponownie otworzyć jej pliki.
Czy du zmienia zawartość badanych plików?
Du nie zapisuje ich treści ani ich nie usuwa. Odczytuje strukturę katalogów i informacje o zajętej przestrzeni. Skanowanie dużej liczby plików może jednak zużyć czas i zasoby dysku. Rozpocznij od ograniczonego zakresu, a komunikaty o braku dostępu traktuj jako informację, że pomiar nie obejmuje wszystkich danych.