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 -l
und kann sehen, dass das dir_nlink
Flag 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 -l
Ausgaben 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
- Unmounten der Partition
Aktivieren Sie die Funktionen
dir_index
(Hash-basierte Verzeichnisse) unddir_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:
- Unmounten Sie die Partition (wichtig zum Schutz vor Datenverlust)
Weisen Sie fsck an, die Verzeichnisindizes neu zu erstellen:
sudo e2fsck -f -D /dev/partition
-f
zwingt fsck, die Festplatte zu überprüfen, auch wenn sie sich im sauberen Zustand befindet
-D
weist 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.