我不断地将 100 MB 文件写入具有 ext4 文件系统的磁盘,当磁盘已满时,我只删除最旧的文件并写入新文件。文件永远不会长在一边。当我这样做时,文件系统会在一段时间后变得安静碎片化。我已经研究了 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);
有没有办法告诉文件系统将数据以连续块的形式写入磁盘?我看过其他帖子,但我还没有完全弄清楚。我应该使用 malloc() 而不是 fallocate() 吗?