我正在使用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()?
答案 0 :(得分:0)
Ext4具有“范围”的可选支持,它是连续的磁盘块。必须使用tune2fs启用支持。这里有一些有用的链接:
https://serverfault.com/questions/400026/linux-ext4-extents-attribute
https://www.kernel.org/doc/Documentation/filesystems/ext4.txt