Nach dem Löschen vieler großer Dateien erhöht sich der freie Speicherplatz mit großer Verzögerung

3190
Markus N.

Gestern habe ich 71 GB Dateien auf meinem Heim- / Medienserver gelöscht.
Freier
Speicherplatz vor: 117 GB Freier Speicherplatz nach: 126 GB

Anstatt 71 GB zusätzlichen freien Speicherplatz zu haben, hatte ich nur 9 GB. Ich habe noch einmal geprüft, dass keine Dateien geöffnet waren und ich wirklich 71 GB gelöscht habe und der freie Speicherplatz wirklich nur um 9 GB gestiegen ist.

Ich habe auch versucht zu synchronisieren, aber keinen Effekt.

Dies ist nicht das erste Mal, dass es passiert. Tatsächlich habe ich dieses Verhalten seit Jahren immer wieder gesehen. Zuerst auf Ext3, jetzt auf Ext4.
In diesem Fall kann ich den freien Speicherplatz wieder freigeben, indem ich das Dateisystem abmelden und dann erneut bereitstellen kann. In diesen Fällen dauert das Aufheben der Bereitstellung bis zu 2 Minuten, und das fast ohne Zeit.

Heutzutage kann ich das Dateisystem nicht mehr einfach aushängen und erneut einhängen, da es ständig mit meiner Videorekordersoftware, dem owncloud-Server für meine Familie und einigen weiteren Diensten beschäftigt ist, die ich bisher nicht hatte. Und ich möchte nicht um 3 Uhr nachts aufstehen, nur um auszusteigen und wieder aufzusteigen.

Nein, das Dienstprogramm 'at' ist nicht geeignet, da einer der Dienste nicht wiederaufnehmbare lang laufende Aufgaben ausführt und daher eine manuelle Statusprüfung benötigt, um einen guten Zeitpunkt zu finden, an dem der Dienst heruntergefahren werden kann, dh eine Aufgabe wurde gerade beendet.

Aber heute morgen habe ich bemerkt, dass der Platz über Nacht frei wurde. Sieht für mich so aus, als ob es eine Art Aufräumaktion gegeben hätte, und dies kann das Gleiche sein, das die zusätzliche Zeit in Anspruch nimmt, wenn Sie das Aufhängen aufheben.

Bisher ist mir dieses Verhalten nur beim Löschen einer großen Datenmenge aufgefallen. Auf der anderen Seite bin ich nicht sicher, ob es regelmäßig geschieht und der Unterschied ist einfach zu gering, um es zu bemerken.

Das Dateisystem wurde mit 0% für root ( mkfs -m 0) reserviert . Gemäß fsck -f(ich mache das immer zwischen Unmount und Remount) ist das Dateisystem nicht beschädigt, und laut erweitertem SMART-Diagnose-Test ist die Hardware auch in Ordnung.

[BEARBEITEN]

tune2fs 1.42 (29-Nov-2011)  Filesystem volume name: bigdata  Last mounted on: /bigdata  Filesystem UUID: 6aebd17a-e064-41dc-9c68-c9a3acbe4f66  Filesystem magic number: 0xEF53  Filesystem revision #: 1 (dynamic)  Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize  Filesystem flags: signed_directory_hash  Default mount options: user_xattr acl  Filesystem state: clean  Errors behavior: Continue  Filesystem OS type: Linux  Inode count: 121413632  Block count: 485645568  Reserved block count: 0  Free blocks: 29081276  Free inodes: 121382378  First block: 0  Block size: 4096  Fragment size: 4096  Reserved GDT blocks: 908  Blocks per group: 32768  Fragments per group: 32768  Inodes per group: 8192  Inode blocks per group: 512  Flex block group size: 16  Filesystem created: Tue Dec 25 23:42:35 2012  Last mount time: Fri Jan 3 17:37:36 2014  Last write time: Fri Jan 3 17:37:36 2014  Mount count: 37  Maximum mount count: -1  Last checked: Thu Apr 18 17:03:40 2013  Check interval: 0 (<none>)  Lifetime writes: 14 TB  Reserved blocks uid: 0 (user root)  Reserved blocks gid: 0 (group root)  First inode: 11  Inode size: 256  Required extra isize: 28  Desired extra isize: 28  Journal inode: 8  Default directory hash: half_md4  Directory Hash Seed: be2b977e-5127-4843-9123-fe33b6d7b573  Journal backup: inode blocks  

