IT

Laufwerk C: voll – Festplatte voll aber keine Dateien

Auf einem Windows Server war Laufwerk C: voll obwohl keine Dateien aufzufinden waren, die das Laufwerk komplett belegen. Eine Software auf dem Server hat leider auf sehr unkluge Art und Weise Rechnungen als Millionen einzelne Textdateien abgelegt. Aufgrund der Mindestgröße eines Clusters unter NTFS wurde immens viel Speicherplatz wegen der Millionen Textdateien verschleudert. Und das, obwohl die einzelnen Dateien nur wenige Byte brauchen! Was man tun kann und warum nie wieder den gesamten Speicherplatz für die vielen Dateien freigeben kann, erfährst du in diesem Artikel!

 

Dateien komprimieren bei vollem Laufwerk

Dies ließ sich wieder reduzieren, indem die ganzen Dateien gezippt wurden und somit die NTFS-Clustergröße für die einzelnen Dateien umgangen wurde. Allerdings wurde nicht soviel Platz frei, wie es rein rechnerisch hätte sein sollen. Nach längerer Recherche stellte sich heraus, dass dies an der MFT-Datei des NTFS-Dateisystems liegt.

 

Ursache: NTFS, MFT und sehr viele kleine Dateien

Um das ganze einmal nachzuvollziehen, habe ich viele kleine Dateien auf einem neu aufgesetzten Windows Server 2012 erstellt. Bei den ca. zwei Millionen Textdateien, die ich angelegt habe, ist auch der Schwund aufgrund der Clustergröße immens. Statt 1,6 GByte sind knapp 7,6 GByte auf der Festplatte belegt.

 

Die Größe der MFT-Datei („vom System benutzt“) ist nach dem Erstellen der vielen kleinen Dateien stark angewachsen:

52069372 KB Speicherplatz auf dem Datenträger insgesamt
10238344 KB in 54029 Dateien
42796 KB in 17348 Indizes
0 KB in fehlerhaften Sektoren
2176796 KB vom System benutzt
65536 KB von der Protokolldatei belegt
39611436 KB auf dem Datenträger verfügbar

4096 Bytes in jeder Zuordnungseinheit
13017343 Zuordnungseinheiten auf dem Datenträger insgesamt
9902859 Zuordnungseinheiten auf dem Datenträger verfügbar

Vor der Erstellung der Dateien betrug die Größe der MFT-Datei nur ein Minimum:

140455 KB vom System benutzt

Dies liegt daran, dass kleine Dateien bei einem NTFS-System direkt in der MFT-Datei abgelegt werden.

 

Die Plattenbelegung nach dem Erstellen der zwei Millionen Dateien:

Die Plattenbelegung nach dem Löschen der zwei Millionen Dateien:

An der MFT-Datei hat sich durch das Löschen der Dateien nichts mehr verändert!

So sollte es eigentlich aussehen, wenn die ganzen Dateien gelöscht wurden (Stand bei einem neu aufgesetzten Server 2012):

 

Lösung: MFT verkleinern?

Danach habe ich versucht die MFT wieder zu verkleinern bzw. neu aufzubauen. Eine Software, die dies erledigt scheint es nicht zu geben. Ein Image der Systemplatte zu erstellen und zurückzuspielen, egal mit welchem Imaging-Tool, ist leider zwecklos, da auch die MFT immer wieder in voller Größe zurückgespielt wird.

Einfach alle Dateien von Laufwerk C: manuell über den Explorer zu kopieren kann man vergessen. Mit Robocopy oder ähnlichem ebenfalls. Über Linux hat es auch nicht funktioniert. Das kopierte Windows ließ sich nach einer Reparatur zwar starten, aber bei so gut wie jeder zweiten Aktion gab es eine Fehlermeldung.

Allerdings ließ sich das ganze mit Hilfe von Acronis realisieren, indem ich ein Image erstell habe und aus diesem alle Dateien in eine neue Partition wiederhergestellt habe. Nachdem manuellen Kopieren aller Dateien aus dem Acronis-Backup ist die MFT klein, aber leider ist immer noch zu viel Platz belegt. Dies liegt wohl leider daran, dass beim Kopieren die per symbolischer Verknüpfung eingebunden Verzeichnisse von Windows falsch kopiert wurden und somit nun zu viel Platz belegt wird.

52069375 KB Speicherplatz auf dem Datenträger insgesamt
13392624 KB in 72812 Dateien
34084 KB in 17398 Indizes
0 KB in fehlerhaften Sektoren
158527 KB vom System benutzt
65536 KB von der Protokolldatei belegt
3848410 KB auf dem Datenträger verfügbar

4096 Bytes in jeder Zuordnungseinheit
13017343 Zuordnungseinheiten auf dem Datenträger insgesamt
9621035 Zuordnungseinheiten auf dem Datenträger verfügbar

 

 

Lösung: Formatieren für neue MFT

Die einzige Lösung ist wohl so eine Menge kleiner Dateien auf einer einzelnen Datenplatte und nicht auf der Systempartition zu speichern. Von dort kann man die verbliebenen Daten irgendwann verschieben und die Partition danach formatieren. Die übergroße MFT ist dann Geschichte. Gerade beim Einsatz virtueller Maschinen ist dies recht einfach umzusetzen, muss aber im Vorhinein bedacht werden. Ein Grund mehr auf Laufwerk C: nur das Betriebssystem liegen zu haben.

 

Quellen:

Zwei interessante Posts die ich zu den Grundlagen zur Speicherplatzberechnung und der MFT-Datei gefunden habe:
https://blogs.msdn.microsoft.com/ntdebugging/2008/07/03/ntfs-misreports-free-space/
https://blogs.technet.microsoft.com/askcore/2013/03/01/where-did-my-space-go/

Anscheinend ein öfters diskutiertes Thema, leider eher ohne brauchbare Lösung:
https://superuser.com/questions/254054/how-to-reset-an-ntfs-mft-for-no-tracks-of-deleted-files-names-to-be-found-there
https://forum.piriform.com/?showtopic=41378
https://forum.piriform.com/?showtopic=38402
https://www.winfuture-forum.de/index.php?showtopic=178187
https://www.administrator.de/frage/%C3%9Cbergro%C3%9Fe-mft-verkleinern-158205.html

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert