Inodes

Vorwort

In diesem Artikel beschreiben wir kurz, was ein Inode ist, wo diese zur Anwendung kommen und nennen ein Problem-Beispiel, das häufig vorkommt, sowie den dazugehörigen Lösungsansatz.



Was ist ein Inode?

Inodes stellen eine zur Dateisystemverwaltung genutzte Datenstruktur dar und besitzen eine eineindeutige Nummer zur Identifizierung. Dabei existiert zu jedem Namenseintrag in einer Verzeichnisstruktur unabhängig vom Dateityp ein Inode und enthält die entsprechenden Metadaten, sowie einen entsprechenden Verweis auf diese.

Als Metadaten werden in diesem Zusammenhang z. B. Informationen zum Dateityp, der UID und GID des Besitzers sowie der Gruppe, den gesetzten Zugriffsrechte, der Dateigröße, ein Verweis auf die Datenträger-Sektoren einer Datei (die Größe dieser Sektoren ist abhängig vom Dateisystem und der dazugehörigen Formatierung) usw. bezeichnet.



Anwendungsbereich von Inodes

Zum Einsatz kommen diese bei allen unixoiden Betriebssystem wie Linux (und entsprechende Derivate) oder macOS. Bei den Dateisystemen ext2 | ext 3 | ext4 werden diese in Form von Listen/Tabellen als veränderbare Datei-Header direkt bei der Systeminstallation vollständig und unveränderlich angelegt.



Problem-Beispiel

Sie verwenden ein CMS für Ihren Webauftritt mit diversen installierten Plugins, z. B. zum Caching der Webinhalte.

Plötzlich ist Ihre Webseite nicht mehr erreichbar und Sie erhalten eine Fehlermeldung, die suggeriert, dass die Festplatte keinen freien Speicherplatz mehr hat.


Analyse

Daraufhin verbinden Sie sich mit Ihrem Server z. B. via SSH und prüfen folgendermaßen die Festplattenbelegung:

Verbindungsaufbau:

ssh root@sXXXXX.creoline-demo.tld

Prüfung Festplattenbelegung:

df -h

Ausgabe:

Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
udev            1,9G       0  1,9G    0% /dev
tmpfs           392M    532K  391M    1% /run
/dev/sda2        20G    8,5G   11G   46% /
tmpfs           2,0G    1,2M  2,0G    1% /dev/shm
tmpfs           5,0M     24K  5,0M    1% /run/lock
tmpfs           392M       0  392M    0% /run/user/0


Laut der Ausgabe stehen Ihnen noch mehr als 50 % der nutzbaren Festplattenkapazität zur Verfügung, die Festplatte wirkt also beschreibbar. Allerdings ist es nicht möglich, z. B. neue Dateien anzulegen.

Hier sollten Sie prüfen, ob noch genügend Inodes zur Verfügung stehen:

df -i

Ausgabe:

Dateisystem     Inodes IBenutzt   IFrei IUse% Eingehängt auf
udev            496122      362  495760    1% /dev
tmpfs           500931      614  500317    1% /run
/dev/sda2      1310720  1310720       0  100% /
tmpfs           500931        2  500929    1% /dev/shm
tmpfs           500931       34  500897    1% /run/lock
tmpfs           100186       20  100166    1% /run/user/0


Hier können Sie erkennen, dass die Systempartition, die das Wurzelverzeichnis beinhaltet, alle verfügbaren Inodes in Verwendung hat.

Ursache

In diesem Fallbeispiel hat das Cache-Plugin Unmengen kleiner Dateien generiert und wurden nicht automatisch bereinigt, nachdem diese nicht mehr benötigt wurden.

Da eine Datei unabhängig Ihrer Größe immer ein Inode zugewiesen bekommt, kann durch unzählige kleine Dateien der zur Verfügung stehende Pool an Inodes schneller aufgebraucht sein, als die Anzahl der Sektoren, aus denen sich am Ende der belegte Festplattenspeicher errechnet.


Abhilfe schaffen

Sie können sich die Inode-Belegung pro Verzeichnis wie folgt anzeigen lassen:

du -h --inodes --max-depth=1 /var/www/vhosts/


Ausgabe:

36          /var/www/vhosts/system
5           /var/www/vhosts/default
1300000     /var/www/vhosts/sXXXXX.creoline-demo.tld
101         /var/www/vhosts/chroot
9           /var/www/vhosts/.skel
1300000     /var/www/vhosts/


Wechseln Sie als Nächstes in das Verzeichnis /var/www/vhosts/sXXXXX.creoline-demo.tld und wiederholen Sie die vorherige Abfrage:

du -h --inodes --max-depth=1 /var/www/vhosts/sXXXXX.creoline-demo.tld


Diesen Vorgang wiederholen Sie, bis Sie das Verzeichnis gefunden haben, in dem die Inodes durch kleine Dateien gebunden werden.

Sobald Sie dieses gefunden haben, navigieren Sie mit cd in das entsprechende Verzeichnis:

cd /var/www/vhosts/sXXXXX.creoline-demo.tld/httpdocs/demo-cms/plugins/XYZ/beispielcache/

Löschen Sie den Inhalt mit folgendem Befehl:

rm -rf * bzw. rm -rf /var/www/vhosts/sXXXXX.creoline-demo.tld/httpdocs/demo-cms/plugins/XYZ/beispielcache/*


Stellen Sie vor Verwendung des Befehls rm -rf unbedingt sicher, dass Sie sich im richtigen Verzeichnis befinden bzw. dass Sie den korrekten absoluten Pfad angegeben haben, um ungewolltes Löschen von Daten zu vermeiden.


Sobald dieser Vorgang abgeschlossen ist, prüfen Sie erneuert die Inode-Verwendung durch das CMS:

root@sXXXXX:/var/www/vhosts# du -h --inodes --max-depth=1 /var/www/vhosts/
36       /var/www/vhosts/system
5        /var/www/vhosts/default
3,3K     /var/www/vhosts/sXXXXX.creoline-demo.tld
101      /var/www/vhosts/chroot
9        /var/www/vhosts/.skel
3,5K     /var/www/vhosts/


Inode-Belegung Systemweit:

root@sXXXXX:/# df -i
Dateisystem     Inodes IBenutzt   IFrei IUse% Eingehängt auf
udev            496122      362  495760    1% /dev
tmpfs           500931      614  500317    1% /run
/dev/sda2      1310720   190768 1119952   15% /
tmpfs           500931        2  500929    1% /dev/shm
tmpfs           500931       34  500897    1% /run/lock
tmpfs           100186       20  100166    1% /run/user/0
Ähnliche Artikel