3

我不断地将 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() 吗?

4

1 回答 1

0

Ext4 可选择支持“extents”,即连续的磁盘块。必须使用 tune2fs 启用支持。这里有一些有用的链接:

https://serverfault.com/questions/400026/linux-ext4-extents-attribute

https://www.kernel.org/doc/Documentation/filesystems/ext4.txt

http://ext2read.blogspot.it/

于 2014-01-31T09:36:12.917 回答