Jak skutecznie rozwiązać błąd „Brak miejsca na urządzeniu” w systemie Linux



Komunikat „Brak miejsca na urządzeniu” może być wręcz frustrujący, zwłaszcza gdy dysk nadal wygląda na dość pusty. Linux potrafi być pod tym względem dziwny – czasami nie chodzi o wystarczającą ilość wolnego miejsca, ale o coś innego, co dzieje się pod maską. Możliwe przyczyny to procesy, które wciąż utrzymują usunięte pliki, wyczerpanie inodów, a nawet awarie sprzętu. Zrozumienie, który z nich powoduje problemy, oszczędza mnóstwo główkowania. Oto jak rozwiązać problem i naprawić go, nie tracąc przy tym rozumu.

Jak naprawić błąd „Brak miejsca na urządzeniu” w systemie Linux

Upewnij się, że jest tam faktycznie miejsce – sprawdź z du i df

To jest krok pierwszy, ponieważ Linux czasami pokazuje brak miejsca, mimo że dysk nie jest pełny. Uruchom te polecenia w terminalu:

sudo du -sh /

Daje szybkie podsumowanie całkowitego wykorzystania dysku przez katalog główny. Spodziewaj się długiego wyniku, ale skup się na sumie na górze. Następnie sprawdź wolne miejsce na swoich montowaniach za pomocą:

sudo df -h

Pokazuje, ile miejsca jest dostępne w zamontowanych systemach plików. Porównanie tych wyników pomoże Ci potwierdzić, czy faktycznie brakuje miejsca, czy też przyczyną błędu jest coś innego. Czasami proces usuwa duży plik, ale nie zwalnia miejsca, ponieważ jest on nadal otwarty – dlatego Linux pokazuje zapełnienie przestrzeni, nawet jeśli jest wolne miejsce.

Poprawka 1: Zakończ procesy trzymające się usuniętych plików

To częsty przypadek. Czasami proces blokuje usunięty plik, a Linux nie może zwolnić miejsca, ponieważ technicznie rzecz biorąc nadal jest ono „w użyciu”.Zrób to:

sudo lsof / | grep deleted

Spowoduje to wyświetlenie listy procesów, które nadal mają otwarte usunięte pliki. Nie wiem, dlaczego to działa, ale na niektórych komputerach to polecenie pomaga zidentyfikować zainfekowane pliki. Aby zwolnić miejsce, uruchom proces ponownie:

sudo systemctl restart your-service-name

Jeśli nie znasz dokładnej usługi lub jest ich więcej, możesz przeładować wszystkie zależności systemowe za pomocą:

sudo systemctl daemon-reload

Uwaga: Po ponownym uruchomieniu lub przeładowaniu, miejsce na pliki zajmowane przez te procesy powinno zostać zwolnione. Zazwyczaj rozwiązuje to problem dość szybko. Jednak w niektórych konfiguracjach może być konieczne ponowne uruchomienie, aby zobaczyć pełny efekt, zwłaszcza jeśli dotyczy to wielu usług.

Rozwiązanie 2: Sprawdź, czy zabrakło Ci inodów

To mniej oczywista przyczyna. Inody to takie małe kontenery metadanych dla każdego pliku. Jeśli masz mnóstwo małych plików, możesz osiągnąć limit inodów, zanim dysk się zapełni. Aby to sprawdzić, uruchom:

sudo df -i

To polecenie pokazuje łączną liczbę inodów, wykorzystanych i wolnych. Jeśli w systemie nie ma wolnych inodów, to właśnie one są przyczyną problemu. Usunięcie niepotrzebnych małych plików lub wyczyszczenie pamięci podręcznej może pomóc w zwolnieniu inodów. W przeciwieństwie do miejsca na dysku, nie można wygenerować więcej inodów – są one ustawiane podczas formatowania dysku.

Rozwiązanie 3: Zaznacz uszkodzone sektory na dysku

Zużycie sprzętu może prowadzić do powstawania uszkodzonych sektorów – obszarów dysku, które ulegają fizycznemu uszkodzeniu. Mogą one nadal wyświetlać się jako wolne miejsce, ale w rzeczywistości nie można na nich zapisać ani odczytać danych. Aby temu zaradzić, należy uruchomić system z aktywnego środowiska i przeprowadzić sprawdzenie systemu plików:

sudo fsck -vcck /dev/sda

Zastąp /dev/sdarzeczywistą ścieżką do urządzenia dla swojego dysku. To polecenie skanuje dysk w poszukiwaniu uszkodzonych sektorów i oznacza je jako bezużyteczne, pomagając zapobiegać błędom podczas zapisu danych. Pamiętaj, że nie zwolni to magicznie miejsca, a jedynie zabezpieczy system plików przed uszkodzeniem. Jeśli uszkodzone sektory będą się nadal pojawiać, konieczne może być oczyszczenie dysku i ewentualna wymiana sprzętu.

Inne wskazówki warte wypróbowania

  • Wyczyść logi lub foldery pamięci podręcznej, które mogły się rozrosnąć. Weźmy na przykład /var/log lub /tmp.
  • Przeanalizuj ponownie swoją procedurę oczyszczania dysku — czasami stare jądra lub migawki urządzeń pochłaniają gigabajty.
  • Jeśli używasz określonych wolumenów, sprawdź ich limity — być może limit jest ustawiony niżej, niż oczekiwano.

Znalezienie błędu powodującego błąd „Brak miejsca” może wymagać prób i błędów. Najczęściej jednak podejrzane są procesy utrzymujące usunięte pliki lub wyczerpanie inodów. Należy jednak pamiętać, że problemy ze sprzętem to zupełnie inna bajka i mogą wymagać diagnostyki lub wymiany sprzętu.

Streszczenie

  • Uruchom sudo du -sh / i sudo df -h, aby potwierdzić problemy z przestrzenią.
  • Użyj sudo lsof / | grep removed, aby zidentyfikować procesy blokujące usunięte pliki.
  • Uruchom ponownie problematyczne usługi lub procesy, aby zwolnić miejsce.
  • Sprawdź dostępność inodów poleceniem sudo df -i. W razie potrzeby usuń małe pliki.
  • Jeśli podejrzewasz obecność uszkodzonych sektorów, uruchom sprawdzanie systemu plików poleceniem sudo fsck -vcck /dev/sda.

Podsumowanie

Najczęściej problem ten wynika z zawieszonych procesów lub limitów inodów. Po ich usunięciu przestrzeń dyskowa powinna znów działać normalnie. Czasami wymaga to trochę wysiłku i cierpliwości, ale te kroki obejmują większość problemów. Mam nadzieję, że to skróci komuś kilka godzin frustracji.



Czy ten artykuł był pomocny?