3 najlepsze sposoby naprawienia błędu „Brak miejsca na urządzeniu” w systemie Linux


Błędy bez wyraźnej przyczyny to najbardziej irytujące problemy, z którymi trzeba się uporać. I chociaż Linux jest zwykle specyficzny w swoich komunikatach o błędach, jest to jeden z niewielu przypadków, w których rezygnuje.

Wyświetlenie komunikatu „Brak wolnego miejsca na urządzeniu” niewiele wyjaśnia, zwłaszcza jeśli dysk nie jest zapełniony. Dlaczego pojawia się ten komunikat o błędzie? Dlaczego nie możesz utworzyć nowych plików, mimo że masz wystarczającą ilość miejsca na dysku? A co najważniejsze, jak to naprawić?

Przekonajmy się.

Czy na Twoim dysku twardym rzeczywiście jest wystarczająco dużo miejsca?

Zanim zaczniesz szukać rozwiązania, najpierw upewnij się, że wystąpił problem. W końcu, jeśli w systemie faktycznie zabrakło miejsca na dysku, nie ma powodu do paniki. Możesz po prostu usunąć niepotrzebne dane, aby zwolnić więcej miejsca.

Istnieją dwa polecenia systemu Linux umożliwiające uzyskanie informacji o miejscu na dysku – du i df. Polecenie du szacuje wykorzystanie miejsca na dysku, natomiast polecenie df analizuje ilość wolnego miejsca na dysku. Użycie ich w połączeniu z sudo daje dokładny raport o ilości faktycznie dostępnego miejsca na dysku.

  1. Zacznijmy od polecenia du. Jego dane wyjściowe mogą być dość długie i kłopotliwe, dlatego użyjemy flag -s i -h. -s podsumowuje wyniki, natomiast -h zapewnia czytelność dla człowieka. Zatem wprowadź polecenie sudo du -sh /, gdzie /wskazuje katalog bazowy.
    1. Nie przejmuj się wszystkimi wiadomościami o odmowie uprawnień – w ten sposób przegląda wszystkie podkatalogi systemu. W zależności od rozmiaru dysku może być konieczne pozostawienie go uruchomionego na jakiś czas, ponieważ rekursywnie przegląda wszystko.
      1. Kiedy du zakończy skanowanie, wyświetli prostą listę katalogów wraz z ich rozmiarami. Na przykład jest to wynik polecenia du zastosowanego do zwykłego katalogu.
      2. Teraz użyjemy df, aby sprawdzić, ile wolnego miejsca jest dostępne. Polecenie df jest znacznie prostsze w użyciu, ponieważ pokazuje tylko zamontowane systemy plików i statystyki ich użycia. Jeszcze raz użyjemy opcji -h, aby wynik był czytelny dla człowieka.

        sudo df -h .

        Zamysł jest taki, aby zliczyć wyniki poleceń du i df. Wszelkie rozbieżności wskazują, że miejsce na dysku nie jest swobodnie dostępne, mimo że nie jest wykorzystywane przez żadne pliki ani foldery.

        Dlaczego Linux wyświetla komunikat „Brak wolnego miejsca na urządzeniu”?

        Jeśli pomimo wystarczającej ilości wolnego miejsca na dysku widzisz komunikat o błędzie „Brak miejsca na urządzeniu”, nie jest to wina sprzętu. Znalezienie dokładnej przyczyny błędu może zająć trochę czasu.

        • Ostatnio usunięty plik: najczęstszą przyczyną tego błędu jest niedawno usunięty plik. Często plik jest usuwany, gdy proces nadal go używa, zachowując zarezerwowane miejsce, nawet jeśli pliku już nie ma.
        • Za mało i-węzłów: Inną częstą przyczyną jest brak wystarczającej liczby i-węzły. I-węzły to strony indeksowe systemu plików Unix, przechowujące metadane każdego pliku w pamięci. Jednak i-węzły nie są nieograniczone, a wyczerpanie się i-węzłów przed miejscem w pamięci może spowodować błąd „Brak wolnego miejsca na urządzeniu”.
        • Awaria dysku twardego: Istnieje oczywiście możliwość, że dysk twardy po prostu ulegnie awarii i większość pozornie wolnego miejsca zajmują uszkodzone sektory. Ponieważ system nie zapisuje żadnych plików w tych lokalizacjach, zgłasza błąd.
        • Poprawka 1: Uruchom ponownie procesy przy użyciu usuniętych plików

          Najbardziej prawdopodobną przyczyną błędu „Brak miejsca na urządzeniu” jest proces nadal korzystający z usuniętego pliku. Na szczęście naprawienie tego błędu jest łatwe. Wystarczy ponownie uruchomić proces, aby zwolnić zarezerwowane miejsce.

          1. Aby znaleźć problematyczny proces, musisz użyć poleceń lsof i grep. Polecenie lsof wyświetli listę wszystkich otwartych plików używanych przez uruchomione procesy, a grep może zawęzić wybór do tych, które zostaną usunięte. Zatem wpisz sudo lsof / | grep usuniętogdzie / jest katalogiem bazowym, a | potok do łączenia wyjścia lsof z grep.
            1. Teraz możesz ponownie uruchomić proces, którego dotyczy problem, za pomocą polecenia sudo systemctl restart nazwa_usługi, gdzie nazwa usługi jest nazwą usługi, która pojawiła się w wyszukiwaniu.
            2. .
              1. Jeśli istnieje wiele takich procesów lub po prostu nie chcesz zawracać sobie głowy wyszukiwaniem konkretnych usług, możesz po prostu zresetować je wszystkie za pomocą polecenia sudo systemctl daemon-reload. Spowoduje to ponowne wygenerowanie wszystkich zależności, biorąc pod uwagę wszelkie zmiany w systemie plików.
              2. Po tym czasie miejsce zajmowane przez proces powinno być ponownie dostępne, umożliwiając zapisywanie plików bez występowania błędów.

                Poprawka 2: Sprawdź i-węzły

                Chociaż każdy dysk ma dużą liczbę i-węzłów, jest on skończony. A jeśli Twój system jest zaśmiecony niesamowitą liczbą plików, możliwe jest osiągnięcie tego limitu przed wyczerpaniem pojemności dysku. Dlatego lepiej mieć duże pliki niż zbyt wiele małych.

                Możesz łatwo sprawdzić dostępność i-węzłów, używając flagi -i z poleceniem df. W ten sposób:

                sudo df -i

                To wyraźnie pokaże całkowitą liczbę i-węzłów obecnych w systemie plików, wraz z ilością aktualnie używaną. Jeśli w systemie nie ma już wolnych i-węzłów, jest to przyczyną błędu „Brak wolnego miejsca na urządzeniu”.

                Ponieważ i-węzły są tworzone dopiero podczas pierwszego formatowania dysku, nie ma możliwości wygenerowania większej liczby i-węzłów. Wszystko, co możesz zrobić, to usunąć niepotrzebne pliki, aby zwolnić i-węzły dla przyszłych plików.

                Poprawka 3: Zaznacz uszkodzone bloki

                Uszkodzenie danych jest nieuniknionym losem każdego dysku twardego. Chociaż nowy dysk nie będzie powodował tego problemu, starsze dyski twarde stopniowo zaczną „uszkodzić”.

                Oznacza to, że części dysku twardego stają się bezużyteczne, mimo że system plików nadal uważa je za sprawne. Te uszkodzone bloki fałszywie zawyżają pozorną ilość wolnego miejsca na dysku, podczas gdy w rzeczywistości nie można na nich zapisywać żadnych plików. Prowadzi to do błędu „Brak wolnego miejsca na urządzeniu”, ponieważ system operacyjny próbuje zapisać jakiekolwiek dane w tych lokalizacjach, ale kończy się to niepowodzeniem.

                Nie ma rzeczywistego sposobu na rozwiązanie tego problemu, ponieważ uszkodzone sektory są wynikiem fizycznego zużycia dysku twardego. Jedyne, co możesz zrobić, to zaznaczyć uszkodzone sektory, aby system plików nie odwoływał się już do nich..

                Wymaga to rozruchu z Płyta CD na żywo, ponieważ nie można przeprowadzić sprawdzania systemu plików na działającym dysku. Gdy to zrobisz, po prostu użyj następującego polecenia:

                sudo fsck -vcck /dev/sda

                To zastępuje /dev/sda ścieżką dysku, który chcesz naprawić. Spowoduje to automatyczne wykrycie wszystkich uszkodzonych bloków na dysku i oznaczenie ich jako bezużyteczne. Nie zapewni to jednak dodatkowej pojemności, więc przygotuj się na wyczyszczenie niektórych niepotrzebnych plików, aby zwolnić miejsce na dysku.

                Jaki jest najlepszy sposób naprawienia błędu „Brak wolnego miejsca na urządzeniu”?

                Zwykłą przyczyną błędu „Brak wolnego miejsca na urządzeniu” w systemie Ubuntu lub dowolnej innej dystrybucji Linuksa jest usunięty plik, który jest nadal używany przez działający proces. Rezerwuje to miejsce zajmowane przez plik, uniemożliwiając innym operacjom zapisanie danych w tym miejscu.

                Naprawienie tego problemu jest również najłatwiejsze, ponieważ wystarczy ponownie uruchomić dany proces. Jednak inne przyczyny błędu nie są łatwe do rozwiązania.

                Bez względu na to, czy na Twoim dysku występują uszkodzone bloki danych, czy też zabrakło mu i-węzłów, nie ma bezpośredniego sposobu rozwiązania tych problemów. Musisz usunąć istniejące pliki, aby zrobić miejsce na zapisanie nowych danych.

                .

                Powiązane posty:


                30.08.2022