[/BEARBEITEN]

Also hier meine 2 Fragen:

  1. Was passiert hier? Warum wird bei umount oder verzögert Platz frei gemacht, anstatt sofort beim Löschen?
  2. Gibt es etwas, was ich tun kann, um den Speicherplatz jetzt freizugeben, ohne die Bereitstellung aufzulösen und erneut zu starten?
15
Das riecht mir sehr nach, als wären die Dateien immer noch offen. Wie stellen Sie sicher, dass nach dem Löschen keine der Dateien geöffnet ist? "lsof | grep -i gelöscht` ist normalerweise der beste Weg, dies zu überprüfen. Garrett vor 10 Jahren 0
Normalerweise können Sie kein Dateisystem aufhängen, wenn Dateien geöffnet sind. Wenn umount erfolgreich ist, gibt es keine offenen Dateien. Außer gestern habe ich immer den umount, re-mount Zyklus gemacht, als ich das bemerkte. Markus N. vor 10 Jahren 2
Dies ist in der Tat der Fall. Was sind Ihre ext4-Montageoptionen? Garrett vor 10 Jahren 0
Noatime, Standardeinstellungen Markus N. vor 10 Jahren 0
Haben Sie eine Art Backup-System, das Kopien der Dateien enthält oder alternativ Hardlinks zu ihnen? derobert vor 10 Jahren 0
Wie prüft man den freien Speicherplatz? Verwenden Sie eine Art Schnittstelle? Braiam vor 10 Jahren 0
Was ist die zugrunde liegende HDD-Technologie? SATA-Laufwerke? SSD? Was ist deine Distro, die du benutzt? slm vor 10 Jahren 0
Was ist die Art der Dateien, die Sie löschen? Sind diese Image-Dateien für VMs? slm vor 10 Jahren 0
Können wir auch die Ausgabe von sudo tune2fs -l bekommen? "? slm vor 10 Jahren 0
@derobert Nein, kein Backup-System läuft Markus N. vor 10 Jahren 0
@Braiam freier Speicherplatz wird mit df -h und auch mit einem Taskleisten-Widget überprüft Markus N. vor 10 Jahren 0
@sim ist ein SATA-Laufwerk, auf dem Xubuntu 12.04 installiert ist. Bei den Dateien handelt es sich (meistens) um Fernsehsendungen, die mit der VDR-Videorecorder-Software aufgenommen wurden. Ich bin mir sicher, dass VDR die Dateien nach Abschluss der Aufnahme nicht geöffnet hält. Außerdem verschiebe ich regelmäßig Dateien aus dem VDR-Aufnahmeverzeichnis und starte den VDR neu. Markus N. vor 10 Jahren 0
Hmm, zufälliger Stich bei der Fehlerbehebung: Bevor Sie löschen, machen Sie erst nach dem Löschen von `sudo du -a /> vorher` dasselbe aber in eine andere Datei. Schließlich am nächsten Morgen (oder wenn der Speicherplatz wieder frei wird) wieder eine dritte Datei. Vergleichen Sie sie dann (beispielsweise mit `diff`) und prüfen Sie, ob der Speicherplatz tatsächlich von einer Datei belegt wird. PS: Bitte bestätigen Sie, dass Sie ext4 verwenden und nicht etwa btrfs. derobert vor 10 Jahren 0
Das mache ich normalerweise: du -sh / bigdata / dir / to / delete; df -h / bigdata; rm -rf / bigdata / dir / to / delete; df -h / bigdata und am nächsten morgen wieder df -h / bigdata. Außerdem schaue ich mir das Widget für freien Speicherplatz in der XFCE-Taskleiste an. Markus N. vor 10 Jahren 0
@sim Ich habe die Ausgabe von tune2fs -l meiner Frage hinzugefügt. Markus N. vor 10 Jahren 0

