it-swarm.com.de

Gibt es irgendwelche Nachteile bei der Erstellung von ext4-Dateisystemen mit maximaler Anzahl von Inodes?

Gibt es irgendwelche Nachteile beim Erstellen von ext4-Dateisystemen mit 2 ^ 32-1-Inodes?

Ich habe ein 1-TB-Laufwerk und möchte 800 Millionen bis 1,5 Milliarden kleine Dateien darauf speichern. Es scheint, dass der Maximalwert 4 Milliarden beträgt, also frage ich mich, ob ich ihn beim Erstellen eines fs einfach auf den Maximalwert setzen könnte oder ob ich eine andere Lösung finden sollte.

4
Fluffy

Entsprechend ähnlicher Fragen zu Stack Overflow und nix & Linux (siehe unten) ist es eine schlechte Idee, die Anzahl der Inodes auf einem ext4-Dateisystem zu maximieren.

Verwenden Sie besser ein anderes Dateisystem oder teilen Sie Ihre Festplatte in mehrere Dateisysteme auf.

Zusammenfassen:

  • Ein Inode belegt 256 Bytes. Es kann auf 128 konfiguriert werden, obwohl:

    2³² inodes × 256 bytes each = 1 TB
    
  • Beim Erstellen eines ext4-Dateisystems können Sie den Verwendungstyp wie in /etc/mke2fs.conf definiert angeben:

    mkfs.ext4 -T usage-type /dev/something
    

    Zum Speichern vieler kleiner Dateien kann der Typ small verwendet werden:

    small = {
        blocksize = 1024
        inode_size = 128
        inode_ratio = 4096
    }
    

    Dies bedeutet: Für jeweils 4096 Bytes Festplattenspeicher (Dateisystemgröße) wird ein Inode reserviert, von dem jeder eine Größe von 128 Bytes hat. Der Befehl mkfs.ext4 -T small /dev/something würde somit 244 Millionen Inodes auf einem 1-TB-Dateisystem erstellen, das 31 GB belegt. Diese 244 Millionen Dateien belegen mindestens 250 GB (jeweils mindestens 1024 Byte).

  • Um 1 Milliarde Inodes mit dem geringen Platzbedarf (128 Byte) zu speichern, würden Sie nur für die Inodes 128 GB benötigen. Wenn die kleinstmögliche Blockgröße (1024 gemäß der Manpage von mk2efs) verwendet wird, würden diese 1 Milliarde Dateien mindestens 1 TB belegen (aber denken Sie daran, dass Sie nur noch 872 GB haben, da die Inodes 128 GB haben).

  • Die kleinstmögliche Blockgröße für ext4 beträgt 1024 Bytes. Daher können Sie nicht mehr als 1 TB/1024 = 1 Milliarde Dateien speichern, und es ist sinnlos, mehr Inodes zu haben.

  • Als allgemeine Faustregel sollte der inode_ratio nicht kleiner als der blocksize sein, da Sie nicht (einfach) mehr als eine Datei in einem Block speichern können.

  • Es ist möglich, die ersten 60 Bytes einer Datei direkt im Inode zu speichern, wenn das Dateisystem so konfiguriert ist. In diesem Fall würde die Datei keinen (regulären) Block belegen. Lesen Sie über solche Inline-Daten hier aber beachten Sie auch die Inode-Größe .

  • Von einem Kommentar zum & L-Frage :

    Zu viele Inodes sind mit Sicherheit mit hohen Kosten verbunden, sie belegen selbst Speicherplatz und glauben mir, dass fsck-Leistung absolut seriös ist. Wir sprechen von praktisch exponentiellen Verlangsamungen, wie 30 Sekunden gegenüber 2 Tagen ... und dies ist I/O-gebunden. Ganz zu schweigen von Verlangsamungen der Dateiliste, Indizierung ... usw.


Verweise:

2
PerlDuck