フリーキーズ | 独学プログラミング

フラグメンテーション(断片化)とは

最終更新日

フラグメンテーション(断片化)とは、ハードディスクドライブやメモリなどのストレージシステムにおいて、データが連続せず、散在して保存されている状況を表すコンピュータ用語です。フラグメンテーションは、時間の経過とともにデータが追加、削除、変更されることで発生し、ストレージスペースの非効率的な使用やパフォーマンスの低下を招きます。フラグメンテーションは、外部フラグメンテーションと内部フラグメンテーションの2種類に分類されます。

外部フラグメンテーション

外部フラグメンテーションは、ストレージの空き領域が小さなブロックに分割され、連続性がない場合に発生します。ファイルが作成、削除、サイズ変更されると、ストレージスペースが断片化され、新規ファイルや増加するファイルに対して連続したブロックを割り当てることが難しくなります。その結果、ストレージシステム上に散在する複数のファイルの断片を検索してアクセスする必要があるため、データアクセス時間が遅くなることがあります。

本棚を使った例

例えば、本棚を想像してください。本がデータを表し、本と本の間の空いたスペースが空きストレージスペースを表しています。本を追加したり、削除したり、並べ替えたりすると、空いたスペースが散らばり、新しい本を保存するための連続したスペースを見つけるのが難しくなることがあります。これは、ストレージシステムにおける外部フラグメンテーションに似ています。

内部フラグメンテーション

内部フラグメンテーションは、割り当てられたストレージスペースが十分に利用されず、ストレージ容量が無駄になる場合に発生します。これは、データが固定サイズのブロックに格納されており、データのサイズがブロックサイズより小さい場合に発生する可能性があります。各ブロックの未使用部分は、他のデータを保存するために使用できず、結果として無駄なスペースが発生します。

小さな箱を使った例

例えば、さまざまなモノ(データ)を収納するための小さな箱(固定サイズのブロック)がいくつもあるとします。このとき、大きすぎる箱に小さなオブジェクトを入れると、その箱の残りのスペースは他のオブジェクトに使えなくなります。これは、ストレージシステムにおける内部フラグメンテーションに似ています。

フラグメンテーションを解消するデフラグ

デフラグとは、ストレージシステム内のデータをより効率的に、連続したブロックに格納するように並べ替えることで、フラグメンテーションを解消する処理です。ハードディスクドライブの場合、デフラグを行うことで、リード/ライトヘッドがファイルの複数の断片間を移動する必要性を減らし、アクセス時間を改善できます。

要約すると、フラグメンテーションとは、コンピュータで使用される用語で、データがストレージシステム内の非連続で散在した場所に保存され、ストレージスペースの非効率的な使用とパフォーマンスの低下を招く状況を表します。フラグメンテーションの例としては、空きストレージスペースが小さなブロックに分割されている外部フラグメンテーション、割り当てられたストレージスペースが十分に利用されていない内部フラグメンテーションなどがあります。デフラグは、フラグメンテーションを減らし、ストレージシステムの性能を向上させるのに役立つプロセスです。