将文件写入连续的内存块

时间:2014-01-31 00:54:16

标签: c memory filesystems contiguous

我正在使用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);

有没有办法告诉文件系统将数据写入连续块中的磁盘?我看过其他帖子,但我还没弄清楚。我应该使用malloc()而不是fallocate()?

1 个答案:

答案 0 :(得分:0)

Ext4具有“范围”的可选支持,它是连续的磁盘块。必须使用tune2fs启用支持。这里有一些有用的链接:

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

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

http://ext2read.blogspot.it/