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ügbar4096 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ügbar4096 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
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