首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在文件系统中执行条件IO?

如何在文件系统中执行条件IO?
EN

Stack Overflow用户
提问于 2020-07-28 14:58:20
回答 1查看 83关注 0票数 0

我正在尝试在文件系统上实现多用户key-value store,比如本地Linux或Windows文件系统,或者基于网络的文件系统(SMB或NFS)。我的目的是完全避免需要服务器,因为服务器需要一些VM、部署、升级等,而文件系统通常是现成的。

引擎返回值设置时的时间戳。使用时间戳的一个操作是"put if not modified since",它类似于compare-and-swap,支持进程间的同步。事实证明,在没有服务器的情况下实现这是相当昂贵的。

似乎没有文件系统支持“未修改就写入”或任何形式的条件写入语义。我最多只能锁定一个文件,但随后我需要读取日期并在进程中进行比较,然后才能写入新内容并释放锁。最少需要执行四次is : 1)锁定整个文件;2)读取修改日期并在本地进行比较;3)写入新内容;4)解锁。这会忽略IOs打开和关闭文件的操作,这些操作会合并在一起,因此不会频繁出现。

是否有任何操作系统或文件系统工具或算法可以减少IO数量?请记住,我需要在NFS或SMB上工作的解决方案...

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-28 22:06:09

文件系统已经执行预读和写避免,因此只有在读数据不在缓存中或写缓存已满且需要刷新时,I/O调用才会阻塞磁盘。“如果不修改则写入”的性能问题是4个syscall,这可能会变得很昂贵。解决这个问题的一种方法是添加一个条件写内核模块。您将向它传递时间戳、文件名和数据。它将使用内部调用和回调执行条件写入,并返回状态和新的时间戳,从而减少单个系统调用的开销。如果编写得当,它应该是与文件系统无关的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63128606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档