Warum hat das Defragmentieren von Laufwerk C meinen freien Speicherplatz um 10 GB erhöht?

27

Ich habe Defraggler verwendet, um den freien Speicherplatz auf meinem Laufwerk mit 100 GB C: \ zu defragmentieren, das 85 GB voll war. Nach der Defragmentierung zeigte das Laufwerk nur 75 GB voll. Wie sind 10 GB freier Speicherplatz auf magische Weise erschienen? Habe ich irgendwelche Daten verloren?

Ich habe vor dem Defragmentieren eine Datenträgerbereinigung durchgeführt und mein Papierkorb hatte nur etwa 11 MB. Das kann also nicht daran liegen, dass die temporären Dateien bereinigt wurden. Beachten Sie, dass ich "freien Speicherplatz" defragmentiert habe, was bedeutet, dass die leeren Blöcke neu angeordnet werden müssten, damit sie aneinander angrenzen.

Goweon
quelle
1
Wahrscheinlich eine Interaktion mit der Schattenkopie: siehe zum Beispiel ( piriform.com/docs/defraggler/technical-information/… )
Horatio
2
Außerdem hat Defraggler die Option, den Papierkorb vor dem Defragmentieren zu leeren.
OKTOSITE

Antworten:

14

Was wahrscheinlich passiert ist, ist, dass der Defragmentierungsvorgang Windows gezwungen hat, einige Momentaufnahmen der Systemwiederherstellung zu löschen. Es wäre ein pathologischer Fall der Fragmentierung, wenn der Metadaten-Overhead volle 10% Ihres Festplattenspeichers über das hinausgehen würde, was Windows normalerweise verwendet. Selbst dann bin ich mir nicht sicher, ob es möglich ist.

Im Versionsverlauf oder in der Dokumentation von Defraggler wird nichts angezeigt, was darauf hinweist, dass Dateien ordnungsgemäß defragmentiert werden können, um das Löschen von Schattenkopien zu verhindern. Tatsächlich zeigt dieser Thread aus dem Defraggler-Support-Forum an, dass er weiß, dass es passiert (es gibt einen Beitrag eines Board-Administrators mit dem Titel "Official Piriform Bug Fixer" im Thread), aber er gibt nicht an, ob er ihn reparieren wird oder nicht.

Schattenkopien gehen möglicherweise verloren, wenn Sie ein Volume defragmentieren. Dies liegt daran, dass VSS standardmäßig mit 16-KB-Clustern arbeitet, während die meisten NTFS-Volumes mit 4-KB-Clustern formatiert sind. Wenn bei einer Defragmentierungsoperation Daten verschoben werden, die nicht ein Vielfaches eines 16-KB-Clusters sind (oder die "Entfernung", um die sie verschoben werden, nicht ein Vielfaches von 16 KB), protokolliert VSS diese Änderung und löscht möglicherweise alle Ihre Daten Schnappschüsse.

MSDN: Dateien defragmentieren :

Verschieben Sie Daten nach Möglichkeit in Blöcken, die in 16-Kilobyte-Schritten (KB) zueinander ausgerichtet sind. Dies reduziert den Overhead beim Kopieren beim Schreiben, wenn Schattenkopien aktiviert sind, da der Schattenkopienspeicherplatz erhöht und die Leistung verringert wird, wenn die folgenden Bedingungen auftreten:

  • Die Blockgröße der Verschiebungsanforderung beträgt höchstens 16 KB.
  • Das Verschiebungsdelta wird nicht in Schritten von 16 KB angegeben.

Vista eingebaute Defragmentierung macht das nicht :

Eine Änderung, die für Benutzer nicht offensichtlich ist, ist die Optimierung der Schattenkopien während der Defragmentierung. Defrag hat spezielle Heuristiken, um Dateiblöcke so zu verschieben, dass die Aktivität beim Kopieren und der Speicherplatzbedarf für Schattenkopien minimiert werden. Ohne diese Optimierung würde der Defragmentierungsprozess das Löschen älterer Schattenkopien beschleunigen.

