Ich hatte letzte Woche ein (für mich neues) Problem. Ich habe ein ext4 (Fedora 15) Dateisystem. Die Anwendung, die auf dem Server ausgeführt wird, wurde plötzlich gestoppt. Ich konnte das Problem auf den ersten Blick nicht finden.
df
zeigte 50% verfügbaren Speicherplatz. Nachdem ich ungefähr eine Stunde lang gesucht hatte, sah ich einen Forumsbeitrag, in dem der Typ verwendet hat df -i
. Die Option sucht nach Inodes. Das System hatte keine Inodes mehr, ein einfaches Problem, das ich nicht erkannte. Die Partition hatte nur 3.2M Inodes.
Jetzt sind meine Fragen: Kann ich das System mehr Inodes haben lassen? Sollte / kann es beim Formatieren der Festplatte eingestellt werden? Wie viele Dateien kann ich mit den 3.2M-Inodes haben?
Antworten:
Es scheint, dass Sie viel mehr Dateien als erwartet haben.
Ich weiß nicht, ob es eine Lösung gibt, um die Größe der Inode-Tabelle dynamisch zu ändern. Ich fürchte, Sie müssen Ihre Daten sichern, ein neues Dateisystem erstellen und Ihre Daten wiederherstellen.
Um ein neues Dateisystem mit einer so großen Inode-Tabelle zu erstellen, müssen Sie die Option '-N' von mke2fs (8) verwenden.
Ich würde empfehlen, zuerst die Option '-n' zu verwenden (die das fs nicht erstellt, aber die nützlichen Informationen anzeigt), damit Sie die geschätzte Anzahl der Inodes erhalten. Verwenden Sie dann bei Bedarf '-N', um Ihr Dateisystem mit einer bestimmten Inode-Nummer zu erstellen.
quelle
mke2fs -i
die Anzahl der Inodes festlegen. Die Dokumentation besagt, dass es nicht möglich ist, die Anzahl der Inodes in einem Dateisystem zu erhöhen, nachdem es erstellt wurde.-i
Optionen geben die Größe des Inodes an , nicht wie viele. Die-N
Option legt die Anzahl der Inodes fest.Als eine weitere Problemumgehung könnte ich vorschlagen, riesige Dateisammlungen in ein unkomprimiertes (!)
tar
Archiv zu packen und es dannarchivemount
als Dateisystem bereitzustellen. Ein Tar-Archiv ist besser für die Freigabe als ein Dateisystem-Image und bietet eine ähnliche Leistung beim Sichern in einer Cloud oder einem anderen Speicher.Wenn die Sammlung schreibgeschützt sein soll,
squashfs
kann dies eine Option sein, für die jedoch bestimmte Optionen im Kernel aktiviert sein müssen. Diexz
Komprimierung ist auch für tar mit derselben Leistung verfügbar.quelle
Mit 3,2 Millionen Inodes können Sie insgesamt 3,2 Millionen Dateien und Verzeichnisse haben (mehrere Hardlinks zu einer Datei verwenden jedoch nur einen Inode).
Ja, es kann festgelegt werden, wenn ein Dateisystem auf der Partition erstellt wird. Die Optionen
-T usage-type
,-N number-of-inodes
oder-i bytes-per-inode
können alle die Anzahl der Inodes festlegen. Ich benutze im Allgemeinen-i
, nachdem ich die Ausgabe vondu -s
undfind | wc -l
für eine ähnliche Sammlung von Dateien verglichen habe und ein wenig Spielraum zugelassen habe.Nein, es kann nicht direkt in einem vorhandenen Dateisystem geändert werden. Jedoch:
resize2fs
, um das Dateisystem zu erweitern. Dies fügt ungefähr im Verhältnis zum hinzugefügten Raum mehr Inodes hinzu. Wenn Sie vermeiden möchten, dass die Inodes vor dem Speicherplatz ausgehen, vorausgesetzt, dass zukünftige Dateien im Durchschnitt ungefähr dieselbe Größe haben, legen Sie mit einen ausreichend hohen Prozentsatz für reservierte Blöcke festtune2fs -m
.quelle
Ich habe eine alternative Lösung für diese Situation. Nehmen wir an, Sie haben 1000 Inodes in einer Partition von 10G. Aufgrund der Beschränkung der Inodes wird jedoch nicht angenommen, dass Sie den gesamten Raum der Partition verwenden . In dieser Lösung können Sie jedoch den verbleibenden Speicherplatz der Partition nutzen, ohne sie zu formatieren .
zur dauerhaften Montage
quelle
$
) einzufügen, um klar zwischen Befehlen und Ausgaben zu unterscheiden (wenn es sich nur um Befehle handelt, wird die Eingabeaufforderung normalerweise weggelassen). Ich habe auch das SCHREIEN in der Fettdruckphase geändert, und ich denke, das war deine Absicht. Sie können die Änderungen rückgängig machen, wenn ich die Dinge falsch dargestellt habeVor kurzem trat dieses Problem bei Verwendung von apt oder aptitude upgrade auf.
Befehl ausgegeben:
Die meisten Dateien befanden sich in Unterordnern für verschiedene Kernelversionen innerhalb von:
Entfernte diese Unterordner und Inode-Problem wurde behoben.
quelle
du
Befehl. Die Verwendung bezieht sich auf das Stammverzeichnis des Dateisystems im obigen Beispiel und bezieht sich nur auf den Speicherplatz. Die Ausgabe wird an die Sortierung weitergeleitet, um anzuzeigen, welche Verzeichnisse die meisten Dateien enthielten. Im obigen Beispiel wird keine Zählung für Dateien durchgeführt, der Teil "Wie viele Dateien" Ihrer Frage. Kernel-Quellen waren der Schuldige, der in derdu
Ausgabe gezeigt wurde ; zB viele kleine Dateien, Unterordner aus früheren Zusammenstellungen, die sich ideal zum Entfernen eignen, um Inodes freizugeben. Es bleibt noch eine manuelle, menschliche Überprüfung derdu
Ausgabe,/usr/src/linux-headers
war dann offensichtlich.versuche
du -s --inodes * 2>/dev/null |sort -g
die cd in das letzte ausgabeverzeichnis und wiederhole es.Vollständige Offenlegung: Nicht alle Betriebssysteme unterstützen den
--inodes
Befehl du (mein Mac OS nicht), aber viele Linux-Betriebssysteme.quelle