Radząc sobie ze starym pudełkiem CentOS 5.6, bez konfiguracji lvm, mój główny system plików / jest pełny, wyczyściłem wiele starych plików dziennika i plików aplikacji, których nie potrzebuję, a które miały więcej niż 2 -5 GB, jednak mój system nadal informuje, że dysk jest pełny.
[root@tornms1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 130G 124G 0 100% /
/dev/sdb1 264G 188M 250G 1% /data
/dev/sda1 99M 24M 71M 26% /boot
tmpfs 2.0G 0 2.0G 0% /dev/shm
[root@tornms1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdb1 on /data type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
Masz pomysł, co powinienem zrobić dalej? niestety w tej chwili ponowne uruchomienie urządzenia nie jest możliwe.
/.Trash/
jest pusty? Zrobiłeśsudo rm -Rf ~/.Trash/*
?Odpowiedzi:
Mogą się tu dziać dwie rzeczy.
Po pierwsze , twój system plików zarezerwował miejsce, w którym
root
można tylko zapisywać, aby krytyczny proces systemu nie upadł, gdy zwykłym użytkownikom zabraknie miejsca na dysku. Dlatego widzisz 124G użytych 130G, ale zero dostępnych. Być może usunięte pliki sprowadziły wykorzystanie do tego poziomu, ale nie poniżej progu dla zwykłych użytkowników.Jeśli taka jest Twoja sytuacja i jesteś zdesperowany, możesz zmienić ilość zarezerwowanego miejsca
root
. Aby zmniejszyć go do 1% (domyślnie 5%), twoje polecenie będziePo drugie , system operacyjny nie zwolni miejsca na dysku dla usuniętych plików, które są nadal otwarte. Jeśli usunąłeś (powiedzmy) jeden z plików dziennika Apache, musisz ponownie uruchomić Apache, aby zwolnić miejsce.
źródło
Jeśli usuniesz plik, który jest używany przez proces, nie możesz już go wyświetlić
ls
. Proces nadal zapisuje ten plik, dopóki go nie zatrzymasz.Aby wyświetlić usunięte pliki, po prostu uruchom
lsof|grep delete
źródło
2 inne sposoby uzyskania dysku to pełny problem:
1) ukryty pod punktem montowania: Linux pokaże pełny dysk z plikami „ukrytymi” pod punktem montowania. Jeśli masz dane zapisane na dysku i zamontujesz na nim inny system plików, Linux poprawnie odnotuje użycie dysku, nawet jeśli nie widzisz plików pod punktem podłączenia. Jeśli masz mounty nfs, spróbuj je zamontować i sprawdź, czy coś nie zostało przypadkowo zapisane w tych katalogach przed montowaniem.
2) uszkodzone pliki: Od czasu do czasu widzę to w systemie Windows do przesyłania plików Linux za pośrednictwem SMB. Jeden plik nie zamyka deskryptora pliku i kończy się na 4 GB pliku śmieci.
Naprawienie tego może być bardziej żmudne, ponieważ musisz znaleźć podkatalog, w którym znajduje się plik, ale łatwo go naprawić, ponieważ sam plik można łatwo usunąć. Korzystam z
du
polecenia i robię listę katalogów głównych, aby dowiedzieć się, gdzie używana jest przestrzeń plików.Liczba katalogów najwyższego poziomu jest zwykle ograniczona, więc ustawiam flagę czytelną dla ludzi,
-h
aby zobaczyć, który podkatalog jest kosmicznym świnią.Następnie przechodzisz do problemu z dzieckiem i powtarzasz proces dla wszystkich zawartych w nim elementów. Aby ułatwić dostrzeżenie dużych przedmiotów, zmieniamy nieznacznie du i łączymy go z rodzajem.
co daje najmniejszy do największego wynik według wielkości bajtu dla wszystkich plików i katalogów
Po znalezieniu dużego pliku można go zwykle usunąć.
źródło
Możesz dowiedzieć się, które pliki są otwarte za pomocą lsof. Może generować dużo danych wyjściowych, więc w poniższym przykładzie ograniczyłem się do wierszy kończących się na log:
źródło
Jeśli niektóre pliki zostaną usunięte, ale nadal wykorzystywane przez jakiś proces, wówczas jego miejsce nie zostanie zwolnione. W takim przypadku albo zrestartuj proces, który używa pliku, albo anuluj plik. Zawsze dobrą praktyką jest zerowanie takich plików zamiast ich usuwania. Aby znaleźć usunięte pliki, ale nadal są używane przez jakiś proces
poda identyfikator procesu i deskryptor pliku. Aby zerować usunięty plik według deskryptora pliku
źródło
Wpisz polecenie
Który pokaże listę plików przechowujących pamięć z usuniętym cytatem.
Zanotuj pid (identyfikator procesu) pliku
Zabij proces
Pamięć zostanie zwolniona przez proces
Sprawdź to za pomocą polecenia
źródło
Oprócz tego, co zostało wyjaśnione, problemem może być to, że istnieje inny punkt montowania usuniętego katalogu plików na innym podłączonym urządzeniu dyskowym na tym samym serwerze. Sprawdź aktualne podłączenia i wpisy fstab.
źródło
Rzeczywisty problem obserwowany na wolności:
Upewnij się, że usuwasz rzeczywiste pliki, a nie dowiązania symboliczne do plików. Może tak być zwłaszcza w przypadku plików dziennika.
źródło