gpt4 book ai didi

c - 如何让 NFS 支持 posix_fallocate?

转载 作者:太空狗 更新时间:2023-10-29 12:41:24 24 4
gpt4 key购买 nike

我的全文搜索引擎在 NFS 存储上存储索引数据。由于频繁的读写ioes,我想为每个表文件预分配巨大的连续磁盘空间,所以求助于posix_fallocate。在 NFS 卷上,我的小演示因“EOPNOTSUPP”响应 posix_fallocate 而失败。NFS 协议(protocol)/规范是否包括 posix_fallocate 方案?

最佳答案

(虽然问题的标题提到了 posix_fallocate definition of posix_fallocate means EOPNOTSUPP is not an error code it will return 。看来提问者实际使用的很可能是 fallocate on Linux as that CAN return EOPNOTSUPP )

NFS 可以在 Linux 上支持 fallocate (http://wiki.linux-nfs.org/wiki/index.php/Fallocate) 但是:

  1. 您的客户端和服务器必须使用 NFS 4.2 或更高版本。
  2. NFS 4.2+ 服务器不必实现 fallocate - 它是可选的(请参阅 libc-alpha 邮件列表线程中的帖子 Re: [PATCH 4/4] Remove broken posix_fallocate, posix_falllocate64 fallback code [BZ#15661]])。

重新posix_fallocate,可以never know whether a Linux glibc posix_fallocate call was real or emulated事先没有仔细观察或手动检查(例如,通过进行平台原生 fallocate 调用并检查它是否失败或不受支持),如果你已经完成了原生调用,为什么你需要 posix_fallocate 调用?。此外,不同的平台对 native fallocate 有不同的调用(或完全没有它),因此如果要考虑到非 Linux 平台的可移植性,您将需要编写适当的 native fallocate 每个平台的包装器。如果您必须进行预分配,即使下面的内容没有支持的调用,您将不得不退回到手动进行(例如,通过漂亮的 block 状写入或像这样的黑客攻击) glibc 的 posix_fallocate...).

注意:当可以进行真正的预分配时(例如通过 fallocate),它可以比必须进行完全写入快得多,因为文件系统可以通过设置适当的元数据来完成它.

关于c - 如何让 NFS 支持 posix_fallocate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com