デフラグメンテーション
デフラグメンテーション (defragmentation、しばしば略してデフラグ)とは、コンピュータのファイルシステムにおけるフラグメンテーションを解消すること。
目次 |
[編集] HDDでの断片化
HDDのようなディスク式記憶装置でファイルの生成と削除を繰り返していると、ファイルが占める領域がだんだんと分断化されてゆく。これをフラグメンテーション(断片化)という。ファイルが断片化すると、ひとつのデータがディスクのあちこちに点在している状態になり、余分にディスクヘッドを多く動かさなければならないため、ファイルアクセスが遅くなり、またディスク装置の寿命を縮める恐れもある。空き領域が断片化すると、大きなファイルを生成するときに断片化しやすくなる。元々は、ファイルシステムがあえて断片化を許容することでデータの柔軟な管理を可能としているため、断片化は宿命といえる。
デフラグはこのような断片化された状態を整理し、ファイルや空き領域を記憶装置中で連続的に配置し直すことによってファイルアクセスの速度を向上させる可能性がある。
デフラグメンテーション処理自体も連続的な読み書き動作をディスク装置に求めるため、ディスク装置の寿命を縮める可能性があり、どの程度の断片化でデフラグを行うべきで、行うべきでないのかといった点で信頼できる実験データなどは知られておらず、おおむね経験則に基づいて実行されている。
[編集] 断片化の仕組み
[編集] フラグメンテーションの起きる概略図
以下は解説の為に簡略化してある。ファイルシステムによってはフラグメンテーションが起こらないようファイルの配置が工夫されたものも多い。
凡例: □ = 空き領域、■・◆・★・● = ファイル
| 1. | 初期状態 | ■■■■■◆◆◆◆◆★★★★★□□□□□ |
|---|---|---|
| 2. | ファイル◆を削除する | ■■■■■□□□□□★★★★★□□□□□ |
| 3. | ファイル●を生成する | ■■■■■●●●●●★★★★★●●●□□ |
ファイル●の占めるサイズが■に続く空きに合わないため2つに分断された。これを●の断片化という。 すると、両方の場所へアクセスしないといけないため、動作が遅くなる原因になる。
[編集] デフラグの効果
ハードディスクへのアクセス時間は以下の式により求めることができる。
- アクセス時間 = 平均位置決め時間 + 平均回転待ち時間 + データ転送待ち時間
平均位置決め時間と平均回転待ち時間は、ファイルの断片数に比例している。 データ転送待ち時間は、ファイルサイズに比例している。
記憶装置全体でのファイルの断片化を少なくすれば、総体としてのファイルアクセスでの平均位置決め動作と平均回転待ち動作を減らせるため、読み書きの高速化が期待出来る。ただしデータ転送待ち時間は変化しない。
そのため断片化の解消は、容量の小さいファイルには効果が大きいが、容量の大きなファイルには効果は少ない。
[編集] 計算例
以下の条件のディスクがあったとする。
- 平均位置決め時間 1秒、平均回転待ち時間 1秒、データ転送速度 1MB/秒
アクセス時間を計算すると
- 断片化0の1MBファイルだと、アクセス時間=1秒+1秒+1秒=3秒
- 断片化10の1MBファイルだと、アクセス時間=(1秒+1秒)*11+1秒=23秒
- 断片化0の100MBファイルだと、アクセス時間=1秒+1秒+100秒=102秒
- 断片化10の100MBファイルだと、アクセス時間=(1秒+1秒)*11+100秒=122秒
よってデフラグによる改善率を計算すると
- 1MBのファイルは、23/3=766%
- 100MBのファイルは、122/102=119%
となる。
[編集] デフラグソフトでの高速化の手法
デフラグソフトでのファイルの読み書きの高速化の手法をいくつか示す。
[編集] ディスク外周部への配置
ハードディスクにはデータがZCAV形式で記録されているため、ディスクの回転速度と記録密度が一定である。ハードディスクの外周部のデータ転送速度は、内周部のデータ転送速度に比べ、高速である。読み込み頻度の高いファイルをディスクの外周部に配置すると、データ転送待ち時間を短くすることができる。
[編集] 空き領域の最適化
ファイルをすき間なく配置することにより、ファイルを全体的にディスク外周部に移動させることができる。そのため読み込み速度が高速化される。また大容量のファイルを書き込む場合に断片化しにくくなる。しかしファイルの直後に空き領域が存在しない場合は、ファイルへの追記を行うときにファイルの断片化が発生しやすくなる。
[編集] 断片化の悪影響の軽減技術
デフラグソフトのメーカーは断片化によりパフォーマンスが低下すると主張している。しかしながら現在のオペレーティングシステムには、断片化の悪影響を軽減するための技術が搭載されている。これらの技術により通常の使用では断片化によるパフォーマンスの低下が抑えられている。
[編集] ディスクキャッシュの利用
ハードディスクから読み込まれたデータは、メモリのキャッシュ領域に保存されている。同じデータを再度読み込むときは、メモリのキャッシュ領域から読み込む。近年のOSはディスクキャッシュを積極的に活用するようになり、キャッシュファイルが巨大なメモリ領域を占有するようになったが、キャッシュミスする確率は相対的に低くなっている。そのため、近年のOSではメモリの増設によるファイルアクセスの高速化の効果は大きい。
[編集] ファイルの利用履歴を利用した先読み
ファイルの利用頻度は均一ではなく、局在化する。よく使うファイルの履歴を保存しておき、バックグラウンドで先読みしメモリに保存しておく。 WindowsXPのPrefetcher、WindowsVistaのWindows SuperFetchなど
[編集] 遅延書き込み
ディスクの書き込み時にはまずメモリのキャッシュ領域に書き込む。メモリのキャッシュ領域に書き込みが終了した時点で、ユーザーに書き込み完了を通知する。その後、バックグラウンドでメモリのキャッシュ領域からハードディスクに書き込む。断片化により書き込み時間が増加したとしても、ユーザーから見ると書き込み時間の遅延は感じられない。
[編集] 読み込み順序の変更
ファイルが3個所に断片化しているとする。ファイル断片A、ファイル断片B、ファイル断片Cとする。それらがハードディスク上にファイル断片C、ファイル断片A、ファイル断片Bという順番で並んでいるとする。この場合は、ファイル断片A、ファイル断片B、ファイル断片Cの順番で読み込むと、シーク時間が増加する。しかし実際にはファイル断片C、ファイル断片A、ファイル断片Bの順番で読み込む。その後、OSやハードディスク内のドライバが結合し、アクセススピードが増加しないような措置がとられる。
[編集] ソフトウェア
おそらく最も有名なデフラグメンター(デフラグソフト)は、MS-DOSとWindowsにバンドルされている「デフラグ」である。Windows 2000とWindows XPにはDiskeeperの機能限定版が搭載されている。
他の商用デフラグソフトには Diskeeper、PerfectDisk、O&O Defrag(廉価版は驚速デフラグ)、Norton SpeedDisk、TechTool Proなどがある。 ソフトウェアを使わずに断片化を解消する方法としては、記憶装置のバックアップをとり、データを消去してからバックアップからデータを再度読み込み直せばよい。
[編集] SSDでのデフラグ
Flash SSDというHDDに代わる二次記憶装置が登場しているが、これはHDDとは根本的に動作原理が異なり、デフラグと相性が悪い[1] 。半導体メモリに共通の特徴であるが、Flash SSDもHDDのシークに相当する動作が存在せず、ランダムアクセスでの遅延時間がそれほど掛からず、また、ウェアレベリングによって意図的に書き込みをページサイズ単位で分散配置するようにしているので、デフラグする必要は無く、反対にデフラグによってFlash SSD内のファイルの位置を移動させるだけのために書き換え動作を行なえば、フラッシュ・メモリの短所である10万回やそれ以下程度の書き換え可能回数を使うため寿命を縮めてしまう。ただしキャッシュ非搭載のSSDで空き領域の断片化により書き込み速度が低下している場合、デフラグの効果が現れることもある。
[編集] OSごとの注意点
Windows Vistaでは初期設定で 1 週間に 1 度、デフラグが自動的に起動するように設定されているが、デフラグ実行中はディスクへのアクセス速度が低下するため、マイクロソフトは、コンピュータ使用中はデフラグをオフにすることを呼びかけている[2] 。
HFS+を採用するMac OS Xでは自動デフラグ機能がバックグラウンドで常時起動しているが、デフラグは少しずつ自動的に行われるため、ユーザーが意識する機会はない。またファイルの前後にあえて空き領域を確保することで断片化が起こりにくいようになっており、アップルはデフラグツールの使用を推奨していない[3]。
[編集] 標準のデフラグ・ツール
- FAT - デフラグ
- exFAT - デフラグ・ツールを持たない
- ext2 - e2defrag
- ext3 - デフラグ・ツールを持たない
- ext4 - e4defrag
- NTFS - デフラグ
- ReiserFS - デフラグ・ツールを持たない
- XFS - xfs_fsr (マウント状態で使える)
- HFS+ - デフラグ・ツールを持たない(Mac OS Xでは遅延再配置とHot-File-Adaptive-Clusteringが自動デフラグを行う)
[編集] 注釈
- ^ http://journal.mycom.co.jp/news/2008/07/23/052/index.html 「Windows VistaはSSDに最適化されていない」--米SanDisk CEOがコメント
- ^ Windows Vistaチューニング デフラグは効率良く効果的に行いたい
- ^ About disk optimization with Mac OS X