Skończyły się i-węzły

Odpowiedzi:

24

Liczba i-węzłów jest ustawiana w momencie formatowania partycji. Zwykle liczba utworzonych i-węzłów jest wystarczająca do prawie dowolnego celu; Jeśli jednak masz dużą liczbę bardzo małych plików, możesz wykorzystać i-węzły, zanim dysk zostanie zapełniony.

Musisz znaleźć wiele tysięcy małych plików w systemie, które używają i-węzłów, i albo je usunąć, albo przenieść na partycję, która została specjalnie skonfigurowana z bardzo dużą liczbą dostępnych i-węzłów. Nie można zmienić liczby i-węzłów dostępnych na partycji po jej sformatowaniu.

Skrypt napisany przez paxdiablo podczas stackoverflow może być przydatnym sposobem sprawdzania nadmiernego wykorzystania małych plików, o którym możesz nie wiedzieć. Oto znowu:

#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Umieść ten skrypt w pliku tekstowym ~ / bin / count_em, a następnie wydaj polecenie

chmod +x ~/bin/count_em

aby był wykonywalny. Jeśli musiałbyś utworzyć katalog ~ / bin, to nie będzie on jeszcze w ścieżce wykonywalnej, więc po prostu wyloguj się i zaloguj ponownie.

Aby uruchomić program, wystarczy wpisać

count_em

i wyświetli listę wszystkich plików w bieżącym katalogu i podkatalogach według katalogów, z najwyższą liczbą na końcu. Bardzo przydatny!

producent 4
źródło
TA LINIA> chmode + x ~ / bin / count_em jest faktycznie> chmod + x ~ / bin / count_em
1
czy konieczne jest usunięcie wszystkich plików utworzonych przez użytkownika, czy może przeniesienie ich do archiwum tar załatwi sprawę?
amc
Archiwizowanie ich to świetny sposób, aby sobie z tym poradzić, nie usuwa danych użytkowników, ale uświadamia im, że ich zachowanie nie jest satysfakcjonujące, ponieważ nie będą mogli używać plików tak, jak wcześniej. Są jednak szanse, że ogromna liczba plików jest generowana przez coś, z czego nikt nie korzysta i można je bezpiecznie usunąć, ale jest to ryzyko.
LovesTha,
Dobrą, jednoliniową alternatywą dla twojego skryptu może byćsudo du -a -d 1 --inodes . | sort -nr | head -20
Charles Green
1
Oczywiście to nie działa, jeśli całkowicie brakuje Ci i-węzłów, ponieważ tworzy pliki tymczasowe :(
Molomby
8

Możesz także wyświetlić posortowaną listę katalogów według liczby i-węzłów, używając tego polecenia: du --inodes -d 3 / | sort -n | tail

Stamtąd możesz określić, które katalogi usunąć

John
źródło
1
unrecognized option '--inodes'na Ubuntu 14.04,
fyi
Dlaczego korzystasz z Ubundu 14.04 w 2019 roku? Widzę, że ma coreutils 8.21 od lutego 2013, --inodesopcja została dodana lip 2013 lmao
ZN13
2

Odkryłem, że użycie i-węzła pochodzi z /root/.local i usunąłem ten folder.

Xaav
źródło
2
Nic nie powinno używać /root/.local i jest tam tylko ze względu na kompatybilność. Musisz dowiedzieć się, co zapisywało wiele małych plików w tym katalogu.
fabricator4