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

时间:2017-12-19 13:40:32

标签: c linux filesystems

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  • XFS(自Linux 2.6.38起)

  • ext4(自Linux 3.0起)

  • Btrfs(自Linux 3.7起)

  • tmpfs(5)(自Linux 3.5起)