NTFSで圧縮されたシステムイメージの極端な断片化を回避する


8

問題の説明

NTFSドライブのwbadminで作成したWindowsディスクイメージを保存しています。NTFS圧縮で圧縮すると、1.5〜2倍のスペースを節約できますが、復元には完全な可用性が得られます。

しかし、圧縮の過程で、ファイルはめちゃくちゃに断片化します。通常、システムディスクイメージの場合は100,000断片を超えます。

このような断片化では、断片化の解消に非常に長い時間がかかります(画像ごとに数時間)。一部のデフラグツールでは処理できず、ファイルをスキップするかクラッシュするだけです。

問題の原因は、ファイルが個別に保存されるチャンクによって圧縮されていることだと思います。

質問

画像ファイルをデフラグして、圧縮したままにする(または極端な断片化を引き起こさずに圧縮する)ための適切な(高速な)方法はありますか?連続する空き領域にファイルをすばやくデフラグするユーティリティ、または既存の非圧縮から非フラグメント圧縮ファイルを作成するユーティリティ(または方法)があるのでしょうか。

コメント/回答に基づく備考:

  1. 私の場合、(Windowsカーネルへの)外部圧縮ツールはオプションではありません。オンザフライでファイルを解凍することはできません(10 Gbのファイルを解凍するには、10 Gbが無料で必要です。システムがリカバリのためにDVDから起動しているときはアクセスできません(イメージが必要なときです)。のように、ntfsで透過的に圧縮されたファイルを作成しない限り、提供を停止してくださいcompact.exe
  2. NTFS圧縮は、システムイメージにとってそれほど悪くはありません。断片化を除いて、それはかなり良いです。また、解凍にはCPU時間はあまりかかりませんが、それでもIOボトルネックが減少します。これにより、適切な場合にパフォーマンスが向上します(断片化されていない、圧縮率が高いファイル)。
  3. 最適化ユーティリティは、ファイルが圧縮されているかどうかに関係なく、ファイルを最適化します。唯一の問題はフラグメントの数です。フラグメント化されたファイルが圧縮されているかどうかに関係なく、最適化に失敗します。フラグメントの数が多くない場合(約10000は既に問題ありません)、圧縮ファイルはデフラグされ、圧縮されたままになります。
  4. ファイルによっては、NTFS圧縮率が適切な場合があります。システムイメージは通常、最大で元のサイズの70%に圧縮されます。

    それらのスクリーンショットのペアは信じていませんが、独自のテストを行うことができます。

  5. 私は実際に、NTFSで圧縮されたイメージ(断片化されたものと断片化されていないものの両方)からの復元を行いました。それは機能します。信頼できるか、自分で確認してください。rem:約1年前に見つけたように、Windows 8.1では機能しません。Windows 7、8、および10で動作します。

予想される答え:

Windows用の動作する方法またはプログラムは、

  1. 大量のフラグメントを作成せずに(NTFS圧縮を使用してファイルをWindowsリカバリーにアクセスできるようにして)圧縮します(別のパーティションに作成するか、圧縮コピーを作成します。HDDでcompact+の3倍以上の高速でなければなりませんdefrag)。

    または

  2. 100K +のフラグメントを含むファイルなど、破壊的に断片化されたファイルをすばやく(HDD上のWindowsのデフラグより少なくとも3倍速く)デフラグする(デフラグ後も圧縮されたままである必要がある)。


NTFSがこれだけ圧縮するのはかなり奇妙です(実際のテストでは2〜5%の減少しか示されていないため)。また、NTFSにはファイルの断片化(ジャーナリングなど)に関するいくつかの保護機能があります。ファイルのサイズはどのくらいですか(変更前と変更後)?また、図から、Defragglerは圧縮ファイルを最適化できないようです。
ドクトロレイシャール

1
1. Windowsイメージを自分で作成して圧縮できます。少なくとも1.5倍(60〜70%または元のサイズ)で本当に簡単に圧縮されます。2.はい、Defragglerと他のデフラグメンターは圧縮ファイルをデフラグできます。これは実際の経験です。
LogicDaemon 2013

また、圧縮率はトピックから外れていますが、ここには、標準でインストールされているソフトウェアセットを備えた、新しくインストールされたWindows 7 Professional(大部分が32ビット、3または4 64ビット)システムの実際の画像があります:i.imgur.com/C4XnUUl .png
LogicDaemon 2013

@DoktoroReichardそれはファイルの内容に依存します。テキストファイルとスパースファイルの圧縮率は非常に優れています。通常、zipファイル、画像、オーディオ/ビデオファイルなどの既に圧縮されているファイルは避けます。圧縮後、サイズが10〜20%減少することがよくあります
phuclv

回答:


4

断片化を回避する

その秘訣は、そもそもディスク上に非圧縮ファイルを書き込まないことです。

実際、既存の大きなファイルを圧縮すると、NTFSインプレース圧縮アルゴリズムの性質により、ファイルは恐ろしく断片化されます。

代わりに、ディスクに書き込む前に、OSがファイルのコンテンツをその場で圧縮するようにすることで、この欠点を完全に回避できます。このようにして、圧縮ファイルは通常のファイルとしてディスクに書き込まれます-意図しないギャップはありません。このためには、圧縮フォルダーを作成する必要があります。(ファイルに圧縮のマークを付けるのと同じ方法で、フォルダーに圧縮のマークを付けることができます。)その後、そのフォルダーに書き込まれたすべてのファイルはその場で圧縮されます(つまり、圧縮ブロックのストリームとして書き込まれます)。この方法で圧縮されたファイルは、やや断片化する可能性がありますが、インプレースNTFS圧縮によって作成される混乱とはかけ離れたものになります。

NTFSで232 Mbのシステムイメージを125 Mbに圧縮:

  • インプレース圧縮により、2680個のフラグメントが作成されました。
  • オンザフライ圧縮により19個のフラグメントが作成されました。

デフラグ

NTFS圧縮ファイルが一部のデフラグツールに問題を引き起こす可能性があることは事実です。たとえば、私が通常使用するツールは、それらを効率的に処理することができません-それはクロールまで遅くなります。フレットはない、古い信頼できるコンティグからSysinternalsのは、迅速かつ簡単NTFS圧縮ファイルをデフラグの仕事をしていません!


2

ウィキペディアのNTFS圧縮に関する記事を読んでください。

ファイルは16クラスターのチャンクに圧縮されています。4 kBクラスターでは、ファイルは64 kBのチャンクに圧縮されます。圧縮によって64 kBのデータが60 kB以下に削減される場合、NTFSは不要な4 kBページを空のスパースファイルクラスターのように扱います-それらは書き込まれません。

これにより、妥当なランダムアクセス時間が可能になります。OSはフラグメントのチェーンをたどるだけです。

ただし、64 KB未満のすべてのチャンクがフラグメントになるため、大きな圧縮可能ファイルは高度にフラグメント化されます。

まず最初に。WBAdminは、本質的に、システム全体をカム復元するバックアップユーティリティです。そのため、出力ファイルは大きい(> 4 Gb)と予想されます。引用からわかるように、大きなファイルは急速に断片化されます。これは、NTFSの圧縮方法が原因です。ファイルではなく、セクターによって圧縮されます。

良い例えは、ケーキがいくつかの箱に分割されていることです。そのいくつかは空ではありません。これが初期ファイルです。圧縮部はケーキを絞り、箱の中にスペースを残します。ケーキの断片が一緒ではないため、作成されたスペースのために、ケーキを構成する断片は断片化します。

NTFSがそのような圧縮率を提供することについては、まだ懐疑的です。MaximumCompressionが複数のファイルに対して行ったテストによると、NTFSは圧縮率のスコアが最も低く、わずか40%です。個人的な経験から、それはそれよりはるかに低いと言うことができます。実際には非常に低いので、それを使用したり、効果を確認したりしていません。

断片化を回避する最善の方法は、NTFSへの依存をやめることです。ほとんどのデフラグは、圧縮ファイルの展開または移動に失敗します。どういうわけか、NTFSはファイルを拡張できなかった場合、または可能であれば、デフラグプロセスが圧縮からの残りのスペース(4kB)を埋めるため、拡張はファイルを断片化しません。隣接する前のクラスターに書き込まれます。

これは言われていることであり、ファイルを常に読み取る必要がない場合は、上記のリンクで推奨されている形式のいくつかを使用してください。7zとrarは非常に効率的です(つまり、適切な時間に高い比率で圧縮されます)。時間ではなくスペースを重視する場合は、PAQタイプのアルゴリズムを選択します(ただし、ファイルの圧縮と解凍には非常に長い時間がかかります)。利用可能な高速アルゴリズムもあります。

常にファイルを読み取る必要がある場合は、まったく圧縮しないでください。NTFSはあまりにも厄介です。


これ(Wikipdiaで参照)のソースには、実際には、プロセス全体に関する技術的な情報ではありますが、優れた情報が含まれています。
ドクトロレイチャード

圧縮率はトピックから外れていますが、ここには、標準でインストールされているソフトウェアを使用した、新しくインストールされたWindows 7 Professional(大部分が32ビット、3または4 64ビット)システムの実際の画像があります:i.imgur.com/C4XnUUl.png 圧縮により、ディスク領域を節約できます。そして、後でファイルを最適化できますが、時間がかかりすぎます。
LogicDaemon 2013

そして、NTFS圧縮の「回避」について:私は何年もこれを行っており、断片化を除いてほとんど問題なく動作します。パフォーマンスの問題のため、頻繁にアクセスされるファイルには使用しないでください。ただし、ほとんどの実行可能ファイルとテキストは非常によく圧縮されています。また、ログのように順次書き込まれるファイルは、圧縮されたままでは断片化されません。そしてもちろん、圧縮されたシステムイメージは完全に復元可能で、何度も実行されます。明示的に「展開」する必要はありません。これは明らかに、NTFSドライバーのブロック単位のインメモリによって自動的に実行されます。
LogicDaemon 2013

1
私は結果について本当に議論することはできません(そして、記録のために、私はあなたに似ている実際のテスト結果と、日付が付けられているように見える私の個人的な経験を述べました)。コメントで提供したリンクには、断片化の問題を回避できない理由に関する情報が含まれています。また、Wikipediaの記事には、起動時にWindowsがNTFSの圧縮ライブラリをまだロードしていないことが記載されており、リカバリプロセスについても不明です。これは洞察を提供するかもしれません。
ドクトロレイチャード

おかげで、それは私が得たいと思った答えではありません:)私はそれを順次書き込むか、圧縮チャンクと同じサイズのブロックによって、圧縮されているが断片化されていないファイルを取得する方法があることを望んでいました。または、非常に効率的な最適化プログラムがあり、十分な継続的な空き領域がある場合に単一のファイルをすばやく最適化できます。
LogicDaemon 2013

