3

ext4 ファイルシステムのディスクに 100 MB のファイルを継続的に書き込んでいます。ディスクがいっぱいになると、最も古いファイルを削除して新しいファイルを書き込んでいます。ファイルが横に大きくなることはありません。これを行うと、しばらくするとファイルシステムが静かに断片化されます。ext4 のすべてのフォーマット オプションを調べましたが、なぜこのような断片化が発生するのかわかりませんでした。

基本的に、問題を単純化するために、ループで次のことを行います。

int32_t fid = open(filepath, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
int success = fallocate(fid, 0, 0, MAX_FILE_SIZE);
close(fid);

連続したブロックでデータをディスクに書き込むようにファイル システムに指示する方法はありますか? 他の記事も見ましたがよくわかりません。fallocate() の代わりに malloc() を使用する必要がありますか?

4

1 に答える 1