Was ist eine verwaiste Inode? [geschlossen]

16

Ich verstehe, was eine Inode ist, aber was ist die genaue Definition einer verwaisten Inode? Ich verstehe nicht wirklich, was das bedeutet.

AKTUALISIEREN

Es gab eine Zeit, in der einem Server, den ich verwaltete, die Inodes ausgegangen waren, aber als ich ein df -h machte, zeigte es mir, dass der Server nur 60% des Speicherplatzes verbraucht hatte. Ich vermute, das liegt an verwaisten Inodes. Wie können alle Inodes aufgebraucht werden, aber auf dem Server bleibt noch "Platz"? Können Sie dies in Ihren Antworten ansprechen?

Ninjacoder
quelle
1
Ihr Update ist eigentlich eine separate Frage, die mit dem Unterschied zwischen der Speicherkapazität eines Dateisystems und der Anzahl der Inodes zu tun hat, die es enthalten kann. Sie sollten es als separate Frage stellen.
Stephen Kitt
Beim Laufen df -iwerden die entsprechenden Informationen für Inodes angezeigt.
Kusalananda
Der freie / belegte Speicherplatz hängt nur geringfügig mit den freien / belegten Inodes zusammen. Auf einer Festplatte mit vielen kleinen Dateien gehen die Inodes aus, bevor der Speicherplatz knapp wird.
Kusalananda

Antworten:

17

Ein verwaister Inode ist ein Inode, der nicht an einen Verzeichniseintrag im Dateisystem angehängt ist, was bedeutet, dass er nicht erreichbar ist.

Verwaiste Inodes können aus verschiedenen Gründen auftreten:

  • Temporäre Dateien, die gelöscht, aber geöffnet bleiben (eine gängige Praxis), belegen Inodes im Dateisystem. Wird das System neu gestartet, ohne es ordnungsgemäß herunterzufahren, bleiben diese Inodes bestehen und sind verwaist
  • Eine Beschädigung des Dateisystems kann ein Verzeichnis beschädigen, ohne die Inodes der Dateien zu beeinträchtigen, die das Verzeichnis enthält. Diese Inodes werden dann verwaist

fsckerstellt neue Verzeichniseinträge für verwaiste Inodes in lost+found.

Stephen Kitt
quelle
Danke für deine Antwort @ stephen-kitt. Es gab eine Zeit, in der einem Server, den ich verwaltete, die Inodes ausgegangen waren, aber als ich dies tat df -h, zeigte es mir, dass der Server nur 60% des Speicherplatzes verbraucht hatte. Ich vermute, das liegt an verwaisten Inodes. Wie können alle Inodes aufgebraucht werden, aber auf dem Server bleibt noch "Platz"?
Ninjacoder
3

Ein verwaister Inode ist eine Datei, die „teilweise gelöscht“ ist: Sie enthält keinen weiteren Verzeichniseintrag, ist jedoch in einem bestimmten Prozess noch geöffnet, sodass die Daten weiterhin auf der Festplatte vorhanden sind. Wenn der letzte Prozess, bei dem diese Datei geöffnet ist, diese schließt, wird die Datei vollständig gelöscht und der verwaiste Inode verschwindet.

Ein verwaister Inode verwendet sowohl einen Inode als auch den Speicherplatz zum Speichern der Datei, also beide, dfund df -izählt sie als verwendet. Wenn die Festplatte als voll gemeldet wird, aber noch Speicherplatz vorhanden ist df, kann dies nicht mit verwaisten Inodes in Verbindung gebracht werden. Verwaiste Inodes sind einer der Gründe, warum sich die von gemeldete Dateisystemnutzung dfund die von gemeldete Gesamtdateigröße duunterscheiden können. Siehe Warum gibt es so viele verschiedene Möglichkeiten, die Datenträgernutzung zu messen? Weitere Details zu diesem Thema.

Viele Dateisysteme haben eine feste Anzahl von Inodes reserviert, wenn das Dateisystem erstellt wird, was bedeutet, dass Sie höchstens so viele Dateien auf dem Dateisystem haben können. Die Anzahl der Inodes ist ein Kompromiss zwischen dem von den Inodes verwendeten Speicherplatz und der Möglichkeit, viele Dateien zu erstellen. Wenn im Dateisystem kein Speicherplatz mehr vorhanden ist, können Sie keine vorhandenen Dateien mehr vergrößern oder neue Dateien erstellen (möglicherweise können Sie noch einige leere Dateien in vorhandenen Verzeichnissen erstellen, sofern sie nur teilweise verwendete Blöcke füllen und nicht Zuweisung eines neuen Blocks erforderlich). Wenn es keinen freien Inode mehr gibt, können Sie vorhandene Dateien vergrößern, aber keine neue Datei erstellen.

Der Kernel meldet den gleichen Fehler an Anwendungen, unabhängig davon, ob ein Dateisystem aufgrund eines Mangels an Speicherplatz für Daten oder aufgrund eines Mangels an Inodes voll ist. Sie können also eine Fehlermeldung erhalten, dass der Datenträger voll ist, auch wenn noch Speicherplatz vorhanden ist, wenn für den Vorgang ein neuer Inode erforderlich ist und die Inode-Tabelle voll ist. Führen Sie df -ieinen Lauf durch, um zu erfahren, wie viele Inodes verwendet werden und wie viele übrig sind.

Gilles 'SO - hör auf böse zu sein'
quelle
1
  • Eine verwaiste Inode ist eine Inode, die nicht verbunden ist, aber in einem anderen Prozess noch geöffnet ist. Zum Beispiel tail -f {file}in einer Shell laufen, gefolgt von einer rm {file}anderen. Das Dateisystem verfolgt diese, damit sie bereinigt werden können, wenn der Prozess beendet wird.

  • Es ist völlig normal, wenn Sie einen unsauberen Abstieg haben. Es handelt sich lediglich um gelöschte Dateien, die beim erneuten Laden der fs noch geöffnet waren. Sie sind nicht die Ursache, sondern lediglich ein Symptom.


Führen Sie bei Inode-Problemen diese Abfrage aus, um die Liste der Inodes abzurufen, die in allen Verzeichnissen verwendet werden

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Auf diese und diese können Sie sich beziehen, um weitere Methoden zu überprüfen.

Rahul
quelle
@ninjacoder Sie können meine aktualisierte Antwort für Ihr Inode-Problem überprüfen
Rahul