it-swarm.com.de

Was ist eine verwaiste Inode?

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

UPDATE

Es gab eine Zeit, in der einem von mir verwalteten Server die Inodes ausgegangen sind, aber als ich ein df -h ausführte, zeigte sich, dass auf dem Server nur 60% des Speicherplatzes belegt waren. Ich vermute, das liegt an verwaisten Inoden. Wie können alle Inodes aufgebraucht werden, aber auf dem Server ist noch "Speicherplatz" vorhanden? Können Sie dies in Ihren Antworten ansprechen?

17
ninjacoder

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 offen gehalten werden (eine gängige Praxis), belegen Inodes im Dateisystem. Wenn das System neu gestartet wird, ohne es ordnungsgemäß herunterzufahren, bleiben diese Inodes erhalten und sind verwaist
  • eine Beschädigung des Dateisystems kann ein Verzeichnis beschädigen, ohne die Inodes der Dateien zu beeinflussen, die das Verzeichnis enthält. Diese Inodes werden dann verwaist

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

17
Stephen Kitt

Ein verwaister Inode ist eine Datei, die „halb gelöscht“ ist: Sie hat keinen Verzeichniseintrag mehr, ist jedoch in einigen Prozessen noch geöffnet, sodass die Daten weiterhin auf der Festplatte vorhanden sind. Wenn der letzte Prozess, bei dem diese Datei geöffnet ist, sie 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, sodass sowohl df als auch df -i zähle es als gebraucht. Wenn die Festplatte als voll gemeldet wird, df jedoch noch Speicherplatz anzeigt, kann dies nicht mit verwaisten Inodes in Verbindung gebracht werden. Verwaiste Inodes sind einer der Gründe, warum die von df gemeldete Dateisystemnutzung und die von du gemeldete Gesamtdateigröße unterschiedlich sein können. Weitere Informationen zu diesem Thema finden Sie unter Warum gibt es so viele verschiedene Möglichkeiten, die Festplattennutzung zu messen? .

Viele Dateisysteme haben beim Erstellen des Dateisystems eine feste Anzahl von Inodes reserviert, was bedeutet, dass Sie höchstens so viele Dateien im 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 vergrößern oder neue Dateien erstellen (möglicherweise können Sie noch einige leere Dateien in vorhandenen Verzeichnissen erstellen, solange diese nur teilweise verwendete Blöcke füllen und nicht Zuweisung eines neuen Blocks erforderlich). Wenn kein freier Inode mehr vorhanden ist, können Sie vorhandene Dateien erweitern, aber keine neue Datei erstellen.

Der Kernel meldet den gleichen Fehler an Anwendungen, unabhängig davon, ob ein Dateisystem aufgrund eines Mangels an Datenspeicher oder aufgrund eines Mangels an Inodes voll ist. Sie können also den Fehler "Festplatte voll" erhalten, selbst wenn noch Datenplatz vorhanden ist, wenn für den Vorgang ein neuer Inode erforderlich ist und die Inode-Tabelle voll ist. Lauf df -i um zu wissen, wie viele Inodes verwendet werden und wie viele noch übrig sind.

  • Ein verwaister Inode ist ein Inode, der nicht verbunden ist, aber in einem anderen Prozess noch geöffnet ist. Zum Beispiel tail -f {file} In einer Shell ausführen, gefolgt von rm {file} In einer anderen. Das Dateisystem verfolgt diese, damit sie beim Beenden des Prozesses bereinigt werden können.

  • Es ist völlig normal, wenn Sie einen unreinen Abstieg haben. Es handelt sich lediglich um Dateien, die gelöscht wurden, aber noch offen waren, als das fs erneut schreibgeschützt bereitgestellt wurde. Sie sind nicht die Ursache, sondern lediglich ein Symptom.


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

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

Weitere Methoden zur Überprüfung finden Sie unter this und this .

1
Rahul