Mam dysk SCSI na serwerze (sprzętowy Raid 1), 32G, ext3 system plików. df
mówi mi, że dysk jest w 100% pełny. Jeśli usunę 1G, zostanie to poprawnie pokazane.
Jednak jeśli uruchomię a, du -h -x /
to du
powie mi, że używane są tylko 12G (używam z -x
powodu niektórych mocowań Samby).
Więc moje pytanie nie dotyczy subtelnych różnic między poleceniami du i df, ale o to, jak mogę dowiedzieć się, co powoduje tę ogromną różnicę?
Uruchomiłem ponownie komputer w celu sprawdzenia, czy błąd fsck nie powiódł się. Powinienem biec badblocks
? lsof
pokazuje mi brak otwartych usuniętych plików, lost+found
jest pusty i nie ma oczywistej instrukcji warn / err / fail w pliku wiadomości.
Zapytaj o dalsze szczegóły dotyczące konfiguracji.
linux
ext3
disk-space-utilization
scsi
początkowo
źródło
źródło
Odpowiedzi:
Sprawdź pliki w punktach montowania. Często, gdy montujesz katalog (powiedzmy sambafs) w systemie plików, który już zawierał plik lub katalogi, tracisz możliwość zobaczenia tych plików, ale wciąż zajmują one miejsce na dysku bazowym. Miałem kopie plików w trybie pojedynczego użytkownika zrzucam pliki do katalogów, których nie widziałem poza trybem pojedynczego użytkownika (ze względu na zamontowanie na nich innych systemów katalogowych).
źródło
Natknąłem się na tę stronę, próbując wyśledzić problem na lokalnym serwerze.
W moim przypadku
df -h
idu -sh
niedopasowane o około 50% wielkości dysku twardego.Było to spowodowane tym, że apache (httpd) przechowuje w pamięci duże pliki dziennika, które zostały usunięte z dysku.
To było śledzone przez uruchomiony
lsof | grep "/var" | grep deleted
gdzie/var
była partycja Musiałem posprzątać.Dane wyjściowe pokazały następujące wiersze:
httpd 32617 nobody 106w REG 9,4 1835222944 688166 /var/log/apache/awstats_log (deleted)
Sytuacja została następnie rozwiązana przez ponowne uruchomienie apache (
service httpd restart
) i wyczyściła 2 GB miejsca na dysku, umożliwiając usunięcie blokad usuniętych plików.źródło
kill -9 'pid'
zwolnić blokady. np .: dla twojego httpd byłobykill -9 32617
.lsof
ponieważsudo
pojawią się wszystkie otwarte deskryptory plikówsudo truncate -s0 /proc/(h2 PID)/(descriptor number obtained from ls /proc/h2pid/fd)
.httpd
miejsca nie został zwolniony. Kiedy prowadziłem/etc/init.d/rsyslog restart
, działało: Dlsof -a +L1 /var
, gdzie-a
oznacza ORAZ wszystkie warunki (domyślnie jest LUB),+L1
oznacza , że lista zawiera tylko pliki z liczbą łączy mniejszą niż 1 (tj. Usunięte pliki z otwartymi deskryptorami plików) i/var
ogranicza się do plików poniżej tego punktu montowaniaZgadzam się z odpowiedzią OldTroll jako najbardziej prawdopodobną przyczyną twojego „brakującego” miejsca.
W systemie Linux możesz z łatwością ponownie zainstalować całą partycję główną (lub dowolną inną partycję) w innym miejscu w systemie plików, np. / Mnt, po prostu wydaj
wtedy możesz zrobić
i zobacz, co zajmuje twoją przestrzeń.
Ps: Przepraszam, że dodałem nową odpowiedź, a nie komentarz, ale potrzebowałem trochę formatowania, aby ten post był czytelny.
źródło
/var/lib/docker/aufs/diff/
Zobacz co
df -i
mówi. Możliwe, że brakuje Ci i-węzłów, co może się zdarzyć, jeśli w tym systemie plików znajduje się duża liczba małych plików, które zużyją wszystkie dostępne i-węzły bez zajmowania całej dostępnej przestrzeni.źródło
du -s
z tym samym poddrzewem, dostaniesz dobry pomysł, jeśli tak jest w tym przypadku.W moim przypadku miało to związek z dużymi usuniętymi plikami. Rozwiązanie problemu było dość bolesne, zanim znalazłem tę stronę, co ustawiło mnie na właściwej ścieżce.
W końcu rozwiązałem problem za pomocą
lsof | grep deleted
, który pokazał mi, który program przechowuje dwa bardzo duże pliki dziennika (łącznie 5 GB mojej dostępnej partycji głównej 8 GB).źródło
Pliki, które są otwierane przez program, tak naprawdę nie znikają (przestają zajmować miejsce na dysku) po ich usunięciu, a znikają, gdy program je zamyka. Program może mieć ogromny plik tymczasowy, którego ty (i du) nie widzisz. Jeśli jest to program zombie, może być konieczne ponowne uruchomienie komputera w celu wyczyszczenia tych plików.
źródło
kill -9 'pid'
je zwolniłem i odzyskałem miejsce na dysku.Spróbuj tego, aby sprawdzić, czy martwy / zawieszony proces jest zablokowany podczas zapisywania na dysku: lsof | grep "/ mnt"
Następnie spróbuj zabić wszystkie zablokowane PID-y (szczególnie poszukaj linii kończących się na „(usunięte”))
źródło
To najłatwiejsza metoda, jaką do tej pory znalazłem, aby znaleźć duże pliki!
Oto przykład, jeśli twoje rootowanie jest pełne / (mount / root) Przykład:
cd / (więc jesteś rootem)
ls | xargs du -hs
Przykładowe dane wyjściowe:
wtedy zauważysz, że sklep jest duży, zrób cd / store
i biegnij ponownie
ls | xargs du -hs
w tym przypadku katalog vms jest spacją.
źródło
baobab
? (patrz marzocca.net/linux/baobab/baobab-getting-started.html )ls
+xargs
wydaje się przesadzeniem,du -sh /*
sam w sobie działa dobrzeDla mnie musiałem działać,
sudo du
ponieważ pod okiem było wiele plików dokerów/var/lib/docker
, a użytkownik inny niż sudo nie ma uprawnień do odczytu.źródło
Jeszcze jedna możliwość do rozważenia - masz prawie całkowitą rozbieżność, jeśli używasz Dockera i uruchamiasz df / du w kontenerze, który używa montowania woluminów. W przypadku katalogu podłączonego do woluminu na hoście dokera, df zgłosi sumy df HOST. Jest to oczywiste, jeśli się nad tym zastanowić, ale gdy pojawi się raport o „niekontrolowanym pojemniku wypełniającym dysk!”, Upewnij się, że zweryfikowałeś zużycie przestrzeni plików w pojemniku za pomocą czegoś podobnego
du -hs <dir>
.źródło
Miałem ten problem również w Centos 7 i znalazłem rozwiązanie po wypróbowaniu wielu rzeczy, takich jak bleachbit i cleaning / usr i / var, mimo że pokazywały tylko około 7G każdy. Wciąż wyświetlał 50G 50G używanych na partycji głównej, ale pokazywał tylko 9G użycia pliku. Uruchomiłem live Ubuntu CD i odmontowałem naruszającą partycję 50G, otworzyłem terminal i uruchomiłem xfs_check i xfs_repair na partycji. Następnie ponownie zamontowałem partycję, a mój utracony + znaleziony katalog został rozszerzony do 40G. Posortowałem utracone + znalezione według rozmiaru i znalazłem tekstowy dziennik tekstowy 38G dla Steam, który ostatecznie powtórzył błąd mp3. Usunąłem duży plik i teraz mam miejsce, a użycie moich dysków zgadza się z rozmiarem mojej partycji głównej. Nadal chciałbym wiedzieć, jak sprawić, by dziennik pary nie urósł już tak bardzo.
źródło
xfs_fsr
naprawiliśmy ten problem dla nasjeśli podłączony dysk jest folderem współdzielonym na komputerze z systemem Windows, to wygląda na to, że df pokaże rozmiar i użycie dysku całego dysku z systemem Windows, ale du pokaże tylko część dysku, do której masz dostęp. (i jest zamontowany). więc w takim przypadku problem musi zostać rozwiązany na komputerze z systemem Windows.
źródło
Podobna sytuacja przydarzyła nam się w produkcji - użycie dysku spadło do 98%. Czy następujące dochodzenie:
a) w
df -i
celu sprawdzenia użycia i-węzła zużycie i-węzła wyniosło 6%, więc niewiele mniejszych plikówb) Montowanie
root
i sprawdzanie ukrytych plików. Nie można złożyć żadnych dodatkowych plików.du
wyniki były takie same jak przed zamontowaniem.c) Na koniec sprawdzone
nginx
logi. Został skonfigurowany do zapisu na dysk, ale programista usunął plik dziennika bezpośrednio, powodującnginx
przechowywanie wszystkich dzienników w pamięci. Ponieważ plik/var/log/nginx/access.log
został usunięty z dysku przy użyciu,rm
nie był widoczny przy użyciu,du
ale plik był uzyskiwany przeznginx
i dlatego nadal był otwartyźródło
Miałem ten sam problem, o którym mowa w tym temacie, ale w jednym VPS. Przetestowałem więc wszystko, co opisano w tym temacie, ale bez powodzenia. Rozwiązaniem było skontaktowanie się z pomocą techniczną z naszym dostawcą VPS, który dokonał ponownego obliczenia przydziału i skorygował różnicę przestrzeni między
df -h
idu-sh /
.źródło
Dzisiaj napotkałem ten problem na urządzeniu FreeBSD. Problem polegał na tym, że był to artefakt
vi
(nievim
, nie jestem pewien, czyvim
stworzy ten problem). Plik zajmował miejsce, ale nie został w pełni zapisany na dysku.Możesz to sprawdzić za pomocą:
Spogląda na wszystkie otwarte pliki i sortuje (numerycznie przez
-n
) według 8. kolumny (klucz,-k8
), pokazując dziesięć ostatnich pozycji.W moim przypadku ostatni (największy) wpis wyglądał tak:
Oznaczało to, że proces (PID) 12345 zużywał 1,46G (ósma kolumna podzielona przez 1024³) dysku pomimo braku jego
du
zauważenia.vi
jest okropny podczas oglądania bardzo dużych plików; nawet 100 MB jest na to duży. 1,5 G (lub jak duży był ten plik) jest niedorzeczne.Rozwiązaniem było
sudo kill -HUP 12345
(jeśli to nie zadziała, jasudo kill 12345
i jeśli to też się nie powiedzie, to przerażającekill -9
wejdą do gry).Unikaj edytorów tekstu na dużych plikach. Przykładowe obejścia dla szybkiego przeglądania:
Zakładając rozsądne długości linii:
{ head -n1000 big.log; tail -n1000 big.log } |vim -R -
wc -l big.log |awk -v n=2000 'NR==FNR{L=$1;next}FNR%int(L/n)==1' - big.log |vim -R -
Zakładając nieuzasadnione duże linie:
{ head -c8000 big.log; tail -c8000 big.log } |vim -R -
Są użycie
vim -R
zamiastview
poznieważvim
jest prawie zawsze lepiej ... gdy jest zainstalowany. Zapraszam do włożenia ich doview
lubvi -R
zamiast.Jeśli otwierasz tak duży plik, aby go faktycznie edytować, rozważ
sed
lubawk
inne podejście programowe.źródło
sprawdź, czy na serwerze jest zainstalowany agent ossec. Lub niektóre procesy używają usuniętych plików dziennika. Kiedyś byłem agentem ossec.
źródło
sprawdź / lost + found, miałem system (centos 7), a część pliku w / lost + found zjadła całą przestrzeń.
źródło