0

OPの要求とは厳密には一致しませんが、Paragonという名前のサードパーティソフトウェアを使用した経験は豊富です。NTFSは、定義上、ファイルを圧縮(または場合によっては書き込み)するときに、ファイルシステムをひどく破壊します。これは、複数のMFTエントリを消費するまで拡張されます。MicrosoftのNTFSドライバーは、ファイルが最適化されたときにこれをクリーンアップしません。したがって、サードパーティのツールが必要です。Paragonを使用すると、それ自体をOS(ISOイメージ)として起動するか、ターゲットファイルシステムにアクセスできる別のWindows OSにインストールできます。次に、MFTとファイルの両方を最適化できます。これは私の知る限り、ボリュームを再フォーマットする前に、NTFSのこの欠陥を修正する唯一の方法です。

(私が実際に機能することがわかったのはそれ以外は、ツールやその作成者とは関係ありません)

質問が表示されたように見えてから2年後の今日、重複排除をお勧めします。これにより、イメージが「わずかに」異なるだけであれば、90%以上のディスク節約が可能になります。VM内のW2016 Nano Serverは非常にうまく機能しますが、FreeNASやZFSを使用する他の何かでも処理できると思います。


「Paragon」以外のURLまたはより正確な名前はありますか?Googleは私を理解していません。私はParagonという名前のソフトウェア会社を知っていますが、NTFSファイルをデフラグする製品については何も知りません(MFTデフラグツールはありますが、MFTの問題はありません)。ZFSの提案に感謝します。詳しく調べますが、現場で迅速にリカバリできるように現場で起動できるようにする必要があります。
LogicDaemon 2016

