Mam napęd dyskowy, na którym użycie i-węzła wynosi 100% (za pomocą df -i
polecenia). Jednak po znacznym usunięciu plików użycie pozostaje w 100%.
Jaki jest zatem właściwy sposób na zrobienie tego?
Jak to możliwe, że napęd dyskowy o mniejszym zużyciu miejsca na dysku może mieć większe użycie i-węzła niż dysk o wyższym zużyciu miejsca na dysku?
Czy to możliwe, jeśli skompresuję wiele plików, co zmniejszyłoby liczbę używanych i-węzłów?
linux
unix
memory-management
inode
Neversaint
źródło
źródło
Odpowiedzi:
Dysk może mieć dużą liczbę i-węzłów, nawet jeśli dysk nie jest bardzo pełny.
I-węzeł jest przypisany do pliku, więc jeśli masz gazilliony plików, każdy 1 bajt, zabraknie i-węzłów na długo przed zabraknięciem dysku.
Możliwe jest również, że usunięcie plików nie zmniejszy liczby i-węzłów, jeśli pliki mają wiele twardych łączy. Jak powiedziałem, i-węzły należą do pliku, a nie do pozycji katalogu. Jeśli do pliku są połączone dwa wpisy katalogu, usunięcie jednego nie zwalnia i-węzła.
Ponadto można usunąć pozycję katalogu, ale jeśli uruchomiony proces nadal ma otwarty plik, i-węzeł nie zostanie zwolniony.
Moją wstępną radą byłoby usunięcie wszystkich plików, które możesz, a następnie zrestartowanie skrzynki, aby upewnić się, że żadne procesy nie pozostawiają otwartych plików.
Jeśli to zrobisz i nadal będziesz mieć problem, daj nam znać.
Nawiasem mówiąc, jeśli szukasz katalogów zawierających wiele plików, ten skrypt może pomóc:
źródło
>/tmp/count_em_$$
zadziała tylko wtedy, gdy masz na to miejsce ... jeśli tak jest, zobacz odpowiedź @ simon./tmp
nie wpłynie na inne systemy plików.ls -A
zamiastls -a
. Dlaczego chcesz liczyć? i ..?Jeśli masz pecha, zużyłeś około 100% wszystkich i-węzłów i nie możesz utworzyć scipt. Możesz to sprawdzić za pomocą
df -ih
.To polecenie bash może ci pomóc:
I tak, zajmie to trochę czasu, ale możesz zlokalizować katalog z największą liczbą plików.
źródło
awk
może zachować skrót katalogu i liczbę plików bez uniqowania i sortowania linii gazillionów. To powiedziawszy, być może jest poprawa:find . -maxdepth 1 -type d | grep -v '^\.$' | xargs -n 1 -i{} find {} -xdev -type f | cut -d "/" -f 2 | uniq -c | sort -n
- to tylko sortuje ostatnią listę.sort
może nie utrzymać wszystkiego w pamięci i spróbuje automatycznie wrócić do zapisywania pliku tymczasowego. Proces, który oczywiście by się nie powiódł ...sort
nie udało mi się, ale mogłem dać to,--buffer-size=10G
co zadziałało.Moja sytuacja była taka, że brakowało mi i-węzłów i już usunąłem wszystko, co mogłem.
Jestem na Ubuntu 12.04LTS i nie mogłem usunąć starych jąder Linuksa, które zajmowały około 400 000 i-węzłów, ponieważ apt został uszkodzony z powodu brakującego pakietu. Nie mogłem zainstalować nowego pakietu, ponieważ brakowało mi i-węzłów, więc utknąłem.
Ostatecznie usunąłem ręcznie kilka starych jąder Linuksa, aby zwolnić około 10 000 i-węzłów
To wystarczyło, aby pozwolić mi zainstalować brakujący pakiet i naprawić mój apt
a następnie usuń resztę starych jąder Linuksa za pomocą apt
rzeczy są teraz znacznie lepsze
źródło
sudo rm -rf /usr/src/linux-headers-3.2.0-2*
jeśli jestem pewien, że nie używam tego jądra?$ sudo apt-get autoremove
samemu załatwiło sprawę.Moje rozwiązanie:
Spróbuj sprawdzić, czy jest to problem z i-węzłami:
Spróbuj znaleźć foldery główne z dużą liczbą i-węzłów:
Spróbuj znaleźć określone foldery:
Jeśli jest to nagłówek linux, spróbuj usunąć najstarszy z:
Osobiście przeniosłem je do zamontowanego folderu (ponieważ dla mnie ostatnie polecenie nie powiodło się) i zainstalowałem najnowszy z:
To rozwiązało mój problem.
źródło
SpamAssasin-Temp
.find /var/spool/MailScanner/incoming/SpamAssassin-Temp -mtime +1 -print | xargs rm -f
wykonał robotę :) Dzięki!for i in /usr/src/*; do echo -en "$i\t"; find $i 2>/dev/null |wc -l; done
for i in /src/*; do echo "$i, `find $i |wc -l`"; done|sort -nrk 2|head -10
pokaż 10 największych katalogówMiałem ten sam problem, naprawiłem go usuwając sesje katalogu php
Może być poniżej,
/var/lib/php5
jeśli używasz starszej wersji php.Odtwórz go z poniższym zezwoleniem
Domyślnie zezwolono na katalog na Debianie
drwx-wx-wt
(1733)źródło
rm -rf /var/lib/php/sessions/*
byłoby prawdopodobnie lepszym poleceniem - nie usunie katalogu sesji, tylko jego zawartość ... Wówczas nie musisz się martwić o jego odtworzenieDoświadczyliśmy tego na koncie HostGator (który nakłada limity i-węzłów na cały hosting) po ataku spamem. Pozostawił ogromną liczbę rekordów kolejek w /root/.cpanel/comet. Jeśli tak się stanie i okaże się, że nie masz wolnych i-węzłów, możesz uruchomić to narzędzie cpanel przez powłokę:
źródło
Możesz użyć RSYNC, aby usunąć dużą liczbę plików
Utwórz folder blanktest z 0 plikami, a polecenie zsynchronizuje foldery testowe z dużą liczbą plików (tą metodą usunąłem prawie 5 mln plików).
Dzięki http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux
źródło
rm *
przypadku wielu plików, ze względu na rozszerzenie symbolu wieloznacznego i przekazywanie / przetwarzanie każdego argumentu, alerm test/
jest w porządku do usuwaniatest/
folderu zawierającego wiele plików.eaccelerator może powodować problem, ponieważ kompiluje PHP w bloki ... Miałem ten problem z serwerem Amazon AWS na stronie o dużym obciążeniu. Zwolnij i-węzły, usuwając pamięć podręczną modułu eaccelerator w katalogu / var / cache / eaccelerator, jeśli nadal występują problemy.
(lub jakikolwiek inny katalog pamięci podręcznej)
źródło
Niedawno napotkaliśmy podobny problem. W przypadku, gdy proces odnosi się do usuniętego pliku, i-węzeł nie zostanie zwolniony, więc musisz sprawdzić lsof /, a zabicie / zrestartowanie procesu spowoduje zwolnienie i-węzłów.
Popraw mnie, jeśli się tu mylę.
źródło
Jak powiedziano wcześniej, w systemie plików mogą brakować i-węzłów, jeśli jest dużo małych plików. Mam pod warunkiem jakiś sposób znaleźć katalogi, które zawierają większość plików tutaj .
źródło
Późna odpowiedź: w moim przypadku były to moje pliki sesji
korzystające z i-węzłów.
Nie byłem nawet w stanie otworzyć mojego pliku crontab ani stworzyć nowego katalogu, nie mówiąc już o uruchomieniu operacji usuwania. Ponieważ używam PHP, mamy ten przewodnik, w którym skopiowałem kod z przykładu 1 i skonfigurowałem cronjob do wykonywania tej części kodu.
Jeśli zastanawiasz się, jak udało mi się otworzyć crontab, to dobrze, niektóre sesje usunąłem ręcznie przez CLI.
Mam nadzieję że to pomoże!
źródło
możesz zobaczyć tę informację
źródło
Wiele odpowiedzi na to pytanie do tej pory i wszystkie powyższe wydają się konkretne. Myślę, że będziesz bezpieczny podczas korzystania z niego
stat
, ale w zależności od systemu operacyjnego mogą pojawić się pewne błędy i-węzłowe. Dlatego wdrożenie własnejstat
funkcji połączeń w64bit
celu uniknięcia problemów z przepełnieniem wydaje się dość kompatybilne.źródło
Jeśli używasz dokera, usuń wszystkie obrazy. Wykorzystali wiele miejsca ....
Zatrzymaj wszystkie pojemniki
Usuń wszystkie pojemniki
Usuń wszystkie obrazy
Działa mi
źródło