Nachteile einer zunehmenden Anzahl von Inoden in EXT4


8

Ich verwende derzeit backintime"Schnappschüsse" meines Dateisystems. Es ist insofern ähnlich rsnapshot, als es harte Links zu unveränderten Dateien herstellt. Ich habe vor kurzem keine Inodes mehr in meinem EXT4Dateisystem. df -hiIch habe 9,4 Millionen Inodes verwendet. Eine grobe Zählung der Anzahl der aktuellen Verzeichnisse multipliziert mit der Anzahl der Snapshots plus der Anzahl der aktuellen Dateien legt nahe, dass ich tatsächlich 9,4 Millionen Inodes verwende.

Soweit ich EXT4weiß, kann das Dateisystem etwa 2 ^ 32 Inodes unterstützen. Ich denke darüber nach, die Partition neu zu formatieren, um alle 4 Milliarden Inodes zu verwenden, aber ich bin besorgt, dass dies eine schlechte Idee ist. Was sind die Nachteile von so vielen Inodes in einem EXT4Dateisystem? Gibt es eine bessere Auswahl an Dateisystemen für eine solche Anwendung?


Beachten Sie, dass Hardlinks keine Inodes verbrauchen, daher ist dies wahrscheinlich nicht die Schuld von backintime.
Jakob

Antworten:


6

Das ist eine wirklich schlechte Idee. Jeder Inode verbraucht 256 Bytes (kann als 128 konfiguriert werden). Somit würden nur die Inodes 1 TB Speicherplatz verbrauchen.

Andere Dateisysteme wie btrfs können Inodes dynamisch erstellen. Verwenden Sie stattdessen eine davon.


Ich zögere ein wenig, btrfs für meine Backups zu verwenden, da es technisch immer noch instabil ist. Ist btrfs für diese Art der Verwendung wesentlich besser als reiserfs oder xfs?
StrongBad

btrfs unterstützt Snapshots auf Dateisystemebene. Abgesehen davon kann ich es nicht mit reiserfs und xfs vergleichen (ich bin mir nicht einmal sicher über xfs und snapshots). Ich benutze btrfs noch nicht, aber ich habe den Eindruck, dass es nicht mehr als instabil gilt.
Hauke ​​Laging

1
Ich bin mehr als zurückhaltend, brtfs zu verwenden, es ist immer noch kein solider Performer. Ja, es ist verbessert, aber ext4 ist immer noch meine Präferenz.
JM Becker

@HaukeLaging Woher kennen Sie die genaue Größe jedes Inodes? Danke
Bionix1441

1
@ Bionix1441 Alle Inodes haben die gleiche Größe:dumpe2fs -h /dev/whatever | grep 'Inode size'
Hauke ​​Laging

3

Ich kann das wirklich nicht genug betonen, erstelle keine Schiffsladung Inodes!

Erstens kann Ihre fsckLaufzeit exponentiell verlängert werden, obwohl einige dieser Probleme in ext4 behoben wurden. Noch wichtiger ist, dass Inodes nicht der einzige einschränkende Dateinummernfaktor sind. Es ist wahrscheinlich unmöglich, alle diese Inodes zu verwenden. Dies ist nicht nur praktisch, es kann tatsächlich technisch unmöglich sein.

Ein Auszug aus der Manpage von mkfs,

-i Bytes pro Inode Geben Sie das Verhältnis Bytes / Inode an. mke2fs erstellt einen Inode für jedes Byte pro Inode Byte Speicherplatz auf der Festplatte. Je größer das Byte-pro-Inode-Verhältnis ist, desto weniger Inodes werden erstellt. Dieser Wert sollte im Allgemeinen nicht kleiner als die Blockgröße des Dateisystems sein, da in diesem Fall mehr Inodes erstellt würden, als jemals verwendet werden können. Seien Sie gewarnt, dass es nicht möglich ist, die Anzahl der Inodes in einem Dateisystem nach dessen Erstellung zu erweitern. Wählen Sie daher sorgfältig den richtigen Wert für diesen Parameter.

Bei der Erstellung des neuen Dateisystems des OP sollte das OP realistisch gesehen beginnen, Zahlen bis zum Maximum von Bytes pro Inode = Blockgröße zu berechnen. Für jeden, der dies später liest, hat das OP einen sehr ungewöhnlichen Fall, in dem er dies hat eine RIESIGE Nummer Dateien.


1
Aber wenn Sie eine kleine Blockgröße haben , dann Einstellung Bytes pro Inode Blockgröße wird rechts eine Menge Inodes schaffen? In Bezug auf die Warnung in Ihrem ersten Satz - was sind die Risiken? Nur fsck Leistung?
UpTheCreek

+ 1 hätten Sie, ja, es würde viele Inodes erzeugen, was IMO dumm ist, aber es war an das OP gerichtet ... also wollte ich ein theoretisches Maximum bereitstellen, das zumindest möglicherweise verwendet werden könnte ... seit er es war Aus dem Deepend heraus würde er mehr haben, als er theoretisch verwenden könnte. Es war meine ... nie kleiner als Blockgröße = Bytes pro Inode, egal was passiert.
JM Becker

O und ja, für die meisten Dateisysteme, wie DBs und so weiter, habe ich große Dateien, die nie mehr als ein paar Tausend sagen. Also benutze ich gerne -Tlargefile4oder sogar Tlargefilefür eine gute Menge mehr Inodes. Zu viele Inodes haben mit Sicherheit hohe Kosten, sie beanspruchen selbst Platz und glauben mir, dass die fsck-Leistung absolut ernst ist. Wir sprechen von praktisch exponentiellen Verlangsamungen, wie 30 Sekunden gegenüber 2 Tagen ... und dies ist E / A-gebunden. Ganz zu schweigen von der Verlangsamung der Dateiliste, der Indizierung usw. usw. Egal wie gut ext4 war, mehr Inodes sind mehr zu indizieren, obwohl es viel besser ist als ext2 / 3.
JM Becker

Also keine Angst, ich wollte nur der Idee des OP entgegentreten, dass dies irgendwie kostenlos ist. ALLES hat seine Kosten, also wägen Sie immer die Vor- und Nachteile ab. Für die meisten ist der Standardbetrag ein völlig akzeptabler Betrag, insbesondere für ein Betriebssystemlaufwerk ... und die Auswirkungen auf die Leistung sind in beiden Fällen im Allgemeinen minimal ... Dies setzt jedoch voraus, dass Sie nicht wahnsinnig viele Inodes-Typennummern haben.
JM Becker
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.