-1

Windowsは最近、ZIPファイルをフォルダーのように扱っています。NTFSとは異なり、ZIPファイルはNTFSで圧縮されたファイルよりも圧縮され、本質的に断片化されません。

ZIP形式の7-zipで圧縮してディスクイメージの1つをテストし、復元に直接使用できるかどうかを確認しませんか?

そうでない場合は、7-zip圧縮パラメーターを試して、7zなどの最適な形式を使用して圧縮を最大化します。NTFSをはるかに超えて圧縮率を上げることができるため、ディスクで使用可能な領域を大幅に増やすことができます。ただし、2番目の物理ディスクまたはRAMに解凍するのが最も高速ですが、できれば別のコントローラーとIOケーブルを使用してください。

FWIW、圧縮はシステムディスクと非メディアファイルの非サンドマンSSDに見返りがあります-SSDの消耗が少なく、スペースが大きく、非圧縮ファイルのI / Oが高速です。http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.htmlを参照してください

ビデオ、グラフィックス、およびその他の圧縮データファイル(.XLSXなど)は既に非常に圧縮されているため、NTFS圧縮によるメリットはありません。また、データベースやOutlookメールをランダムに更新することもできません。しかし、実行可能ファイル、txt、htmlなどのファイルには大きなメリットがあります。

