Windows 8 以降に出現する『ディスク上のサイズ』が 0バイトのファイル
Windows Server 2012 もしくは、Windows 8以降を使っていて、
ディスク上のファイルサイズが 0バイトの奇妙なファイルを見かけることがあるかもしれない
実は、これには2つの理由があったのです
1. データ重複除去機能
データ重複除去の概要
実は、Windows Server 2012以降には、冗長なファイルをまとめて1つに管理する機能があります。
そのため、コピーと判断されたファイルは 0 バイトになるそうです。
2. NTFSの機能
NTFSの読み方 - Qiita
ntfs - "size on disk" is zero for non-zero file in windows 8? - Stack Overflow
NTFS内のファイルは、(少なくとも1つの)マスターファイルレコードテーブル(MFT)と言うファイルレコード(各ファイルレコードは名前、ファイル情報などの属性を含む)から構成されます。通常、データはディスク上の1つ以上のクラスタに配置されます。 MFTのファイルレコードには、これらのクラスターへの参照が含まれます(非常駐属性と呼ばれます)。 データサイズが実際に小さい場合、そのデータがMFTレコード内にあっても、データ属性は常駐しています。 したがって、NTFSはクラスタを割り当てる必要はありません。 ディスク上のサイズは、割り当てられたクラスタの数*クラスタのサイズです。したがって、データ属性が常駐する場合、ディスク上のサイズはゼロです。 ファイルレコードの最大サイズに達すると、データ属性は非居住になり、NTFSは最初のクラスタを割り当てます。 したがって、ディスク上のサイズは1クラスタ - 4096バイトです。 |
どうやら、Windows 8の場合、 NTFSの機能を使って、ファイルをMFTのファイル属性にファイルの中身を書き込んで、ディスク上の割り当てクラスタサイズを0バイトにして高速アクセスする機能があるらしい ・ω・ すごいぞ NTFS!(Windows 10がすごいわけではないらしい)
Comments