Linux denkt vorübergehend, dass die Festplatte voll ist
533
TTT
Ich arbeite an einem Linux-Server mit CentOS 6.5 und einem NAS NFS in einem QDR-Infiniband-Netzwerk. Ich führe ein bashSkript aus, das im Wesentlichen ein Verzeichnis erstellt, Symlinks darin erstellt und catin jedes Verzeichnis eine kleine Datei zusammenfügt. Dies geschieht für einige hundert Verzeichnisse.
Ich habe im Ausgabeprotokoll festgestellt, dass einer der Symlinks und der darauffolgende catnicht ausgeführt wurden und behauptete, dass der Datenträger voll ist. Es war ganz offensichtlich nicht. Mit dem gleichen Skript für ein paar tausend Verzeichnisse bekam ich eine sehr große Anzahl dieser Nachrichten. Ich überprüfte und die Platte schien voll zu sein, so dass ich mein Skript sofort abgebrochen habe, aber nach ein paar Minuten hat sich die Platte wieder normalisiert.
Hier sind die sequentiellen dfBefehle, die ich sah, der erste, während das Skript lief, der zweite kurz nach dem Töten, und der dritte wenige Sekunden später /home3(ein NAS) ist der, an dem ich gerade arbeite:
Zu dieser Zeit gab es auf den meisten Kernen relativ wenig CPU-Auslastung und eine geringe bis mittlere Festplattenauslastung. Ich habe keine Überwachungssoftware, daher kann ich keine IOps-Zahlen oder ähnliches geben, aber ich habe ähnliche Arbeit geleistet, habe aber mit einer viel höheren Intensität ohne Probleme gearbeitet.
Kurz gesagt, es wäre sehr schwer zu glauben, dass ich mit der Arbeit irgendeinen Teil des Systems überwältigt habe. Breadcrumbs, wo nach Problemen gesucht werden soll?
AKTUALISIERUNG 1 Um watch 'df -h; df -i'die Inodes und die Festplattennutzung zu verfolgen, kann ich feststellen, dass der Festplattenspeicher sprunghaft sinkt (die Dinge sind ~ 5 Sekunden in Ordnung, dann verschwinden mehrere TB innerhalb von 10-20 Sekunden), bis ich die Fehler bekomme, aber in odes isn nicht so viel fallen.
Ich kann in odes sehen, hat aber eine ziemlich hohe Auslastung (30-70%). Ich habe ~ 16 Milliarden Inodes und erstelle ~ 40000 Dateien / Verzeichnisse. Nachdem ich den Vorgang beendet habe, steigt der Speicherplatz für 10-20 Sekunden langsam an (einige GB) und springt dann ein paar TB wieder auf das, was er ursprünglich war.
Überprüfen Sie die Inode-Erschöpfung.
Daniel B vor 9 Jahren
0
1 Antwort auf die Frage
1
TTT
Durch die Feststellung, dass der Speicherplatz innerhalb von 5 Minuten frei geworden war, konnten wir das Problem identifizieren. Dies ist ein Verhalten, das möglicherweise nur für das Dateisystem, das wir verwenden, das XFS-Dateisystem, ist .
Mit XFS können Sie eine vorab zugewiesene Dateigröße angeben. Wir haben das Dateisystem mit einem Dateisystem gemountet allocsize=1G, da dieses Dateisystem für große Dateien konzipiert wurde und wir eine Fragmentierung vermeiden wollten. Sie können auch eine Aktualisierungshäufigkeit für das Dateisystem angeben, um die Verwendung der zuvor zugewiesenen Werte zu ändern. Der Standardwert von 5 Minuten war der Grund, warum wir dieses zyklische Verhalten gesehen haben. Einige verwandte Informationen zu diesem Verhalten finden Sie hier .
Wenn ich also eine Datei erstellt und dann eine Datei ausgeführt habe, catreichte diese zweite Aktion für die Datei aus, um das System zu veranlassen, dieser Datei 1 GB im Voraus zuzuweisen. Das Durchlaufen mehrerer tausend solcher Dateien mit sehr hoher Geschwindigkeit führte dazu, dass der gesamte Speicherplatz erschöpft zu sein schien, bevor die Speichereinheit diese Zuordnungen anpassen konnte.
Wir haben diese Mount-Option entfernt, damit das Dateisystem mit der dynamischen Vorbelegung arbeiten kann, die intelligentere Informationen zu kleineren Dateien und der verfügbaren Dateisystemkapazität bietet.