ファイルは順次ディスクに保存されますか?

ファイルは順次ディスクに保存されますか?

私が理解しているように、「スパースファイル」とは、ファイルに「間隔」がある可能性があるため、使用される実際のデータが論理ファイルサイズより小さい可能性があることを意味します。

Linuxファイルシステムはどのようにディスクにファイルを保存しますか?私は主にext4に興味があります。しかし:

  1. ファイルを保存できますか?いいえディスクに順番に?つまり、ファイルの一部は物理アドレスXにあり、次の部分は物理アドレスY(X +オフセットに近い)にあります。
  2. どういうわけかファイルの順序を制御できますか?
    10GBファイルを割り当てたいです。異なるオフセットに分割するのではなく、ディスク上で連続して表示したいと思います。
  3. 種類によって効果が違うの?

ベストアンサー1

ファイルを保存できますか?いいえディスクに順番に?つまり、ファイルの一部は物理アドレス X の下にあり、他の部分は X+ オフセットに近い物理アドレス Y の下にあります。

はい、これはファイル断片化と呼ばれ、特に大容量ファイルの場合によく発生します。ほとんどのファイルシステムは必要に応じてスペースを多少順次割り当てますが、将来の動作を推測することはできません。したがって、ファイルに200MiBを書き込んでから100MiBを追加すると、両方のデータセットが表示される可能性があります。 0以外の値は次のとおりです。ディスクの別の領域に保存されます(デフォルトでは、最初の書き込み後と2番目の書き込みの前に発生するより多くのディスク領域を必要とする他の書き込みがその間に発生する可能性があります)。ファイルシステムがほぼいっぱいになると、状況はさらに悪化することがよくあります。新しいファイルを収容するのに十分な連続した空き領域がない可能性があるため、断片化する必要があります。

どういうわけかファイルの順序を制御できますか? 10GBの大容量ファイルを割り当てたいです。異なるオフセットに分割するのではなく、ディスクで連続して使用したいと思います。

ファイルを作成すると、ファイルシステムにファイルの宛先サイズを知らせることができます。これは、ファイルシステムがファイルを最適に保存するのに役立ちます。多くの最新のファイルシステムは、遅延割り当てと呼ばれる技術を使用しています。この手法では、新しいファイルのディスクレイアウトをできるだけ遅く計算して、計算を実行するときに利用可能な情報を最大化します。以下を使用してこのプロセスを支援できます。posix_fallocate(3)この関数は、割り当てる必要のあるディスク容量の合計量をファイルシステムに通知します。最新のファイルシステムは、この割り当てを順番に実行しようとします。

種類によって効果が違うの?

他のファイルシステムは異なる動作をします。はい。ジャーナルベースのファイルシステム(例えば、NILFS2)は、拡張ベースのファイルシステム(例:Ext4)と同じ方法でストレージを割り当てません。これは変更の一例にすぎません。

おすすめ記事