afrazier
quelle
Ich weiß nichts über den Schnappschuss-Teil dieser Antwort, bin aber nicht davon überzeugt, dass die Defragmentierung den Speicherplatz freigegeben hat. Könnte die Defragmentierung Ihren Papierkorb geleert haben? Auf einem Dateisystem, das kleine Dateien nicht zu einem einzigen Cluster zusammenfasst, kann ich nicht erkennen, wie eine Defragmentierung zu einem solchen Speicherplatzgewinn führen würde. Ich könnte mir vorstellen, dass Sie 10 GB Speicherplatz in so kleinen Blöcken zur Verfügung hatten, dass Windows ihn nicht zählte, aber ich hatte noch nie von diesem Verhalten gehört.
Slartibartfast
@Slartibartfast: Es ist ein Problem, wenn die App nicht richtig geschrieben ist. Ich werde meine Antwort mit weiteren Beweisen aktualisieren, da ich nicht an meinem Telefon bin. :-)
afrazier
@afrazier - obwohl ich denke, dass die aktualisierte Antwort von ThouArtNotDoc ​​eine bessere allgemeine Antwort ist. Ich muss zustimmen, dass Schattenkopien wahrscheinlich eine Rolle in der Situation des OP spielen. Das habe ich auch festgestellt: "Wenn Sie Volumes defragmentieren möchten, auf denen Schattenkopien aktiviert sind, wird empfohlen, eine Clustergröße (oder Zuweisungseinheit) von 16 KB oder mehr zu verwenden. Wenn Sie dies nicht tun, wird die Anzahl der Änderungen verursacht durch den Defragmentierungsprozess können Schattenkopien schneller als erwartet gelöscht werden. " - MS: "Entwerfen einer Strategie für Schattenkopien" technet.microsoft.com/en-us/library/cc728305(WS.10).aspx
ƬᴇcƬᴇιʜ007
@afrazier: Bestätigt. Alle vorherigen Systemwiederherstellungspunkte sind nicht mehr vorhanden. In der Konfiguration habe ich 12% als maximal zulässigen Speicherplatz für Schattenkopien festgelegt, sodass 10 GB nicht unangemessen sind. Andererseits habe ich gerade ein 9-GB-Spiel installiert, bei dem die vorherigen Wiederherstellungspunkte möglicherweise einfach überschrieben wurden.
Goweon
@firebat: Der von der Systemwiederherstellung verwendete Speicherplatz dient zum Nachverfolgen von Änderungen an vorhandenen (Schnappschuss-) Dateien, nicht an neuen. Das Installieren eines neuen Spiels würde sich nicht auf die Systemwiederherstellung auswirken, aber ein großer Patch könnte dies.
afrazier
23

Jedes Fragment muss irgendwo verfolgt werden. Das nimmt Speicherplatz in Anspruch (innerhalb der Installation des Dateisystems, nicht Dinge, auf die Sie direkt zugreifen sollen).

Ein Beispiel: Angenommen, Sie haben eine einzelne Datei mit 1000 Fragmenten. So wird Ihre Datei durch eine Sammlung von zufälligen Blöcken gespeichert. Statt in einem einzigen zusammenhängenden Block. Dies bedeutet, dass die fragmentierte Datei 1000-mal mehr Speicherplatz im Installationsverzeichnis des Dateisystems benötigt, wenn auch nur zum Speichern von Adressen für jedes Fragment. Das Dateisystem-Installationsprogramm speichert kleine Wörterbücher / Datenbanken / Karten / Tabellen / Listen an der Position jedes Fragmentes der Datei. Daher benötigt das Speichern einer Liste mit einem einzelnen Fragmentzeiger für das Dateisystem im Vergleich zu einer Liste mit 1000 Fragmentzeigern nicht viel Platz.

Aber hey, vielleicht irre ich mich ...

Bearbeiten: Unterstützende Informationen von hier :

Wenn ein nicht residenter Datenstrom zu stark fragmentiert ist, so dass seine effektive Zuordnungszuordnung nicht vollständig in den MFT-Datensatz passt, kann die Zuordnungszuordnung auch als nicht residenter Datenstrom gespeichert werden, wobei nur ein kleiner residenter Datenstrom die indirekte Zuordnung enthält Zuordnung zu der effektiven Zuordnungszuordnung für nicht ansässige Personen des Datenstroms für nicht ansässige Personen.

