「デフラグ」はこの項目へ転送されています。(Windows)」をご覧ください。defragmentation)とは、コンピュータのファイルシステムにおけるフラグメンテーションを解消すること。略してデフラグとも呼ばれる。ようなディスク式記憶装置でファイルの生成と削除を繰り返していると、ファイルが占める領域がだんだんと分断化されてゆく。これをフラグメンテーションまたは断片化という。ファイルが断片化すると、ひとつのデータがディスクのあちこちに点在している状態になり、余分にディスクヘッドを多く動かさなければならないため、ファイルアクセスが遅くなり、またディスク装置の寿命を縮める恐れもある。空き領域が断片化すると、大きなファイルを生成するときに断片化しやすくなる。元々は、ファイルシステムがあえて断片化を許容することでデータの柔軟な管理を可能としているため、断片化は宿命といえる。デフラグはこのような断片化された状態を整理し、ファイルや空き領域を記憶装置中で連続的に配置し直すことによってファイルアクセスの速度を向上させる可能性がある。デフラグメンテーション処理自体も連続的な読み書き動作をディスク装置に求めるため、ディスク装置の寿命を縮める可能性がある。どの程度の断片化でデフラグを行うべきか、といった点で信頼できる実験データなどは知られておらず、おおむね経験則に基づいて実行されている。断片化の仕組み[編集]フラグメンテーションが発生するモデル[編集]以下は解説の為に簡略化してある。ファイルシステムによってはフラグメンテーションが起こらないようファイルの配置が工夫されたものも多い。ファイル●の占めるサイズが■に続く空きに合わないため2つに分断された。この状態で、ファイル●を読み出そうとすると両方の場所へアクセスしなければならない。記録された媒体がHDDの場合、一続きの領域へのアクセスに比べ、一続きでない領域へのアクセスは時間がかかるため、動作が遅くなる原因になる。デフラグの効果[編集]ハードディスクへのアクセス時間は以下の式により求めることができる。平均位置決め時間と平均回転待ち時間は、ファイルの断片数に比例している。データ転送待ち時間は、ファイルサイズに比例している。記憶装置全体でのファイルの断片化を少なくすれば、総体としてのファイルアクセスでの平均位置決め動作と平均回転待ち動作を減らせるため、読み書きの高速化が期待出来る。データ転送待ち時間は変化しない。そのため断片化の解消は、容量の小さいファイルには効果が大きいが、容量の大きなファイルには効果は少ない。計算例[編集]平均位置決め時間が1秒、平均回転待ち時間が1秒、データ転送速度が1MB/秒のディスクがあるとする。断片化10の100MBファイルだと、アクセス時間=(1秒+1秒)*11+100秒=122秒よってデフラグによる改善率を計算すると1MBのファイルは、23/3=766%100MBのファイルは、122/102=119%となる。デフラグソフトでの高速化の手法[編集]デフラグソフトでのファイルの読み書きの高速化の手法をいくつか示す。ディスク外周部への配置[編集]ハードディスクにはデータがZCAV形式で記録されているため、ディスクの回転速度と記録密度が一定である。ハードディスクの外周部のデータ転送速度は、内周部のデータ転送速度に比べ、高速である。読み込み頻度の高いファイルをディスクの外周部に配置すると、データ転送待ち時間を短くすることができる。空き領域の最適化[編集]ファイルをすき間なく配置することにより、ファイルを全体的にディスク外周部に移動させることができる。そのため読み込み速度が高速化される。大容量のファイルを書き込む場合に断片化しにくくなる。ファイルの直後に空き領域が存在しない場合は、ファイルへの追記を行うときにファイルの断片化が発生しやすくなる。断片化の悪影響の軽減技術[編集]デフラグソフトのメーカーは断片化によりパフォーマンスが低下すると主張している。現在のオペレーティングシステムには、断片化の悪影響を軽減するための技術が搭載されている。これらの技術により通常の使用では断片化によるパフォーマンスの低下が抑えられている。ディスクキャッシュの利用[編集]ハードディスクから読み込まれたデータは、メモリのキャッシュ領域に保存されている。同じデータを再度読み込むときは、メモリのキャッシュ領域から読み込む。近年のOSはディスクキャッシュを積極的に活用するようになり、キャッシュファイルが巨大なメモリ領域を占有するようになったが、キャッシュミスする確率は相対的に低くなっている。そのため、近年のOSではメモリの増設によるファイルアクセスの高速化の効果は大きい。ファイルの利用履歴を利用した先読み[編集]ファイルの利用頻度は均一ではなく、局在化する。使うファイルの履歴を保存しておき、バックグラウンドで先読みしメモリに保存しておく。SuperFetchなどが該当する。遅延書き込み[編集]ディスクの書き込み時にはまずメモリのキャッシュ領域に書き込む。メモリのキャッシュ領域に書き込みが終了した時点で、ユーザーに書き込み完了を通知する。その後、バックグラウンドでメモリのキャッシュ領域からハードディスクに書き込む。断片化により書き込み時間が増加したとしても、ユーザーから見ると書き込み時間の遅延は感じられない。読み込み順序の変更[編集]ファイルが3個所に断片化しているとする。ファイル断片A、ファイル断片B、ファイル断片Cとする。それらがハードディスク上にファイル断片C、ファイル断片A、ファイル断片Bという順番で並んでいるとする。この場合は、ファイル断片A、ファイル断片B、ファイル断片Cの順番で読み込むと、シーク時間が増加する。実際にはファイル断片C、ファイル断片A、ファイル断片Bの順番で読み込む。その後、OSやハードディスク内のドライバが結合し、アクセススピードが増加しないような措置がとられる。ソフトウェア[編集]最も有名なデフラグメンター(デフラグソフト)は、MS-DOSとWindowsにバンドルされている「デフラグ」と推測される。XPにはDiskeeperの機能限定版が搭載されている。ソフトウェアを使わずに断片化を解消する方法としては、記憶装置のバックアップをとり、データを消去してからバックアップからデータを再度読み込み直せばよい。SSDでのデフラグ[編集]ソリッドステートドライブ(SSD)は、ハードディスクドライブ(HDD)の代替デバイスとして使われる新たな補助記憶装置である。これはHDDとは根本的に動作原理が異なるため、従来のHDD用に設計されたデフラグメンテーションツール等とは、相性が非常に悪い[1]。前出のデフラグの効果では、ヘッドのシーク待ち時間や、ディスクの回転待ち時間などのHDDへのアクセス時間がその前提となっている。SSDはアクセス時間がその約100万分の1程度と非常に短いため、断片化解消による改善効果は、SSDではほぼ存在しないに等しい。SSD内部ではウェアレベリングやガベージコレクション等の処理により、高度な管理として動的にデータの記憶素子ページへの配置を分散している。そのため、HDD向けのデフラグツールの適用は単にSSDへの書き込み量を無駄にかつ大量に増加させ、もってSSD内部の管理メタデータの撹乱や、内部素子であるフラッシュメモリーの寿命を縮めるだけの処理となる。ライトアンプリフィケーションも参照。キャッシュ非搭載のSSDで空き領域の断片化により書き込み速度が低下している場合、デフラグの効果が現れることもある[要出典]。8では、OS標準のデフラグツール「ドライブのデフラグと最適化」でSSDのドライブに対して、従来のHDD向けデフラグではなく、ボリュームの空き領域全体にTRIMコマンドを定期的に発行するように標準状態でスケジュールされている[2]。従来はSSDの専用ツールで行っていたSSDへのTRIMの発行を「SSDへのデフラグ」と称する向きもあるが、正しい用法ではない。仮想ストレージでのデフラグ[編集]ソリッドステートドライブ(SSD)の場合と似た理由で、仮想マシンにアタッチされ、または単体でマウントされた仮想ハードディスクに対する、HDD用に設計されたデフラグメンテーションツールの適用も、パフォーマンス上の問題を引き起こす場合がある。具体的には、容量可変の仮想ハードディスクに対して従来のデフラグツールを適用すると、未使用領域に対する書込が生じ、それによって仮想ハードディスクの実容量が増加するという弊害が生じる[3]。仮想マシンのゲストOS上でのデフラグツールの適用も同様の問題を起こす場合がある。(Windows)を参照)。Vistaでは初期設定で1週間に1度、デフラグが自動的に起動するように設定されている。デフラグ実行中はディスクへのアクセス速度が低下するため、マイクロソフトは、コンピュータ使用中はデフラグをオフにすることを呼びかけている[4]。HFS+を採用するmacOSでは自動デフラグ機能がバックグラウンドで常時起動している。デフラグは少しずつ自動的に行われるため、ユーザーが意識する機会はない。ファイルの前後にあえて空き領域を確保することで断片化が起こりにくいようになっており、アップルはデフラグツールの使用を推奨していない[5]。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。