我的全文搜索引擎存储NFS存储的索引数据。由于频繁的读/写索引,我希望为每个表文件预先分配巨大的连续磁盘空间,因此使用posix_fallocate。在NFS卷上,我的小演示失败了,因为"EOPNOTSUPP“响应了posix_fallocate。NFS协议/规范是否包括posix_fallocate场景?
发布于 2017-11-03 07:08:12
(问题的标题提到了posix_fallocate和不是错误代码,它将返回。。很有可能发问者实际上是在使用EOPNOTSUPP)
NFS可以支持Linux上的fallocate (http://wiki.linux-nfs.org/wiki/index.php/Fallocate ),但是:
Re posix_fallocate,您可以在没有仔细观察或事先手动检查的情况下进行呼叫是真实的或模拟的 (例如,通过进行平台原生fallocate调用并检查它是否失败或不受支持),如果您执行了本机调用,为什么需要posix_fallocate调用?此外,不同的平台对本机fallocate有不同的调用(或者完全缺乏它),因此如果要关注非Linux平台的可移植性,则需要为每个平台编写适当的本机fallocate包装器。如果您必须进行预分配,即使在下面没有支持的调用时,您将不得不回到手工操作中(例如,通过漂亮的、笨重的写作或者像glibc的posix_fallocate.)。
注意:当能够进行真正的预分配(例如通过fallocate)时,它可能比完成完全写入的速度快得多,因为文件系统可以通过设置适当的元数据来完成它。
https://stackoverflow.com/questions/42434351
复制相似问题