使用fallocate()在Linux中快速预分配大文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用fallocate()在Linux中快速预分配大文件相关的知识,希望对你有一定的参考价值。

在Windows上,寻找过去的EOF并截断文件(通过SetEndOfFile())允许预先分配一个大文件而不实际将额外的零写入磁盘,如果之后我按顺序写入文件(我这样做)。

如何在Linux中实现相同的效果?好像ftruncate()创建了一个稀疏文件,这不是我想要的,因为它不会减少磁盘可用空间。这让我去了fallocate(),但是哪些文件系统完全支持这个功能(原生,不是由glibc模拟),或者更好:

哪些主流文件系统不支持fallocate()

答案

至少在以下文件系统上支持该操作:

  • XFS(自Linux 2.6.38起)
  • ext4(自Linux 3.0起)
  • Btrfs(自Linux 3.7起)
  • tmpfs(5)(自Linux 3.5起)

以上是关于使用fallocate()在Linux中快速预分配大文件的主要内容,如果未能解决你的问题,请参考以下文章

linux下修改swap分区遇到文件忙如何解决?

Linux创造固定的文件大小-预分配磁盘空间

linux 磁盘文件预分配

为字符串向量预分配内存(C++ vector<string>)

DPDK预分配了多少虚拟内存

在实时环境中使用 C++ 预分配内存