Übersetzung: Wenn Sie stark fragmentiert sind, gelten die allgemeinen Fallannahmen der Dateisysteminstallationen nicht. Aus diesem Grund muss der FS Maßnahmen ergreifen, um die Fragmentierung auszugleichen und am Ende zusätzlichen Speicherplatz zu kosten, nur um die Fragmente zu verwalten. Genau meine Vermutung von Anfang an.


Edit: Angesichts der obigen Ausführungen scheint es immer noch verrückt zu sein, 10 GB zu verlieren, nur um Dateien zu fragmentieren. Ich wette, dass Sie beim Defragmentieren einige häufig vorkommende Dateisystembeschädigungen hatten, die automatisch korrigiert wurden. Ich denke, Sie hatten nicht nur eine massive Fragmentierung, sondern auch teilweise gelöschte Dateien, die Speicherplatz in Anspruch nahmen. Es wäre schön gewesen, ein Scandisk-Protokoll von dieser Defragmentierung (oder eine Ausführung von Scandisk vor der Defragmentierung) zu sehen.

James T Snell
quelle
3
PS - das muss eine Hardcore-Fragmentierung gewesen sein.
James T Snell
Ich weiß nicht, ob dies ein triftiger Grund für einen solchen Anstieg des Speicherverbrauchs nach der Defragmentierung ist. Aber das ist mir schon oft aufgefallen. Wenn Sie einen ziemlich alten Systemwiederherstellungspunkt haben (normalerweise passiert es nicht, wenn Sie regelmäßig das Dienstprogramm zur Datenträgerbereinigung ausführen) und Sie defragmentieren, nachdem viele Daten auf dem Laufwerk C gesammelt wurden. Der Speicherverbrauch steigt aus dem Nichts, aber wenn Sie diesen Wiederherstellungspunkt löschen, wird der belegte Speicherplatz bereinigt. Nun, es ist technisch gesehen vielleicht nicht sinnvoll, aber es ist mir oft passiert, dass Wiederherstellungspunkte nach Überstunden Speicherplatz beanspruchen.
Kushal
Keine Ahnung, scheint 10G wie eine Menge, aber IME, sehr voll Platten neigen dazu, Fragment viel viel schneller als weniger fragmentiert Platten. Wenn er vorher bei> 85% gewesen wäre (da er für 85 GB, aber 100 GB Festplatte probte) und in der Zwischenzeit möglicherweise voller gewesen wäre, hätte er eine spektakulär hohe Fragmentierung und damit verbundene schreckliche Leistung haben können.
Bernd Haug
3
Solange die Blockgröße auf diesem Volume nicht übermäßig hoch ist, kann ich persönlich nicht glauben, dass 10 GB Speicherplatz freigegeben werden, wenn Fragmente nicht verfolgt werden. Bei einer Blockgröße von 4096 KB und der Annahme, dass für jedes Fragment ein vollständiger Block zum Verfolgen erforderlich ist (was falsch ist), werden 2,5 Millionen zuvor verfolgte Fragmente benötigt, aber nicht mehr, um so viel Speicherplatz freizugeben .
CarlF
1
@Doc - Ein Zeiger nimmt keinen ganzen Block ein. Wenn (wie wahrscheinlich) jeder Zuordnungsblock aus mehreren Sektoren besteht, benötigen Sie weniger Zeiger, da weniger Blöcke für Ihre Daten vorhanden sind. Der maximal mögliche Overhead für die Verfolgung aller Fragmente beträgt also deutlich weniger als 3%. Ich kenne die genauen Details von NTFS nicht, aber mit den (relativ ineffizienten) FAT-Dateisystemen konnten Sie immer noch keinen 10-prozentigen Overhead für die Dateizuordnungstabelle (die Fragment-Tracking-Zeiger) erzielen, nach denen FAT benannt wurde.
Steve314