Was sind Inodes?
Ein Inode ist eine Datenstruktur im Dateisystem die die Metadaten (Besitzer, Gruppe, Zugriffsrechte, Speicherort usw.) von Dateien beinhaltet.
Somit wird jede Datei und jedes Verzeichnis durch einen Inode repräsentiert, welche die zuvor genannten Informationen enthält.
Alle "ext" Dateisysteme verwenden Inodes.
- Die Anzahl verfügbarer Inodes wird bei der Erstellung des Dateisystems definiert und lässt sich anschliessend nicht mehr ändern
- Eine ext4-Inode hat eine Grösse von 256 Bytes und belegt daher Speicherplatz welcher nicht anderweitig genutzt werden kann
- Wir verwenden das bei ext4 standardmässig eingestellte "bytes-per-inode" Verhältnis von einer Inode je 16 KiB Speicherplatz
Somit stehen bei einer 100 GB grossen ext4 Partition rund 6 Millionen Inodes zur Verfügung.
Sollten sich die verfügbaren Inodes einmal dem Ende neigen, so informieren wir Kunden eines Managed Server automatisch per E-Mail bei 80 bzw. 90% Inode-Nutzung.
Sollten Sie eine solche Benachrichtigung erhalten haben, können Sie mit folgendem Befehl herausfinden an welchen Stellen im Dateisystem diese belegt werden:
www-data@myserver:~ find /home /tmp -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -nr | head -n 20
Eine Übersicht über die aktuelle Inode Belegung lässt sich mit folgenden Befehl anzeigen:
df -ih
Üblicherweise handelt es sich bei einer erhöhten Inode-Nutzung um viele kleine Dateien, bspw. temporäre Dateien wie Sessions oder einen Cache.
Für solche Fälle empfehlen wir, mit einem Cronjob Dateien älter als 14 Tage automatisch zu löschen:
0 3 * * * /usr/bin/find /path/to/files* -type f -mtime +14 -delete > /dev/null 2>&1
Zu Testzwecken führen Sie den Befehl bitte vorab ohne die Option -delete
aus. Denn diese entfernt gefundene Daten im angegebenen Pfad ohne Rückfrage.
Weitere Informationen zur Einrichtung eines Cronjob finden Sie im entsprechenden Support-Artikel.