„Brak miejsca na urządzeniu”, df pokazuje rozbieżność

15

Kilka godzin temu moja partycja root zapełniła się, przeniosłem z niej pliki i raporty df:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /

Tak więc powinno być 9 GB za darmo, ale skorzystaj z raportów 0, a użycie jest nadal na 100%.

Testowałem jako root, np

# echo test >a ; cat a
test

działa zgodnie z oczekiwaniami; jednak jako zwykły użytkownik nadal pojawia się błąd:

$ echo test >a ; cat a
bash: echo: write error: No space left on device

Główny katalog domowy, w którym przeprowadziłem pozytywny test, a mój katalog domowy znajdują się na tej samej partycji. Wpis fstab to:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1
znak
źródło

Odpowiedzi:

34

Większość systemów archiwizacyjnych rezerwuje określony procent dla roota, więc nadal możesz zalogować się jako root i rozwiązać problemy z miejscem na dysku. Zwykle jest to 5%. 9 GB to około 5% z 183 GB, więc miałoby to sens. Możesz sprawdzić, ile jest zarezerwowane za pomocą tune2fs:

# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count:     936488
Reserved GDT blocks:      1019
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Możesz to zmodyfikować za pomocą

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)

Na nowoczesnych dużych dyskach 5% jest prawdopodobnie nieco nadmierne i prawdopodobnie chcesz je obniżyć. Nie chcesz ustawić go na zero.

David Pashley
źródło
1
Nie mogę uwierzyć, że o tym nie wiedziałem. Lepiej nie mówię, jak długo używam Linuksa ...
zaznacz
@ nfm Hej, od lat robię podstawową administrację Linuksem na domowych komputerach i nigdy o tym nie słyszałem. +1 za wspaniałe informacje :-)
Topher Fangio
5

im with bob, spróbuj df -i, jeśli masz na przykład kilka źle wyprowadzanych crontabs, twój katalog / var / spool / clientmqueue / może zostać zapełniony

CDATA
źródło
3

Spójrz także na INODES. W instalacji „waniliowej”, jeśli masz wiele małych plików, mogą one zużywać i-węzły, ale nie miejsce. Zobaczysz, że masz wolne miejsce, ale ponieważ twoje i-węzły są pełne, nie będziesz mógł z niego korzystać.

Bob Rivers
źródło
3
Większość współczesnych jednorożców ma bardzo dużą liczbę i-węzłów nawet na małych systemach plików. Czasami jest to problem, ale biorąc pod uwagę, że użytkownik jest w stanie utworzyć plik c, jest mało prawdopodobne, aby był to problem z węzłem. (wpisy katalogu wymagają i-węzłów, nawet jeśli nie wymagają spacji).
Chris
2

„Domyślnie każdy system plików w Uniksie ma trochę miejsca zarezerwowanego dla superużytkownika (root). Oznacza to, że żaden zwykły użytkownik Uniksa nie może wypełnić twojego systemu plików do 100%, a więc zawsze będzie miał wystarczająco dużo wolnego miejsca, aby kontynuować normalne działanie. „

Od: http://www.unixtutorial.org/commands/tune2fs/

Dave P.
źródło
1

Inną sprawą do sprawdzenia jest sprawdzenie, czy w tym systemie plików są jakieś otwarte pliki (zwłaszcza dzienniki). Usunięcie plików nie wyczyści miejsca na dysku, dopóki plik nie zostanie faktycznie zamknięty.

Chris Anderson
źródło
0

Założę się o 1 $, że Clyde ma odpowiedź. Proces ma otwarty plik na tym urządzeniu. W Linuksie plik nie jest faktycznie usuwany, dopóki proces trzymający go otwarty nie puści go.

Zacząłbym od: lsof | grep hda1

Greeblesnort
źródło