|
コラム
NTFSではフラグメントは発生しにくい? 2000/10/21 |
![]() |
|
|
|
Windows NTの発表とともに新しいNTFSファイル・システムが紹介されたとき、マイクロソフトは「NTFSはFATと違ってフラグメントが起こりにくい」と公言していた。すでに述べているとおり、実際にはNTFSにおいてもフラグメントは日常的に発生する。それでは、何を根拠にこのような発言がなされたのだろうか? この理由は、NTFSで採用されたアイデアによるものと思われる。複雑なNTFSファイル・システムのすべてを紹介するのは別の機会に譲るとして、NTFSの大きな特徴の1つであるこのアイデアについてご紹介しよう。
その秘密はMFT(Master File Table)にあり
ファイル・システムでは、広大なディスク領域をクラスタと呼ばれる固定領域に区切り、このクラスタを単位として割り当てることで、ディスク中にファイルを保存できるようにしている。ファイルのデータが、物理的にどのクラスタにどのような順番で記録されているかを管理するのがファイル・システムの役割であり、ファイルの読み書き要求に応じて、それを物理的なクラスタへのアクセスに変換する。
MS-DOSやWindows 9xが採用するFATファイル・システムも、こうした基本的な管理方式は変わらない。そもそもFATファイル・システムという名前の由来は、ファイルとそれを構成するクラスタの対応関係などを記録した管理テーブルがFAT(File Allocation Table)という名称だったことによる。ファイル名やファイルの属性(読み出しのみ属性、隠しファイル属性など)、タイムスタンプなどはディレクトリ・エントリと呼ばれる特殊な領域に保存されるようになっていた。
これに対しNTFSでは、ディスク中に含まれるすべてのファイルやディレクトリ(フォルダ)ごとに固定長の管理レコードを作成し、これを集中的に管理することで、ファイル・システムの柔軟性と機能性、信頼性を向上させようとしている。この管理レコード群はMFT(Master File Table)と呼ばれる。MFTの概要を図示すると次のようになる。
![]() |
| NTFSの心臓部、MFTの構成 |
| MFT(Master File Table)は、ファイルやディレクトリごとに1つ(ないし複数)が対応する固定サイズ(通常は1Kbytes)のレコードからなる。このレコードの内部には、ファイル名やタイムスタンプ(日付)に加え、ファイルの属性が記録される。ユニークなのは、ファイルのデータ自体も属性の一部として捉え、サイズの小さなもの(他の属性にもよるが、通常は750bytes程度かそれ以下)については、MFT中のレコードに直接データを記録してしまうことだ(図の上側のレコード)。一方、MFTレコード内に収まりきらないサイズのファイルについては、MFT外部のクラスタにこれを書き込み、そのクラスタへのインデックスをMFTレコードに記録しておく。 |
このようにMFTは、固定長のレコードからなるテーブルで、NTFSボリューム中に存在するファイルやディレクトリごとに1つ(ないし1つ以上)のエントリが対応する。レコード・サイズは最小で1Kbytes、最大で4Kbytesだが、通常は1Kbytesである。新しいファイルやディレクトリ(フォルダ)が作成されると、MFT内のレコードが1つ割り当てられる。
MFTには、ファイル名やファイルのタイムスタンプ(作成日時/更新日時/アクセス日時)、アクセス権などの基本情報に加え、ファイルのデータ自身(ファイル本体)も属性の一部として捉える。これがNTFSの大きな特徴の1つだ。つまり他の属性データのサイズにもよるが、通常は約750bytes程度までの小さなファイルなら、MFTレコード内に記録されてしまうのだ(図の上側にある「小さなファイルのレコード」)。この場合、ファイル名などに関する情報と、データ自体を同じ場所から読み出すことが可能なので、ファイル・アクセスは極めて高速になる。
一方、MFTレコードに収まりきらないようなファイルについては、MFTファイル以外の領域に一連の新しいクラスタが割り当てられ、そこへのインデックスのみがデータ属性内に記録される(図の下側にある「大きなファイルのレコード」)。ファイルに必要なサイズの連続したクラスタを1度に確保できない場合には、このクラスタへのインデックスは複数になる。これはまさにフラグメントしているファイルである。図には示していないが、1つのレコードにすべての属性が収まりきらない場合には、1つのファイルに対して複数のMFTレコードを使用することもある。なおNTFSでは、ディレクトリ(フォルダ)もファイルの一種として取り扱われるようになっており、わずかなファイルしか含んでいないディレクトリの情報は、MFTレコード内だけで完結できる。MFTレコードだけでは収まりきらないほどファイルが増えてきたら、MFT外部のクラスタを使う点も通常のファイルと同じである。
ファイルのすべてが物理的に連続したクラスタに書き込まれている場合には、MFTレコード内のインデックスも1つですむが、フラグメントによってデータがとびとびになる場合は、それらの先頭クラスタへのインデックスがMFTレコードに記録される(ファイルがフラグメントしているというのは、このような状態を指す)。
予想外にたくさんある「小さな」ファイル
このようにNTFSでは、小さなファイルやディレクトリに関しては、MFTレコードだけですべての情報を記録できる。つまり、小さなファイルによってクラスタが虫食い状態にならないということだ。
問題は、750bytes未満などという小さなファイルがどれほどあるかであるが、実際にWindows 2000の検索機能を使って、手元のコンピュータでそれらのファイルをざっと検索してみたところ、ディレクトリやアプリケーションのショートカット、インターネット・ショートカット([お気に入り]メニューなどに登録される)、クッキーなどなど、実に数多くのファイルが存在している。FATではフラグメントの要因ともなっていたこれらのファイルも、MFTレコードのメカニズムによって、NTFSではフラグメントの要因から除外されている。特にこの種の小さなファイルは、一時ファイルなどとして頻繁に作成・削除されることを考えれば、かなりの影響があるだろう。
もちろん、MFTレコードに収まらないサイズの大きなファイルについては、NTFSであってもフラグメントは起こる。しかし従来のFATに比較してフラグメントが発生しにくいとされた根拠は、この新しいMFTのメカニズムを指していたものと考えられる。
MFT自体もフラグメントを起こす可能性がある
NTFSファイル・システムにおいては、MFTが重要な役割を果たすことがお分かりいただけただろう。ボリュームをNTFSでフォーマットすると、MFT用として、あらかじめボリューム全体の12.5%の領域が確保されるようになっている。
しかし1つのボリュームに数多くのファイルが存在する場合や、激しいファイルのフラグメントに起因するクラスタのインデックスによってMFTレコードが不足した場合には、32レコード単位で自動的にMFTが拡張される仕様になっている。しかし前出のページング・ファイル同様、この場合には、MFTが激しくフラグメントを起こす可能性が高い。MFTはNTFSボリューム全体を管理する重要なデータであり、これがフラグメントを起こすと、ファイル入出力性能に大きな影響を及ぼすだろう。
![]() |
Inside Microsoft Windows 2000 Third Edition |
|
Windows 2000カーネルの内部を詳細に解説したユニークな解説書。Windows 2000の内部機構を知りたい技術者には必携の書。 |
|
| Book Reviewを読む |
ページング・ファイルとは異なり、このMFTの自動拡張を抑制するようなオプションな存在しない。ただし後述するDiskeeperには、このMFTのフラグメントを防止するという機能(Frag Guard機能と呼ばれる)が追加されている。
なお、紙数の都合から、ここではNTFSのメカニズムを詳しく述べられなかったが、NTFSの内部構造を詳しく知りたければ、『Inside Windows 2000 Third Edition』(Microsoft Press発行)が参考になるだろう(囲み記事参照)。
| 検証 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









