哪些文件系统允许重新定位文件的开头?

Pot*_*ter 11 linux filesystems

典型的文件系统和POSIX接口只允许在最后调整文件大小.通常,文件"在磁盘上"关闭后的大小等于关闭时读/写位置的偏移量.在关闭之前寻求也被称为"重新定位文件结尾".

包含数据队列的文件将通过删除文件开头的操作更有效地表示.可以释放开头的磁盘分配块,并最小化不必要的复制.

这是否由任何常见的文件系统格式和/或操作系统直接支持?使用什么样的界面?(例如,一个Linux fcntl选择器.)我很确定我在实践中听说过这种事情.

The*_*s'o 3

实际上,Linux确实有一个接口可以满足您的要求。错误分配的是 FALLOC_FL_COLLAPSE_RANGE 标志。现代内核上的 btrfs、ext4 和 xfs(可能还有其他)都支持它。尽管 Fallocate 接口允许您指定字节偏移量和长度,但实际上,只有偏移量和长度是文件系统块大小的倍数时,COLLAPSE_RANGE 调用才有效。

有关更多信息,请参阅 Fallocate(2) 系统调用的精细手册:http://man7.org/linux/man-pages/man2/fallocate.2.html