1 Antwort auf die Frage

9
BillThor

Es gibt zwei Faktoren, die miteinander interagieren können.

  • Im Gegensatz zu Windows können Sie geöffnete Dateien löschen. Wenn Sie einen Film löschen, der gerade gestreamt wird, wird er aus dem Verzeichnis entfernt, bleibt jedoch als Datei vorhanden, bis das Streaming-Programm ihn schließt. Sobald die Streaming-Software sie schließt, wird der Speicherplatz freigegeben. Der fuser -mBefehl kann verwendet werden, um die Prozess-ID aller Prozesse mit geöffneten Dateien zu ermitteln. Einige Programme schließen Dateien möglicherweise nicht sofort, wenn sie damit fertig sind.

  • Dies sind beide Journal-Dateisysteme. Änderungen werden in ein Journal geschrieben und dann festgeschrieben. Es kann eine Weile dauern, bis die Änderungen festgeschrieben sind. Das Betriebssystem wird häufig Festplattenänderungen zwischenspeichern und nur periodisch Änderungen an der Festplatte vornehmen. Beim Ausführen des syncBefehls sollten alle anstehenden Änderungen auf der Festplatte gelöscht werden. Durch das Mounten der Festplatte mit der syncOption wird die Geschwindigkeit der Festplatte verbessert, die Festplatte wird jedoch härter.

Ja, ich weiß, dass ich Dateien löschen kann, die geöffnet sind. Ich kenne die Beziehungen zwischen Verzeichniseinträgen und Inodes. Ich bin mir aber sicher, dass die Dateien nicht geöffnet waren, sonst könnte ich das Dateisystem nicht umhängen ... Aber Ihr zweiter Punkt erscheint interessant. Kann es wirklich mehr als 30 Minuten dauern, bis gelöschte Dateien festgeschrieben werden? 30 Minuten ist die Zeit zwischen dem Löschen der Dateien und dem Gehen vorgestern, also kann ich nicht sagen, wie lange es wirklich gedauert hat. Markus N. vor 10 Jahren 1
@ MarkusN. Einige Betriebssysteme speichern viele Dateisystemdaten zwischen. Wenn der Speicherplatz nicht benötigt wird, schreiben sie möglicherweise genügend Transaktionsprotokolldaten, um sicherzustellen, dass der Speicherplatz freigegeben wird. Nehmen Sie sich jedoch Zeit, um den Speicherplatz freizugeben. Wenn Sie einen USB-Stick nach dem Schreiben vieler Daten abmelden, kann es einige Zeit dauern, bis die Daten gelöscht werden, bevor Sie sie entfernen können. Es ist ein Kompromiss zwischen dem sicheren Schreiben auf die Festplatte und dem Verzögern anderer Aktionen. BillThor vor 10 Jahren 1
Danke für die Bearbeitung. Aber wie Sie in meiner ursprünglichen Frage sehen, habe ich die Synchronisation bereits ohne Effekt versucht. Markus N. vor 10 Jahren 0
@ MarkusN. Ich glaube nicht, dass die Synchronisierung so effektiv ist wie früher. Es stellt wahrscheinlich nur sicher, dass die Journaldaten geschrieben werden, und nicht unbedingt, dass alle Änderungen festgeschrieben werden. Unmount / mount erzwingt die Anwendung des Journals. Ich kenne die Priorität der Löschvorgänge nicht, aber ich würde erwarten, dass sie relativ niedrig ist. Durch Erkundung des Codes können weitere Fragen beantwortet werden. BillThor vor 10 Jahren 1
Klingt für mich vernünftig. Markus N. vor 10 Jahren 0