ファイルシステムの「外部断片化」とは何ですか?

ファイルシステムの「外部断片化」とは何ですか?

私はEXT4を使用していますが、すべてのUnix / Linuxファイルシステムに関連する問題のようです。

「Ext4の断片と範囲の違い」に対する2022年の回答指摘した:

外部断片化は、関連ファイルがすべて1つのディレクトリにあり、ディスク全体に分散されている場合に発生します。ディレクトリ内のすべてのファイルを読み取ろうとすると、内部断片化と同じように多くのパフォーマンス問題が発生する可能性があります。 ext4fsアルゴリズムはまた、同じディレクトリ内の他のファイルと同じシリンダグループ内のファイルにブロックを割り当てようとし、外部断片化を最小化しようとします。

次の理由でこれが本当かどうか疑問に思います。

  1. これを確認できる他のソースが見つかりません。 「外部断片化」のWeb検索結果は通常RAM断片化を指しますが、「ext4外部断片化」を指定するといくつかの回答が提供されますが、通常は古い回答(<2010)が提供されます。

  2. 2009年のArch Linuxフォーラムの投稿FS コンテキストでは、「外部断片化」の全く異なる定義が提供されます。

    瓦礫には、内部瓦礫と外部瓦礫の2種類があります。内部断片化は、ファイルシステムが特定のサイズ(4KBなど)のブロックを使用する場合であるため、サイズが1KBしかないファイルがある場合は4KBブロックに格納されるため、3KBブロックは無駄になります。これは本当に避けられないことです。

    外部断片化は、ファイルが連続して配置されていない場合、つまり互いに離れている複数のブロックに分散している場合です。そのため、ディスクヘッドがすべてのフラグメントを収集してファイルを再構築するのに時間がかかります。

これまでのところ、私の意見は次のとおりです。

  • 以前に引用されたStackExchange 2022の回答は完全に間違っていました。

  • 2番目に引用された定義は正確です。

    外部断片化は、ファイルが連続して配置されていない場合、つまり互いに離れている複数のブロックに分散している場合です。

  • そして、「同じディレクトリにある他のファイルと同じシリンダグループ内のファイルにブロックを割り当てようとするもの」のようなものはありません(最初の引用に引用)。デフォルトでは、FS(またはOS)がディスク上の同じディレクトリにファイルをグループ化しようとすると、通常、FS(少なくともEXT4の場合)が大量のファイルでファイルを囲みようとするという事実と競合します。 。将来のファイル拡張時にファイルの断片化を防ぐための空き容量です。

誰かが私の結論が正しいことを確認できますか(したがって、引用されたStack Exchangeの答えが間違っています)?

[編集する]

もっと調査した後、私は「外部」と「内部」の断片化という用語がファイルシステムのコンテキストで正式に定義されたことがないという結論を下しました。一部のソースでは、使用された意味で引用します。この2009年のArch Linuxの投稿でまたはkernel.org Wikiエントリ、いくつかの(より少ない数の)ソースではこれを引用します。2022年のこのStackExchange投稿で

ベストアンサー1

おすすめ記事