圧縮は、小さなファイルに対しても常にメリットがあります。たとえば、64K未満の圧縮の場合、フラグメントは1つだけです。ディスクの問題が発生した場合、面倒なのはリカバリのみです。


1
ああ、あなたはとても多くの点で間違っています...主に、windowsはフォルダーのようなZIPファイルを扱ったことはありません。これが起こらないことには技術的な理由があります(基本的に、ファイルの内容への順次アクセスのみ)。エクスプローラーは、フォルダーと同様にzipを管理できます(ただし、非常に限られた方法で、zipからhtmlを開いたときに他のファイルを抽出しません)は、Windowsではありません。そして、私が説明した質問で、エクスプローラや7-Zipなどの別のユーティリティが適合しない理由(「コメント/回答に基づく注釈」を参照)
LogicDaemon

ところで、「SSDの磨耗が少ない」ということに注意してください。SSDに十分なキャッシュがない場合は、磨耗が2倍になります。なぜなら、圧縮ファイルを保存するとき、Windowsは最初に非圧縮クラスターを保存し、次にそれらを圧縮して圧縮クラスターを保存します(その後、非圧縮クラスターを削除します)。結局のところ、これは私の質問の主題で断片化を引き起こすものです。リンク上のサムスンSSD(壊れていますが、テールから「レ」を削除)には、十分に大きなキャッシュがあります。
LogicDaemon 2014

いいえ、Windowsはzipおよびcabファイルをフォルダーとして扱いません。あなたは、することができます表示直接自分のコンピュータ上でその内容(ファイル/フォルダ名を)しますが、ディスクイメージまたは圧縮NTFSファイルのように透過的にアクセスすることはできません。それでも、ファイルを表示/編集する場所でアーカイブ内のファイルを抽出する必要があります
phuclv '28
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.