Nach dem Löschen vieler großer Dateien nimmt der freie Speicherplatz mit einer großen Verzögerung zu

15

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 doppelt überprüft, dass keine Dateien geöffnet waren und ich wirklich 71 GB gelöscht habe und der freie Speicherplatz wirklich nur 9 GB vergrößert hat.

Ich habe auch versucht zu synchronisieren, aber keinen Effekt.

Dies ist nicht das erste Mal, dass es passiert. In der Tat habe ich dieses Verhalten seit Jahren hin und wieder gesehen. Zuerst auf ext3, jetzt auf ext4.
In diesem Fall kann ich den freien Speicherplatz zurückfordern, indem ich das Dateisystem aushänge und wieder einhänge. In diesen Fällen dauert das Abmelden bis zu 2 Minuten, anstatt fast ohne Zeitaufwand.

Heutzutage kann ich das Dateisystem nicht einfach aushängen und wieder einhängen, da es permanent mit meiner Videorecorder-Software, dem Owncloud-Server für meine Familie und einigen weiteren Diensten, die ich bisher nicht hatte, ausgelastet ist. Und ich möchte nicht um 3 Uhr nachts aufstehen, nur um abzusteigen und wieder abzusteigen.

Nein, das Dienstprogramm 'at' kann nicht ausgeführt werden, da einer der Dienste nicht fortsetzbare Aufgaben mit langer Laufzeit ausführt und daher eine manuelle Statusprüfung benötigt, um einen guten Zeitpunkt zu finden, an dem er heruntergefahren werden kann, dh eine Aufgabe wurde gerade beendet.

Aber heute Morgen ist mir aufgefallen, dass der Platz über Nacht freigegeben wurde. Sieht für mich so aus, als gäbe es eine Art Bereinigung, und dies ist möglicherweise dasselbe, was beim Abhängen zusätzliche Zeit in Anspruch nimmt.

Bisher habe ich dieses Verhalten nur beim Löschen einer großen Datenmenge bemerkt. Andererseits bin ich mir nicht sicher, ob es regelmäßig passiert und der Unterschied einfach zu gering ist, um es zu bemerken.

Das Dateisystem wurde mit 0% erstellt, die für root ( mkfs -m 0) reserviert sind . Laut fsck -f(ich mache das immer zwischen Unmount und Remount) ist das Dateisystem nicht beschädigt und laut erweitertem SMART Diagnostics-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 sind meine 2 Fragen:

  1. Was passiert hier? Warum wird bei umount oder mit einer Verzögerung Speicherplatz freigegeben, anstatt sofort bei delete?
  2. Gibt es etwas , was ich kann auszulösen tun , den Raum zu befreien jetzt ohne Abhängen und erneuten Anhang?
Markus N.
quelle
Das riecht für mich sehr nach einer offenen Datei. Wie bestätigen Sie, dass keine der Dateien nach dem Löschen geöffnet ist? lsof | grep -i deletedDies lässt sich in der Regel am besten überprüfen.
Garrett
2
Normalerweise können Sie ein Dateisystem nicht ummounten, wenn Dateien geöffnet sind. Wenn umount erfolgreich ist, sind keine Dateien geöffnet. Außer gestern habe ich immer den Umount- und Re-Mount-Zyklus durchgeführt, als ich das bemerkte.
Markus N.
Dies ist in der Tat der Fall. Was sind Ihre ext4-Mount-Optionen?
Garrett
Noatime, Standardwerte
Markus N.
Haben Sie ein Backup-System, auf dem möglicherweise Kopien der Dateien oder Hardlinks zu diesen Dateien gespeichert werden?
Derobert

Antworten:

9

Es gibt zwei Faktoren, die zusammenwirken können.

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

  • Dies sind beide Journaled File-Systeme. Änderungen werden in ein Journal geschrieben und dann festgeschrieben. Es kann eine Weile dauern, bis die Änderungen festgeschrieben sind. Das Betriebssystem speichert häufig Änderungen an der Festplatte zwischen und schreibt Änderungen nur in regelmäßigen Abständen fest. Das Ausführen des syncBefehls sollte alle ausstehenden Änderungen auf der Festplatte löschen. Wenn Sie die Festplatte mit dieser syncOption einbinden, wird die Geschwindigkeit auf die Festplatte erhöht, die Festplatte wird jedoch härter.

BillThor
quelle
1
Ja, ich weiß, dass ich geöffnete Dateien löschen kann. Ich kenne die Beziehungen zwischen Verzeichniseinträgen und Inodes. Ich bin mir aber sicher, dass die Dateien nicht geöffnet waren, da ich sonst das Dateisystem nicht ummounten könnte ... Aber Ihr zweiter Punkt scheint interessant zu sein. Kann es wirklich länger als 30 Minuten dauern, bis gelöschte Dateien festgeschrieben sind? Zwischen dem Löschen der Dateien und dem Zubettgehen vorgestern liegen 30 Minuten, daher kann ich nicht sagen, wie lange es wirklich gedauert hat.
Markus N.
1
@MarkusN. Bei einigen Betriebssystemen werden viele Dateisystemdaten zwischengespeichert. Wenn der Speicherplatz nicht benötigt wird, schreiben sie möglicherweise genügend Transaktionsprotokolldaten, um sicherzustellen, dass der Speicherplatz freigegeben wird, nehmen sich jedoch Zeit, um den Speicherplatz freizugeben. Wenn Sie einen USB-Stick nach dem Schreiben vieler Daten aushängen, kann es einige Zeit dauern, bis die Daten gelöscht sind, bevor Sie sie entfernen können. Es ist ein Kompromiss zwischen dem sicheren Schreiben auf die Festplatte und dem Verzögern anderer Aktionen.
BillThor
Danke für die Bearbeitung. Aber wie Sie in meiner ursprünglichen Frage sehen, habe ich bereits versucht, ohne Wirkung zu synchronisieren.
Markus N.
1
@MarkusN. Ich denke nicht, dass die Synchronisierung so effektiv ist wie früher. Es wird wahrscheinlich nur sichergestellt, dass die Journaldaten geschrieben werden, und nicht unbedingt, dass alle Änderungen festgeschrieben werden. Wenn Sie die Bereitstellung aufheben / aufheben, wird das Journal angewendet. Ich kenne die Planungspriorität für Löschvorgänge nicht, aber ich würde erwarten, dass sie relativ niedrig ist. Das Durchsuchen des Codes kann möglicherweise weitere Fragen beantworten.
BillThor
Hört sich für mich vernünftig an.
Markus N.