知識マップ: Windows I/Oの深層(第5回) ── NTFSの内部構造:MFTから理解するファイルシステム
記事「Windows I/Oの深層(第5回) ── NTFSの内部構造:MFTから理解するファイルシステム」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
NTFSの中心はMFT(マスターファイルテーブル)で、全ファイルがMFT内のレコードとして台帳管理されます。小さいデータはレコード内に常駐し、大きいデータはクラスター列(データラン)への参照だけを持つ非常駐になり、これが小ファイル大量処理の遅さや断片化の正体です。複数データストリーム・ハードリンク・8.3短縮名はいずれも「属性の集合」という同じ仕組みの応用で、リパースポイントはシンボリックリンクからOneDriveのファイルオンデマンドまでを支える「開く」への公式フックです。$LogFileが守るのは構造の整合性であり、データ内容の耐久性は第4回のキャッシュ制御の道具で別途作り込む必要があります。
flowchart LR
accTitle: NTFS内部構造とMFTの知識マップ
accDescr: NTFS、MFT、ファイルレコード、常駐・非常駐属性、データラン、断片化、複数データストリーム、Zone.Identifier、ハードリンク、8.3短縮名、リパースポイント(シンボリックリンク・ジャンクション・OneDriveファイルオンデマンド)、$LogFileとUSNジャーナル、スパースファイルとNTFS圧縮の関係を示す図
ntfs["NTFS"]
mft["MFT(マスターファイルテーブル)"]
mft_record["MFTファイルレコード"]
mft_zone["MFTゾーン"]
fragmentation["断片化(NTFS)"]
resident_attribute["常駐属性(resident)"]
non_resident_attribute["非常駐属性(non-resident)"]
data_run["データラン"]
fsutil["fsutil"]
alternate_data_stream["代替データストリーム(ADS)"]
zone_identifier["Zone.Identifier(Mark of the Web)"]
streams_tool["streams(Sysinternals)"]
size_disk_usage_mismatch["論理サイズとディスク使用量の乖離"]
hard_link["ハードリンク"]
eight_dot_three_name["8.3短縮名"]
reparse_point["リパースポイント"]
symbolic_link["シンボリックリンク"]
junction["ジャンクション(マウントポイント)"]
onedrive_files_on_demand["OneDriveのファイルオンデマンド"]
ntfs_logfile["$LogFile(NTFSトランザクションログ)"]
volume_corruption["ボリューム破損"]
cache_manager["キャッシュマネージャー"]
usn_journal["USNジャーナル(変更ジャーナル)"]
sparse_file["スパースファイル"]
ntfs_compression["NTFS圧縮"]
asynchronous_io["非同期I/O"]
procmon["Process Monitor(procmon.exe)"]
ntfs -->|"利用する"| mft
mft -->|"利用する"| mft_record
mft -->|"前提とする"| mft_zone
mft_zone -.->|"軽減する"| fragmentation
mft_record -->|"利用する"| resident_attribute
mft_record -->|"利用する"| non_resident_attribute
resident_attribute -->|"両立しない"| non_resident_attribute
non_resident_attribute -->|"利用する"| data_run
data_run -.->|"原因になり得る"| fragmentation
fragmentation -->|"で確認できる"| fsutil
ntfs -->|"利用する"| alternate_data_stream
zone_identifier -->|"に保存される"| alternate_data_stream
zone_identifier -->|"で確認できる"| streams_tool
alternate_data_stream -->|"で確認できる"| streams_tool
alternate_data_stream -.->|"原因になり得る"| size_disk_usage_mismatch
ntfs -->|"利用する"| hard_link
hard_link -->|"前提とする"| mft_record
ntfs -->|"利用する"| eight_dot_three_name
eight_dot_three_name -->|"で構成できる"| fsutil
ntfs -->|"利用する"| reparse_point
reparse_point -->|"で確認できる"| fsutil
symbolic_link -->|"実装を担う"| reparse_point
junction -->|"実装を担う"| reparse_point
onedrive_files_on_demand -->|"実装を担う"| reparse_point
ntfs -->|"利用する"| ntfs_logfile
ntfs_logfile -->|"防止する"| volume_corruption
ntfs -->|"利用する"| cache_manager
ntfs -->|"利用する"| usn_journal
usn_journal -->|"で確認できる"| fsutil
ntfs -->|"利用する"| sparse_file
sparse_file -->|"原因になり得る"| size_disk_usage_mismatch
ntfs -->|"利用する"| ntfs_compression
ntfs_compression -->|"原因になり得る"| size_disk_usage_mismatch
ntfs_compression -->|"両立しない"| asynchronous_io
ntfs -->|"で確認できる"| procmon
概念間の関係(全35件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- NTFSはMFT(マスターファイルテーブル)を利用します。
- MFT(マスターファイルテーブル)はMFTファイルレコードを利用します。
- MFT(マスターファイルテーブル)はMFTゾーンを前提とします。
- MFTゾーンは断片化(NTFS)を軽減します。
- MFTファイルレコードは常駐属性(resident)を利用します。
- MFTファイルレコードは非常駐属性(non-resident)を利用します。
- 常駐属性(resident)は非常駐属性(non-resident)と両立しません。
- 非常駐属性(non-resident)はデータランを利用します。
- データランは断片化(NTFS)の原因になることがあります。
- 断片化(NTFS)はfsutilで確認できます。
- NTFSは代替データストリーム(ADS)を利用します。
- Zone.Identifier(Mark of the Web)は代替データストリーム(ADS)に保存されます。
- Zone.Identifier(Mark of the Web)はstreams(Sysinternals)で確認できます。
- 代替データストリーム(ADS)はstreams(Sysinternals)で確認できます。
- 代替データストリーム(ADS)は論理サイズとディスク使用量の乖離の原因になることがあります。
- NTFSはハードリンクを利用します。
- ハードリンクはMFTファイルレコードを前提とします。
- NTFSは8.3短縮名を利用します。
- 8.3短縮名はfsutilで構成できます。
- NTFSはリパースポイントを利用します。
- リパースポイントはfsutilで確認できます。
- シンボリックリンクはリパースポイントの実装を担います。
- ジャンクション(マウントポイント)はリパースポイントの実装を担います。
- OneDriveのファイルオンデマンドはリパースポイントの実装を担います。
- NTFSは$LogFile(NTFSトランザクションログ)を利用します。
- $LogFile(NTFSトランザクションログ)はボリューム破損を防ぎます。
- NTFSはキャッシュマネージャーを利用します。
- NTFSはUSNジャーナル(変更ジャーナル)を利用します。
- USNジャーナル(変更ジャーナル)はfsutilで確認できます。
- NTFSはスパースファイルを利用します。
- スパースファイルは論理サイズとディスク使用量の乖離の原因になることがあります。
- NTFSはNTFS圧縮を利用します。
- NTFS圧縮は論理サイズとディスク使用量の乖離の原因になることがあります。
- NTFS圧縮は非同期I/Oと両立しません。
- NTFSはProcess Monitor(procmon.exe)で確認できます。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。