Die Inodes gehen zur Neige

Antworten:

24

Die Anzahl der Inodes wird zum Zeitpunkt der Formatierung der Partition festgelegt. Normalerweise ist die Anzahl der erstellten Inodes für fast jeden Zweck ausreichend. Wenn Sie jedoch eine große Anzahl sehr kleiner Dateien haben, können Sie die Inodes verbrauchen, bevor die Festplatte voll ist.

Sie müssen die vielen tausend kleinen Dateien auf Ihrem System finden, die Inodes verbrauchen, und sie entweder löschen oder sie auf eine Partition verschieben, die speziell mit einer sehr großen Anzahl von verfügbaren Inodes eingerichtet wurde. Es ist nicht möglich, die Anzahl der Inodes zu ändern, die auf einer Partition verfügbar sind, nachdem diese formatiert wurde.

Das Skript, das von paxdiablo für stackoverflow geschrieben wurde, ist möglicherweise eine praktische Methode, um zu überprüfen, ob zu viele kleine Dateien verwendet werden, die Sie möglicherweise nicht kennen. Hier ist es wieder:

#!/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_$$

Fügen Sie dieses Skript in die Textdatei ~ / bin / count_em ein und geben Sie den Befehl aus

chmod +x ~/bin/count_em

um es ausführbar zu machen. Wenn Sie das Verzeichnis ~ / bin erstellen mussten, befindet es sich noch nicht im ausführbaren Pfad. Melden Sie sich einfach ab und wieder an.

Um das Programm auszuführen, geben Sie einfach Folgendes ein

count_em

und listet die Nummern aller Dateien im aktuellen Verzeichnis und in den Unterverzeichnissen nach Verzeichnis auf, wobei die höchste Anzahl zuletzt angegeben wird. Sehr praktisch!

Hersteller4
quelle
DIESE LINIE> chmode + x ~ / bin / count_em ist tatsächlich> chmod + x ~ / bin / count_em
1
Müssen alle von Benutzern erstellten Dateien gelöscht werden, oder reicht es aus, sie in das tar-Archiv zu verschieben?
AMC
Das Archivieren ist eine großartige Möglichkeit, um damit umzugehen. Es löscht keine Benutzerdaten, macht sie jedoch darauf aufmerksam, dass ihr Verhalten nicht zufriedenstellend ist, da sie die Dateien nicht so verwenden können, wie sie zuvor waren. Es besteht jedoch die Möglichkeit, dass die große Anzahl von Dateien von etwas generiert wird, das niemand verwendet, und dass sie sicher gelöscht werden können. Dies ist jedoch ein Risiko.
LovesTha
Eine gute einzeilige Alternative zu Ihrem Skript könnte seinsudo du -a -d 1 --inodes . | sort -nr | head -20
Charles Green
1
Dies funktioniert natürlich nicht, wenn Sie keine Inodes mehr haben, da temporäre Dateien erstellt werden :(
Molomby
8

Mit diesem Befehl können Sie auch eine sortierte Liste der Verzeichnisse nach Anzahl der Inodes anzeigen: du --inodes -d 3 / | sort -n | tail

Von dort aus können Sie festlegen, welche Verzeichnisse gelöscht werden sollen

johnL
quelle
1
unrecognized option '--inodes'am Ubuntu 14.04, fyi
Molomby
Warum benutzt du Ubundu 14.04 im Jahr 2019? Ich sehe, es hat Coreutils 8.21 von Feb 2013, die --inodesOption wurde hinzugefügt Jul 2013 lmao
ZN13
2

Ich stellte fest, dass die Inode-Verwendung von /root/.local stammt, und löschte diesen Ordner.

xaav
quelle
2
Es sollte nicht viel /root/.local verwenden und es ist nur aus Kompatibilitätsgründen verfügbar. Sie müssen herausfinden, was viele kleine Dateien in dieses Verzeichnis geschrieben hat.
Fabricator4