
今日、私は発見しましたマスターファイルテーブル自体はファイルであるただし、そのファイルにはパスがないので、開いたり、削除したり、変更したりすることはできません。つまり、それがファイルであれば、パーティションもファイルなのでしょうか? NTFS ファイルの定義は何ですか?
答え1
MFT へのパスは です\$Mft
- ミラーは です\$MftMirr
。Windows では、実行中にそれらを一覧表示したり、開いたり、変更したりすることはできませんが、一部のツール (EnCase など) でボリュームを確認すると、それらは表示されます。
NTFSのドキュメントでは、これらを「メタファイル」 Windows にとって、それらの名前よりも、ファイル テーブル内でのそれらの位置 (つまり、$Mft
ディスク上のファイル番号 1) の方が重要です。これは、Windows がメタファイルの内容なしでは名前でファイルを見つけることができないため、NTFS API の奥深くに、ファイル番号のみでファイルにアクセスする方法があると考えられます (Linux で名前ではなく「inode」番号でファイルを開くのと似ています)。
答え2
ただし、そのファイルにはパスがないので、開いたり、削除したり、変更したりすることはできません。
ReadFile()を呼び出してファイル名を指定することができます$MFT.O
NTFS ファイルを定義するものは何ですか?
技術的には、ビットのストリームです。つまり、ブートセクターを含むディスク上のすべてのものはファイルただし、パーティションは実際にはファイルではありません。パーティション自体を開くのではなく、パーティション内のファイルを開きます。
ここでマイクロソフトの言葉を引用します。
システム ブートストラップ コードやディレクトリを含むすべてのファイル システム データは、NTFS ファイル システムによってファイルに保存されます。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364056(v=vs.85).aspx
答え3
以下は、NTFS がジャーナリングなどで拡張された非常に単純化されたビューです。
パーティションボリュームに使用されるディスク領域を定義するテーブル内のエントリ。これらは、外ファイルシステムであり、BIOS と OS によってディスクへのデータの保存方法を構造化するために使用されます。
NTFSボリュームNTFS ファイル システムの中核にマスター ファイル テーブルが含まれています。これは、オペレーティング システムが開いてストレージを構造化し、ボリュームに含まれるファイルに関するメタデータを格納するために使用するファイルです。ディスク上の各ファイルはマスター ファイル テーブルにレコード エントリを持ち、十分に小さい場合は MFT 内に完全に存在します。
より大きなファイルは、ファイル レコード エントリが指すエクステントです。
ディレクトリは、ファイル レコード エントリに関するインデックス情報を含むファイルであり、十分に小さい場合は、完全に MFT 内に存在します。
小さなファイルはすべて MFT 内に保存され、ボリューム内に多数のファイルとディレクトリが存在する可能性があるため、MFT はストレージ領域を増やすために断片化されることもあります (特定のプリセット領域に制限されていた FAT とは異なります)。