よくLinuxではデフラグの必要がないと言われますが、理由がよくわかりませんでした。それをわかりやすく説明しているサイトがありました。

参照サイト:Why doesn't Linux need defragmenting?

要約すると、次のようになります。

【Windowsの場合】
def-1
←hello.txtという名前で「Hello, world」という内容のファイルを保存。


def-2
←bye.txtという名前で「Goodbye, world」という内容のファイルを追加。


つまり、この場合、追加するデータは最初のデータの直後に連続して保存されます。そこで、最初のデータを「Hello, world!!」と書き換えると、「!!」が次のように分割されてしまいます。これが、断片化の正体です。

def-3

【Linuxの場合】
Linuxでは事情が違います。2つのデータは下の画像のように、初めから離れた別の場所に格納されます。これは、Linuxではもともとマルチユーザを前提にしていることに起因するようです。なので、ファイルを変更する際に断片化が起こりづらいということですね。

def-5
←上と同様に、hello.txtという名前で「Hello, world」という内容のファイルを保存。続いて、bye.txtという名前で「Goodbye, world」という内容のファイルを追加。さらに、最初のデータを「Hello, world!!」と書き換えた結果。


もちろんデータ量が相当大きくなれば、断片化も起こり得ますが、その頃にはPC自体を買い換えたり、OSを入れ替えたりしているでしょうから、実質的に必要ないという結論になるのでしょう。

ただし、HDDは複数のディスクで構成されており、ディスクをまたがったデータは断片化とは認識されないが、実際にはHDDの針が移動するので、パフォーマンスへの影響を免れないとも説明されています。

僕も詳しくないので、誤解している部分があるかも知れません。
間違いがあったら、ご指摘下さい。

…でも、なんとなくすっきりした気がします。