web-dev-qa-db-ja.com

正確なファイル(コピー)は、同じドライブのディスク上でサイズが異なりますか?

最近、私は奇妙なことに出くわしました。ファイルでいっぱいのフォルダの正確なコピーは、ディスク上のサイズが元のサイズとは異なります。これらのファイルがまったく同じドライブ上にあることを除いて、異なる構造のドライブ間でこれがどのように発生するかを理解できました。

複数のテストを実行して、すべてのファイルがまったく同じであり、すべてのプロパティもまったく同じであることを確認しました。

これについての説明は何でしょうか?

2つのフォルダのプロパティのスクリーンショット: Screenshot of the properties of the two folders.

ディスク管理のスクリーンショット: Screenshot of Disk Management

考慮事項

  1. どちらのフォルダでも圧縮はオンになっていません。
  2. ドライブにはパーティションが1つしかないため、両方のフォルダでクラスタサイズ、ファイルシステム(NTFS)などが共有されます。
4
Tyler N

それで、これは多くの掘り下げを要しました、しかし私は結局これを理解しました。この問題を通じて、サーバーについて多くのことを学びました。

フォルダの背景

まず、問題の2つのフォルダーがあります。これらのフォルダは、バイナリまで、データに関して100%同一です。これらのフォルダは、当社のサーバーの1つにあります。

この特定のサーバーは最近オフラインになり、Windows Server 2008から2012から2016にアップグレードされました。このサーバー上の他のすべてのファイルと一緒に、サーバーがアップグレードを行っている間、フォルダーの1つがボリュームに乗っている間そのまま残りました。もう1つのフォルダーは、2008年の状態のサーバーのスナップショットから実際に複製され、現在の2016サーバーに配置されました。つまり、元のフォルダと複製されたフォルダがあります。不一致は、複製されたフォルダがディスク上で元のフォルダよりも多くのサイズを占めることです。

私が試したもの

この問題を理解するための私の推論は、複製されたフォルダーにドリルダウンして、すべてのファイルのサイズがディスク上で一致していないか、または特定のファイルのみであるかを確認することでした。このタスクを自分ではるかに簡単にするために、私は WizTree by Antibody Software を使用しました。これは WinDirStat に似ていますが、defualtによって、ディスク上の各ファイルのサイズを次のように表示する列があります。だけでなく、そのサイズ。 WinDirStatはサイズのみを表示すると思います。そこでドリルダウンしたところ、すべてのサブフォルダーまたはファイルのディスク上のサイズが一致しているわけではなく、一部のみであることがわかりました。そして、実際に行ったものには、私に非常に独特なものがありました。サイズがゼロ以外のファイルであるにもかかわらず、ディスク上のサイズが0のファイルです。

一部のNTFSの背景

この発見により、スーパーユーザーの別の質問で この答え が見つかりました。私の問題の文脈では、これは私がその答えから収集したものです。

  1. ファイルが小さすぎてファイルのデータとファイルシステムのブックキーピングが1KB未満の場合、NTFSはデータをファイルレコード自体(MFT)内に格納し、クラスターを割り当てる必要はありません。ファイルレコード以外には何もないため、ディスク上のサイズはありません。これは常駐ファイルと呼ばれます。
  2. Windows 8より前は、NTFSの「ディスク上のサイズ」の計算では、常駐ファイルと非常駐ファイルは考慮されず、各ファイルのサイズがクラスターサイズの次の倍数に切り上げられていました。これで、NTFSは、常駐データを含むファイルをディスク上の0kbサイズとしてカウントします。つまり、Windows 8以降で使用される計算は、Windows 7以降で使用される計算よりもスマートです。
  3. ファイルが常駐ファイルから非常駐ファイルにしきい値を超えると、ファイルを元に戻すことはできません。

ディスク上のサイズが異なるまったく同じファイルになってしまった方法

サーバーのアップグレードを行った元のフォルダーは、プロセスを通じてデータが書き換えられていたため、WindowsはNTSF計算を再実行し、現在認識しているファイルが常駐ファイルになる可能性があることを検出すると、それらに対応するように簿記を更新しました。ディスクファイルの数百の4kb(1xクラスターサイズ)サイズがディスクファイルの0kbサイズに変わり、それによって245Mbファイルが244Mbに減少しました。

IT部門がサードパーティの複製ソフトウェアを使用したとき、データがコピーされただけでなく、簿記情報もコピーされました。このアプリケーションはすべてを複製することを目的としており、簿記も含まれます。

NTFSが計算で常駐ファイルを処理しなかったため、2008年の元のファイルは245MBを使用しました。データが書き換えられたとき、NTFSは最新の計算を実行し、特定のファイルを常駐させました。 2008年のオリジナルの複製では、簿記情報もコピーされていたため、非常駐ファイルは非常駐のままでした。

したがって、これがどのように発生したかを理解するために必要な背景がすべてない簡潔な答えは次のとおりです。一方のフォルダーには常駐ファイルが含まれ、もう一方のフォルダーには含まれません。これは、一方のフォルダーのデータが常駐ファイルを処理する計算で書き換えられ、もう一方のフォルダーのデータと簿記情報が常駐ファイルを処理しないシステムからコピーされたためです。

注目すべき言及

  1. 元のフォルダ(244mb)または複製されたフォルダ(245mb)のいずれかをコピーすることで、この問題を再現できます。新しいコピーは常駐ファイルで常に244MBになります。
  2. Windows 7コンピューターからC:ドライブの管理共有を見ると、Windows 7がディスクのサイズプロパティを計算しているため、両方のフォルダーに245MBと表示されます。 Windows 10コンピューターから見ると、常駐ファイルを探すのに十分賢い計算であるため、244mbと245mbの両方が表示されます。
  3. (Windows 8以降のマシンから)元のフォルダーの常駐ファイルである複製フォルダーから非常駐ファイルをコピーすると、データが書き換えられたため、コピーによって常駐ファイルになります。
1
Tyler N

Windowsは、頻繁に使用されないファイルを自動的に圧縮します。 Windowsで圧縮されている場合は、確認できます。

フォルダを右クリック>プロパティ>詳細属性

ディスク容量を節約するためのコンテンツの圧縮が有効になっているかどうかを確認します。

0

比較サイズvsディスク上のサイズ:内のファイルの内容上の画像は同じサイズですが、保管に必要なスペースが異なります。

ファイルはチャンク(「クラスター」)に格納され、それらのチャンクは、ドライブの準備に使用されるフォーマットシステム、および選択されたクラスターサイズ(デフォルトのクラスターサイズを使用しない場合)によって異なります。この Microsoftドキュメント は、さまざまなフォーマットの選択とドライブサイズのデフォルトのクラスターサイズを示しています。

また、ルートから離れたディレクトリ内のファイルに 代替データストリームフォーク が添付されている場合もあります。

0
K7AAY

余分な1MBのスペースは、 inode またはインデックスノードに追加されたメタデータが原因である可能性があります。

Iノード(インデックスノード)は、ファイルやディレクトリなどのファイルシステムオブジェクトを記述するUnixスタイルのファイルシステムのデータ構造です。各iノードには、オブジェクトのデータの属性とディスクブロックの場所が格納されます。ファイルシステムオブジェクトの属性には、メタデータ(最後の変更、アクセス、変更の時刻)、および所有者と権限のデータが含まれる場合があります。

それらはコピーですが、大きい方は別の(ネストされた)ディレクトリーにあるため、索引付けのための情報のセットが異なります。