Linux - Hilfe, mir gehen die Inodes aus!

16

Ich habe ein Dateisystem mit vielen kleinen Dateien. Derzeit werden ca. 80% der Inodes verwendet (ich habe dies überprüft df -i), jedoch werden nur 60% des Festplattenspeichers verwendet. Wie kann ich die Anzahl der Inodes erhöhen? Wenn es sich nur um Festplattenspeicher handelte, weiß ich, dass ich die Größe der Festplatte erhöhen könnte (diese Festplatte befindet sich in LVM). Wenn ich den Datenträger vergrößere, werde ich dann mehr Inodes haben?

Ich bin bereit, das Dateisystem, auf dem sich diese Festplatte befindet, zu vergrößern, wenn das helfen würde.

Rory
quelle

Antworten:

14

Mann mke2fs

Sie sehen ein -N für die Anzahl der Inodes

Sie können es also angeben, wenn Sie eine neue Partition formatieren. Im Moment nicht so hilfreich, oder?

tune2fs, das das Dateisystem optimiert, scheint keine Möglichkeit zu haben, weitere Inodes hinzuzufügen.

Aber vielleicht macht ext3 oder 4 das und jemand anderes weiß ...?

Jetzt haben Sie also eine Option: Sichern, Partition neu formatieren, wiederherstellen.

Paul
quelle
1
Ja, es ist gut, aber nicht, weil es reiserfs ist, sondern weil es dynamische Inode-Zuweisungen unterstützt (unterstützt von jedem anständigen neuen Dateisystem)
1
Reiser eignet sich hervorragend für jede Menge winziger Feilen. Damit würde ich gehen.
Xorlev
Ich würde jedoch sicherstellen, dass Sie Backups haben, wenn Sie Reiser verwenden. Ich (ich) und andere haben in den vergangenen Jahren durch reiserFS Daten verloren. Ich traue es seitdem nicht mehr.
Anony-Mousse
ext3 scheint keine
möglichkeit dafür
15

Um die ursprüngliche Frage zu beantworten, obwohl es für den Fragesteller wahrscheinlich zu spät ist - ja, eine Erhöhung von EXT2 / 3 auf LVM2 erhöht auch das Inodes-Limit.

Hatte gerade eine Partition von 1G Größe mit 65k Inodes Limit. Nach

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

... mein Inodes-Limit ist jetzt 128k.

Aleš Krajník
quelle
1
Wow, ich war fast verzweifelt, fand aber Ihre Antwort und beschloss, es zu versuchen, und es funktionierte. Dies sollte definitiv die akzeptierte Antwort sein! Funktioniert sowohl für LVM als auch für virtuelle Maschinen :)
vadipp
12

Wenn Sie gewusst haben, dass kleine Dateien Ihren Festplattenspeicher belasten, sollten Sie einen FS mit dynamischer Inode-Zuweisung verwenden, z. B. ReiserFS oder einen neuen modernen FS (XFS, JFS) anstelle von EXT2 / 3/4 (den Sie vermutlich verwenden) , das hast du nicht gesagt).

Eine Dateisystemmigration ist in Ihrer Situation wahrscheinlich eine gute Wahl.

Gemeinschaft
quelle
1
Wenn Sie gewusst haben, dass kleine Dateien Ihren Festplattenspeicher belasten, sollten Sie einige Optimierungen vorgenommen haben . Jedes Dateisystem hat Vor- und Nachteile.
Franklin Piat
3

Als Notlösung mounten Sie ein neues Dateisystem und cp / rm / ln-s einen Teil Ihrer fs-Hierarchie. Jetzt hast du ein paar freie Inodes! Sie können keine Dateien zwischen den beiden Dateisystemen verschieben, achten Sie also darauf, dass Sie die notwendigen Schritte ausführen. Bei vielen Anwendungen kann dies jedoch transparent sein.

Dann machen Sie ein neues fs, gemäß dem Ratschlag von Paul, und migrieren Sie darauf.

Charles Stewart
quelle
1
Natürlich können Sie Dateien zwischen den beiden Dateisystemen mv - ein mv ist effektiv ein semantischer Zucker für cp + rm. Sie können keine festen Verbindungen zwischen zwei Dateisystemen herstellen. Meinten Sie etwas anderes?
Daniel Lawson
@ Daniel: Ich meine den Systemaufruf rename (), und ich denke, es ist eine schlampige Praxis, mv als Zucker für cp / rm zu verwenden, da es Probleme mit der Semantik von Symlinks gibt. Ich sollte diese Antwort überarbeiten - es gibt ein paar Stellen, an denen es nicht schön klar ist.
Charles Stewart
2

Ext4 leidet unter dem gleichen Problem, wenn Sie eine kleine Partition erstellen und viele kleine Dateien haben, werden Ihnen die Inodes ausgehen, und wenn Sie Funktionen haben, flex_bgmit denen Sie tune2fsdie Inodes nicht vergrößern können.

Persönlich würde ich mit ext4 über jede Version von Rieserfs gehen, mache einfach folgendes beim Formatieren:

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

Wenn Sie auf diese Weise formatieren, erhalten Sie 33160 Inodes auf einer 512M-Startpartition.

Ich sage dies als jemand, der jahrelang reiserfs verwendet hat, der Kernel-Support ist nicht so gut wie ext *, und das Dateisystem wird im Laufe der Zeit fragmentiert und langsam.

Lebensmüde
quelle
-1

Entscheide dich für resiserfs oder andere fs ohne Inode-Einschränkung. Insbesondere in Bezug auf Protokolldateien könnten Sie wahrscheinlich einige Tonnen kleiner, nicht verwendeter Dateien in eine größere TAR-Datei packen, um eine hübsche Menge an Inodes freizugeben =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
adrolmar
quelle