Ein Freund von mir, der gerne in der Linux-Umgebung programmiert, aber nicht viel über die Verwaltung von Linux weiß, stieß kürzlich auf ein Problem, bei dem sein Betriebssystem (Ubuntu) "nicht genügend Speicherplatz auf XXX-Volume" meldete. Aber als er die Lautstärke überprüfte, waren noch 700 GB übrig. Nach viel Zeitverschwendung konnte er schließlich herausfinden, dass er keine Inodes mehr hatte. (Er hat viele kleine inkrementelle Updates von einem Backup-System auf diesem Volume gespeichert und alle seine Inodes durchgebrannt.)
Er fragte mich, warum der Linux-Kernel die Fehlermeldung ("out of disk space") gemeldet habe, anstatt sie ordnungsgemäß zu melden ("out of inodes"). Ich wusste es nicht, also dachte ich mir, ich würde StackExchange fragen.
Weiß jemand warum das passiert? und warum wurde es nach all den Jahren nicht behoben? (Ich erinnere mich an einen anderen Freund, der mir 1995 von diesem Problem erzählte.)
quelle
ext4
Inodes zur Erstellungszeit von fs wie ext2 / 3 zu und kann später nicht mehr geändert werden.Ich gehe davon aus, dass Ihr Freund ein ext fs verwendet, weil es eines der wenigen vernünftigen fs ist, denen die Inodes ausgehen können.
Es scheint, dass Ihr Freund entweder an seinem Dateisystem herumgespielt und es kaputt gemacht hat oder ein lächerlich großes Volumen von mehreren TB hat. Inodes sind keine einmalige Sache. Wenn ihm wirklich die Inodes ausgehen, bedeutet dies, dass er lächerlich viele Dateien und Verzeichnisse hat ... was auf einem Volume mit> 4 TB (fundierte Vermutung) passieren kann, auf dem "nur" 700 GB frei sind. Für die ext-Familie von fs wird die Anzahl der Inodes bestimmt, wenn das fs erstellt wird. Von der
mkfs.ext4
Manpage:Um den Rest dieser Antwort zu verkürzen: Dies bedeutet, dass
mkfs
entweder ein solches Verhältnis angegeben ist oder eines angenommen wird. Wenn Ihr Freund das fs anders verwendet als angenommen, kann das gewählte Verhältnis für seinen Anwendungsfall falsch sein und er erhält diesen Fehler ... Das Auffüllen eines einzelnen Multi-TB-Volumes mit Tonnen kleiner Dateien kann als solches gelten.Verwendet Ihr Freund eine Desktop-Umgebung, die das Konzept eines "Papierkorbs" für Dateien oder andere Formen von Sicherungen implementiert, die möglicherweise große Mengen an Dateien erstellen? Vielleicht kann er sein Problem beheben, indem er einfach nicht benötigte Dateien entfernt.
Ich erinnere mich an dieses Problem mit ext2 aus der Zeit, als Kernel 2.4 noch ziemlich neu war. Als Faustregel verwende ich XFS immer für Volumes, die im Vergleich zu den derzeit üblichen sehr groß sind. Derzeit würde ich alles zwischen 250 GB und 1 TB für ein einzelnes Volume als üblich bezeichnen, und wir können 4 TB-Festplatten kaufen. Für alles> 3 TB würde ich lieber XFS als ext verwenden. Nur eine Faustregel, aber die Inodes sind schon lange nicht mehr ausgegangen ...
quelle
tune2fs -l /dev/sda1
) und habe zufällig ein Verhältnis von 1 Inode pro vier Blöcke und jeder Block ist 1 KB groß. Wie viel dies als "Standard" angesehen werden kann, weiß ich jedoch nicht.