Problemerklärung
Ich speichere Windows-Disk-Images, die mit wbadmin erstellt wurden, auf einem NTFS-Laufwerk, und ich habe festgestellt, dass das Komprimieren mit NTFS-Komprimierung eine 1,5-2-fache Speicherplatzersparnis ergibt und dennoch die volle Verfügbarkeit für die Wiederherstellung bietet.
Beim Komprimieren werden Dateien jedoch wahnsinnig fragmentiert, normalerweise über 100'000 Fragmente für das System-Disk-Image.
Bei einer solchen Fragmentierung dauert die Defragmentierung sehr lange (mehrere Stunden pro Bild). Einige Defragmentierer können nicht einmal damit umgehen, sie überspringen einfach die Datei oder stürzen ab.
Die Ursache des Problems ist meiner Meinung nach, dass die Datei durch Blöcke komprimiert wird, die separat gespeichert werden.
Die Frage
Gibt es eine gute (schnelle) Möglichkeit, Bilddateien zu defragmentieren und dennoch komprimiert zu halten (oder ohne extreme Fragmentierung zu komprimieren)? Kann es ein Dienstprogramm sein, um Dateien schnell auf kontinuierlichen freien Speicherplatz zu defragmentieren, oder ein Dienstprogramm (oder eine Methode), um nicht fragmentierte komprimierte Dateien aus vorhandenen nicht komprimierten Dateien zu erstellen?
Anmerkungen basierend auf Kommentaren / Antworten:
- Externe (zu Windows-Kernel) Komprimierungswerkzeuge sind in meinem Fall keine Option. Sie können Dateien nicht im laufenden Betrieb dekomprimieren (um 10-GB-Dateien zu dekomprimieren, benötige ich 10 GB frei, was nicht immer zur Hand ist; außerdem dauert es sehr lange); Sie sind nicht verfügbar, wenn das System zur Wiederherstellung von einer DVD gestartet wird (genau dann, wenn ich das verfügbare Image benötige). Bitte hören Sie auf, sie anzubieten, es sei denn, sie erstellen transaprent komprimierte Dateien auf ntfs, wie z
compact.exe
. - Die NTFS-Komprimierung ist für Systemimages nicht so schlecht. Es ist ziemlich gut, bis auf die Fragmentierung. Die Dekomprimierung nimmt nicht viel CPU-Zeit in Anspruch und verringert dennoch den E / A-Engpass, der in geeigneten Fällen zu einer Leistungssteigerung führt (nicht fragmentierte komprimierte Datei mit einem signifikanten Verhältnis).
- Defragmentierungsdienstprogramme defragmentieren Dateien ohne Rücksicht darauf, ob sie komprimiert sind. Das einzige Problem ist die Anzahl der Fragmente, was zu einem Defragmentierungsfehler führt, unabhängig davon, ob fragmentierte Dateien komprimiert sind oder nicht. Wenn die Anzahl der Fragmente nicht hoch ist (ca. 10000 sind bereits in Ordnung), wird die komprimierte Datei defragmentiert und bleibt komprimiert und intakt.
Das NTFS-Komprimierungsverhältnis kann je nach Datei gut sein. Systemabbilder werden normalerweise auf höchstens 70% ihrer ursprünglichen Größe komprimiert.
Paar Screenshots für diejenigen, die nicht glauben, aber ofc, können Sie Ihre eigenen Tests machen.
Ich habe tatsächlich Wiederherstellungen von NTFS-komprimierten Bildern durchgeführt, sowohl fragmentiert als auch nicht fragmentiert. Es funktioniert. Bitte vertrauen Sie mir oder überprüfen Sie es einfach selbst. rem: Wie ich vor ungefähr einem Jahr festgestellt habe, funktioniert es unter Windows 8.1 nicht. Es funktioniert immer noch unter Windows 7, 8 und 10.
Erwartete Antwort:
eine Arbeitsmethode oder ein Programm für Windows, um entweder:
komprimieren Sie die Datei (mit NTFS-Komprimierung und halten Sie sie für Windows Recovery zugänglich), ohne viele Fragmente zu erstellen (möglicherweise auf einer anderen Partition oder erstellen Sie eine komprimierte Kopie; sie muss auf der Festplatte mindestens dreimal schneller sein als
compact
+defrag
).oder
zu schnell (mindestens 3x schneller als Windows-Defragmentierung auf der Festplatte) defragmentieren Sie verheerend fragmentierte Dateien, z. B. Dateien mit mehr als 100 KB Fragmenten (sie müssen nach der Defragmentierung komprimiert bleiben).
quelle
Antworten:
Fragmentierung vermeiden
Das Geheimnis ist, zunächst keine unkomprimierten Dateien auf die Festplatte zu schreiben.
In der Tat wird eine bereits vorhandene große Datei nach dem Komprimieren aufgrund der Art des vorhandenen NTFS-Komprimierungsalgorithmus schrecklich fragmentiert.
Stattdessen können Sie diesen Nachteil ganz vermeiden, indem Sie das Betriebssystem dazu bringen, den Inhalt einer Datei im laufenden Betrieb zu komprimieren, bevor Sie ihn auf die Festplatte schreiben. Auf diese Weise werden komprimierte Dateien wie normale Dateien auf die Festplatte geschrieben - ohne unbeabsichtigte Lücken. Zu diesem Zweck müssen Sie einen komprimierten Ordner erstellen. (Auf die gleiche Weise, wie Sie zu komprimierende Dateien markieren, können Sie zu komprimierende Ordner markieren.) Anschließend werden alle in diesen Ordner geschriebenen Dateien im laufenden Betrieb komprimiert (dh als Streams komprimierter Blöcke geschrieben). Auf diese Weise komprimierte Dateien können immer noch etwas fragmentiert sein, aber es ist weit entfernt von dem Durcheinander, das durch die direkte NTFS-Komprimierung entsteht.
Beispiel
NTFS komprimierte 232 MB System-Image auf 125 MB:
Defragmentierung
Es ist richtig, dass NTFS-komprimierte Dateien für einige Defragmentierungswerkzeuge ein Problem darstellen können. Zum Beispiel kann ein Tool, das ich normalerweise verwende, nicht effizient damit umgehen - es verlangsamt sich zu einem Crawl. Ärgern Sie sich nicht, der alte vertrauenswürdige Contig von Sysinternals erledigt die Aufgabe, NTFS-komprimierte Dateien schnell und mühelos zu defragmentieren!
quelle
Lesen Sie den Artikel auf Wikipedia über die NTFS-Komprimierung :
Das wichtigste zuerst. WBAdmin ist im Wesentlichen ein Sicherungsdienstprogramm, mit dem ein vollständiges System wiederhergestellt werden kann. Es wird also erwartet, dass die Ausgabedatei groß ist (> 4 GB). Wie das Zitat zeigt, werden große Dateien schnell fragmentiert. Dies liegt an der Art und Weise, wie NTFS komprimiert: nicht nach Dateien, sondern nach Sektoren.
Eine gute Analogie besteht darin, dass ein Kuchen in mehrere Kisten aufgeteilt wird, von denen einige nicht leer sind. Dies ist die ursprüngliche Datei. Der Kompressionsteil drückt die Kuchenstücke zusammen und lässt einen Platz in den Kisten. Da die Kuchenstücke aufgrund des geschaffenen Raums nicht zusammen sind, werden die Stücke, aus denen der Kuchen besteht, fragmentiert.
Ich bin immer noch skeptisch, ob NTFS ein solches Komprimierungsverhältnis herausgibt. Laut einem Test von MaximumCompression für mehrere Dateien erhält NTFS die niedrigste Punktzahl im Komprimierungsverhältnis, nämlich nur 40%. Aus persönlicher Erfahrung kann ich Ihnen sagen, dass es viel niedriger ist, tatsächlich so niedrig, dass ich mich nie darum gekümmert habe, es zu verwenden, noch habe ich seine Auswirkungen gesehen.
Der beste Weg, um eine Fragmentierung zu vermeiden, besteht darin, sich nicht mehr auf NTFS zu verlassen. Die meisten Defragmentierer können die komprimierten Dateien nicht erweitern oder verschieben. Wenn dies irgendwie der Fall wäre, könnte NTFS die Dateien nicht erweitern, oder wenn er könnte, da der Defragmentierungsprozess den verbleibenden Speicherplatz aus der Komprimierung (4 KB) ausfüllen würde, würde die Erweiterung die Dateien fragmentieren, wie dies die Datei nicht tun würde in den vorher zusammenhängenden Clustern geschrieben werden.
Wenn Sie die Datei nicht ständig lesen müssen, verwenden Sie einige der im obigen Link empfohlenen Formate. 7z und rar sind sehr effizient (dh sie komprimieren zu einem angemessenen Zeitpunkt mit hohen Verhältnissen). Wenn Sie sich für Raum und nicht für Zeit interessieren, wählen Sie einen PAQ-Algorithmus (obwohl Sie sehr viel Zeit damit verbringen werden, die Dateien zu komprimieren und zu dekomprimieren). Es stehen auch schnelle Algorithmen zur Verfügung.
Wenn Sie die Datei ständig lesen müssen, komprimieren Sie sie überhaupt nicht. NTFS ist einfach zu verdammt chaotisch.
quelle
Obwohl dies nicht genau das ist, was OP verlangt hat, habe ich gute Erfahrungen mit einer Software von Drittanbietern namens Paragon gemacht. NTFS zerstört per Definition Ihr Dateisystem schrecklich, wenn Sie Dateien komprimieren (oder manchmal sogar schreiben). Dies erstreckt sich auf das Konsumieren mehrerer MFT-Einträge und ... Es ist schlecht. Der NTFS-Treiber von Microsoft bereinigt dies nicht einmal, wenn eine Datei defragmentiert wird. Daher sind Tools von Drittanbietern erforderlich. Mit Paragon können Sie es entweder als eigenständiges Betriebssystem (ISO-Image) starten oder auf einem anderen Windows-Betriebssystem mit Zugriff auf das Zieldateisystem installieren. Dann können Sie sowohl die MFT als auch die Dateien defragmentieren. Dies ist meines Wissens die einzige Möglichkeit, diesen Mangel an NTFS zu beheben, ohne das Volume neu zu formatieren.
(Ich habe keine Beziehung zum Tool oder seinem Schöpfer, außer es ist das einzige, was ich gefunden habe, um tatsächlich zu funktionieren.)
Heute, 2 Jahre nachdem die Frage anscheinend gestellt wurde, würde ich eher die Deduplizierung empfehlen - dies kann zu einer Festplattenersparnis von über 90% führen, wenn die Bilder nur "ein wenig" anders sind. Ein W2016 Nano Server in einer VM funktioniert wirklich gut, aber ich vermute, dass sogar FreeNAS oder alles andere, das ZFS verwendet, damit umgehen könnte.
quelle
Windows hat in letzter Zeit ZIP-Dateien wie Ordner behandelt. ZIP-Dateien können stärker komprimiert sein als NTFS-komprimierte Dateien und sind im Gegensatz zu NTFS nicht von Natur aus fragmentiert.
Testen Sie eines Ihrer Disk-Images, indem Sie es mit 7-zip im ZIP-Format komprimieren und prüfen, ob es direkt für die Wiederherstellung verwendet werden kann.
Wenn nicht, spielen Sie mit den 7-Zip-Komprimierungsparametern, um die Komprimierung mit dem am besten geeigneten Format zu maximieren, z. B. 7z. Sie können die Komprimierung weit über NTFS hinaus erhöhen und somit viel mehr Speicherplatz auf Ihrer Festplatte verfügbar machen - obwohl es am schnellsten wäre, auf eine zweite physische Festplatte oder einen zweiten RAM zu dekomprimieren, vorzugsweise auf einem anderen Controller- und E / A-Kabel.
FWIW: Die Komprimierung zahlt sich für Nicht-Sandman-SSDs für Systemfestplatten und für Nicht-Mediendateien aus - weniger Verschleiß der SSD, mehr Speicherplatz und schnellere E / A für nicht komprimierte Dateien. Siehe http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html
Videos, Grafiken und andere komprimierte Datendateien (wie .XLSX) sind bereits stark komprimiert, sodass die NTFS-Komprimierung dort keinen Vorteil hat. Auch nicht für Datenbanken oder Outlook-E-Mails mit zufälligen Updates. Aber ausführbare Dateien, txt, html usw., Dateien, profitieren stark.
Die Komprimierung ist auch für kleine Dateien immer ein Gewinn, z. B. wenn <64 KB komprimiert sind, nur ein Fragment. Die Wiederherstellung wäre nur problematisch, wenn Festplattenprobleme auftreten.
quelle