連載
» 2012年10月02日 00時00分 公開

ファイルシステムの基礎知識(2):ファイルシステムの技術 (2/2)

[星野隆義,シマンテック]
前のページへ 1|2       

ファイルシステムのパフォーマンスとアロケ―ション方式

 ここからは、ファイルシステムのパフォーマンスについて説明したい。ファイルシステムのパフォーマンスに大きな影響を与える要素として「アロケーション方式」がある。アロケーション方式には、1つのファイルを連続したハードディスク領域に配置する「エクステントアロケーション方式」と、複数のハードディスク領域に分散して配置する「ブロックアロケーション方式」の2種類がある。まずは、それぞれの特徴に関して説明しよう。

 NTFSやベリタスファイルシステム等が採用するエクステントアロケーションは、本の例え話そのものの構造である。目次に「カレーの作り方:68ページ」という記述があったので68ページを開いたら、そこからカレーの作り方が最後まで連続して記述してある。従って、単純にページをめくるだけで、カレーの作り方が最後まで読めるのである。このため、パフォーマンスの面、特にファイルを最初から最後まで順にアクセスしていくシーケンシャルアクセスで非常に優位である。「単純にページをめくる」という行為は、システムの面でオーバーヘッドが小さいという点に置き換えられることがご理解いただけると思う。

 しかし、ファイルの削除/作成/更新を繰り返すと、パフォーマンスの劣化が発生する。カレーの作り方が68ページから70ページまで記述してあったとする。この状況で、カレーのレシピはこの本に不要になり、代わりに焼きそばのレシピを掲載する必要性が発生したとする。つまり、ファイルの削除と作成である。焼きそばのレシピが4ページ分あるとすると処理は厄介である。なお、カレーのレシピを削除して焼きそばのレシピを作成するのではなく、カレーのレシピに1ページ分の追記を行いたい時でも処理は同じである。つまり、68ページから70ページまでにレシピの一部を掲載した上で、どこかの空きページに残りの1ページ分のレシピを掲載する事になる。そうなると、読む側は途中でページをめくる処理が必要になり非常に不便である。このような事を繰り返すことで、ファイルシステムのパフォーマンスが劣化していくのである。

 一方、ext3等が採用するブロックアロケーションは、現実の本の構造とは異なっている。カレーの作り方を68ページから70ページに連続して掲載するという仕組みではなく、68ページと168ページと268ページに3分割して掲載するという仕組みである。従って、パフォーマンスの面、特にファイルを最初から最後まで順にアクセスしていくシーケンシャルアクセスでは、エクステントアロケーションに対して劣っている。しかし、ファイルの削除/作成/更新を繰り返しても、パフォーマンスの劣化は発生しない。初めから1つのファイルを分散して配置しているので、影響を受けないのだ。

 パフォーマンスの面で優位なエクステントアロケーションであるが、ファイルの削除と作成と更新の繰り返しによってパフォーマンスの劣化が発生する。この現象を「フラグメント」もしくは「断片化」と言う。そして、この状態を改善する処理を「デフラグ」もしくは「ファイルシステムの最適化」という。図3は、Windows 7に付属のNTFSのデフラグツールである。

図3 NTFSにおけるファイルシステムのデフラグツール。Cドライブの断片化分析と最適化が毎週月曜日の3:00に自動実行される

 ここで、「カレーのレシピを削除して焼きそばのレシピを掲載する」例えを用いて、デフラグの仕組みを説明しよう。

 焼きそばのレシピが追加された後、目次には「焼きそばの作り方:68ページから70ページおよび381ページ」という記述があり、実際に68ページから70ページまでと381ページの2か所に分散されてレシピが記述されている。読者にとっては、非常に不愉快な状況である。ここにデフラグを施すと、目次は「焼きそばの作り方:68ページ」という記述になり、68ページから71ページまでに連続してレシピが掲載される。目次も見やすくなり、何よりもレシピを読んでいる途中でページをめくらなくて済む。ただし、デフラグの際は、まず381ページに記載された内容をどこかに退避し、次に71ページから380ページまでに記載された内容を全て1ページ分後ろに移動して71ページ目を空け、そこに退避しておいた381ページ目の内容を書き込む、という大手術が行われる。その間は、当然ファイルシステムのオーバーヘッドが大きくなるので、業務時間帯に実行するのはお勧めできない。しかし、ファイルシステムのパフォーマンスを維持する上でデフラグは非常に重要な運用手段であり、ファイルの削除と作成と更新を繰り返す使用形態では、定期的な実施は必須と考えていただきたい。実は、図3は筆者のPCの設定画面である。「毎週月曜日の午前3時に定期的にCドライブのデフラグを実行」という設定にし、「毎週日曜日の夜から翌朝にかけて電源を入れたままにしておく」という非常に簡単な運用を続けているだけで、購入から1年以上経った今でも、当初と変わらないファイルシステムのパフォーマンスを維持している

まとめ

 第2回では、障害とパフォーマンスという2つのテーマについて述べた。特にパフォーマンスについては「今すぐ自分のPCにも適用しよう」という読者もいるのではないかと思う。第3回では仮想化環境に視点を移し、「これまで述べてきたことが、仮想化環境でも同じように通用するのか、あるいは他の考慮が必要なのか」という点について解説してみたい。

筆者紹介

星野隆義

株式会社シマンテック

セールスエンジニアリング本部

ストレージ&クラスター製品担当 主幹技師



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。