WindowsがフォルダのプロパティのSize on disk
値を計算する方法について混乱しているか、正しくありません。
ドライブのクラスタサイズは4096バイです。
size-on-disk-test
というフォルダーを作成しました。このフォルダーには、64個の直接サブフォルダーと362,496個のファイルがあります。すべてのファイルは、サイズが3バイトのテキストファイルであり、単にテキストaaa
が含まれています。
理論的には、各ファイルが4096バイトの単一クラスターを使用する必要があるとすると、ディスク上のファイルサイズを確認して読み取る必要があります。
number-of-files * cluster-size
→362,496 * 4096 = 1,484,783,616
(1.4GB)。
代わりに、次のようになります。0
:
Size
は、予想どおり、正確に3バイトにファイル数を掛けたものです。
次に、ルートレベルでディスクの空き領域をメモし、フォルダーを複製しました(これは、アクティビティやプログラムがインストールされたドライブではないため、テスト中にディスク上の他のキャッシュなどの影響を受けないようにする必要があります) )。
フォルダを複製した後のルートレベルでのチェック(つまり、This PC
でドライブのプロパティをクリックする)によると、空き領域が589,352,960バイト減少しました。
では、何が起こっているのでしょうか。 Windowsがディスク上のサイズについて0バイトを報告するのはなぜですか?なぜ私の計算は現実から大きく外れているのですか?
さらに、ファイル名の長さは重要ですか?正確な計算ではこれを考慮に入れるべきではありませんか?おそらく、ファイル名の長さにより、4095バイトのファイルが4096クラスターディスク上の2つのクラスターに配置されますか?そして確かに、フォルダはどこかに割り当てスペースを占有しますか?
これは1つの「質問」に対して多くの質問ですが、ファイル名、フォルダー、クラスターなど、スペースがどのように使用されているかを誰かが説明してくれることを願っています。
ディスク上のサイズの値は、せいぜい概算にすぎません。これは、NTFSのような複雑なファイルシステムを扱う場合に特に当てはまります。これを最初に表示されるよりもはるかに複雑にする多くの要因があります。これらの要因のほんの一部:
小さなファイルは完全にMFTに収まる可能性があり、データクラスターはまったく割り当てられません。正確なサイズは、ファイルのMFTエントリで使用可能なスペースの量によって異なります。これは、ファイル名の長さ、セキュリティ情報に必要なスペースなどによって異なります。
これらの要因に対処する最善の方法は、情報をどのように使用するかによって異なります。どちらの方法が最適かについて明確な答えはないため、多数の恣意的な決定を行う必要がありました。
ディスク上の値は単なるガイドと見なしてください。非常に小さなファイルが多数ある場合など、場合によっては、近くにさえありません。本当の正確さは、すべてのパラメーターを指定できた場合にのみ可能であり、専門家でさえ、それが絶望的に混乱することに気付くでしょう。
詳細については、この記事を参照してください: https://blogs.msdn.Microsoft.com/oldnewthing/20041228-00/?p=36863/
そして確かに、フォルダはどこかに割り当てスペースを占有しますか?
はい、もちろん、すべてのファイルとフォルダに関する情報はどこかに保存する必要があります。 NTFSでは、 [〜#〜] mft [〜#〜] にあります。それらは メタデータ および ファイルサイズにはカウントされません と呼ばれます。ただし、NTFSでは、非常に小さなファイルをMFTエントリに直接保存することもでき、追加のスペースを必要としません。それらは 常駐ファイル と呼ばれます
ファイルは3バイトしかないので、すべてがMFTに収まるのはほぼ確実です。したがって、サイズはディスク上は0になります
さらに、ファイル名の長さは重要ですか?正確な計算ではこれを考慮に入れるべきではありませんか?おそらく、ファイル名の長さにより、4095バイトのファイルが4096クラスターディスク上の2つのクラスターに配置されますか?
実際、ファイル名の長さは、他のメタデータとともに重要になる可能性があります。たとえば、 複数のストリーム、複雑なアクセス許可、または複数のハードリンクを持つファイル は、常駐コンテンツ用のスペースが少なくなります。 MFTに保存できるファイルのサイズは、エントリに保存されているものによって異なります。 MFTのメタデータに使用されるデータが多いほど、ファイルに残されるデータは少なくなります。
約900バイト未満のファイルは、MFTのディレクトリエントリ内に保存されます
https://en.wikipedia.org/wiki/NTFS#File_compression
図「常駐レコードのあるMFTエントリ」は、小さなファイルまたはフォルダのMFTレコードの内容を示しています。小さなファイルとフォルダ(通常、900バイト以下)は、ファイルのMFTレコードに完全に含まれています。
ただし、上記のように、ファイルは非常に小さいため、ファイル名、アクセス許可などによって消費されるスペースはごくわずかであり、すべてのファイルに十分なスペースが残ります。さらに、 圧縮ファイル および スパースファイル も、実際にディスクに保存されるデータが少ないため、ディスク上のサイズはサイズよりも小さくなります。
参考文献