Ext4-Verzeichnislimit

Ext4-Verzeichnislimit

Ich habe einen Ubuntu 14.04-Server, der kein neues Verzeichnis über das 65.000-Verzeichnis hinaus erstellen kann. Ich habe einen ausgeführt tune2fs -lund kann sehen, dass das dir_nlinkFlag gesetzt ist. Weiß jemand, was sonst noch überprüft werden kann, damit dies geschieht? Ich habe viele andere Klone dieser Serverkonfiguration, die alle die 65.000-Marke überschritten haben und wie erwartet funktionieren. Ich habe die tune2fs -lAusgaben verglichen und sie scheinen gleich zu sein. Ich habe immer noch mehrere Millionen freie Inodes und Blöcke. Ich habe das Dateisystem ausgehängt und wieder eingehängt und nichts hat sich geändert.

Antwort1

Ext4-Verzeichnislimit

Ext4 unterstützt zwei Arten von Verzeichnissen:

  • traditionelle, fast lineare Verzeichnisse
  • Hash-basierte Verzeichnisse

Lineare Verzeichnisse haben ein Limit von 65000 Links, d. h. ungefähr so ​​viele Unterverzeichnisse sind möglich. Hash-basierte Verzeichnisse haben kein Limit.

Beim Erstellen eines neuen Dateisystems sind Hash-Verzeichnisse die Standardeinstellung. Wenn Ihre Verzeichnisse immer noch linear sind, liegt das wahrscheinlich daran, dass Sie eine alte Ext3-Partition aktualisiert haben. (Ext3 erhielt die Funktion für hashbasierte Verzeichnisse erst später.)

Testen Sie, ob ein Verzeichnis nahezu linear oder hash-basiert ist

$ sudo debugfs /dev/partition
$ htree /
htree: Not a hash-indexed directory

Konvertierung

  1. Unmounten der Partition
  2. Aktivieren Sie die Funktionen dir_index(Hash-basierte Verzeichnisse) und dir_nlink(unbegrenzte Links).

    sudo tune2fs -O dir_index,dir_nlink /dev/partition
    

Alle neu erstellten Verzeichnisse können jetzt eine unbegrenzte Anzahl an Unterverzeichnissen enthalten.

Wenn Sie bestehende Verzeichnisse konvertieren möchten, gehen Sie wie folgt vor:

  1. Unmounten Sie die Partition (wichtig zum Schutz vor Datenverlust)
  2. Weisen Sie fsck an, die Verzeichnisindizes neu zu erstellen:

    sudo e2fsck -f -D /dev/partition
    

-fzwingt fsck, die Festplatte zu überprüfen, auch wenn sie sich im sauberen Zustand befindet

-Dweist e2fsck an, die Indizes neu zu erstellen:

Diese Option bewirkt, dass e2fsck versucht, alle Verzeichnisse zu optimieren, entweder durch Neuindizierung, wenn das Dateisystem die Verzeichnisindizierung unterstützt, oder durch Sortieren und Komprimieren der Verzeichnisse für kleinere Verzeichnisse oder für Dateisysteme, die herkömmliche lineare Verzeichnisse verwenden.

verwandte Informationen