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:

[swfl 07:40:56 JPM]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_misisss6-lv_root 135G 25G 104G 19% / tmpfs 12G 0 12G 0% /dev/shm /dev/sda1 485M 69M 392M 15% /boot misisss-nasib3:/home 26T 26T 1.0M 100% /home3 misisss-nas1:/shared 77G 437M 73G 1% /shared misisss-nasib2:/home 15T 15T 95G 100% /home2 You have new mail in /var/spool/mail/swfl  [swfl 07:41:39 JPM]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_misisss6-lv_root 135G 25G 104G 19% / tmpfs 12G 0 12G 0% /dev/shm /dev/sda1 485M 69M 392M 15% /boot misisss-nasib3:/home 26T 26T 1.0M 100% /home3 misisss-nas1:/shared 77G 437M 73G 1% /shared misisss-nasib2:/home 15T 15T 94G 100% /home2  [swfl 07:41:58 JPM]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_misisss6-lv_root 135G 25G 104G 19% / tmpfs 12G 0 12G 0% /dev/shm /dev/sda1 485M 69M 392M 15% /boot misisss-nasib3:/home 26T 21T 4.2T 84% /home3 misisss-nas1:/shared 77G 437M 73G 1% /shared misisss-nasib2:/home 15T 15T 93G 100% /home2 

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.

0
Ü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.