首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制块设备(NBD)绕过缓冲区缓存

强制块设备(NBD)绕过缓冲区缓存
EN

Server Fault用户
提问于 2011-09-20 12:15:51
回答 2查看 3.3K关注 0票数 3

我想知道是否有办法迫使块设备绕过linux缓冲区缓存(即直接IO),并将请求直接传递给底层。我知道可以用O_DIRECT标志打开文件来实现这一点,但是我的程序不是块设备的用户,而是一个文件系统。到目前为止,我还没有幸运地告诉各种FSes使用直接IO。

总之,我想要不使用原始设备的原始设备功能(因为它们在我的发行版Fedora中被废弃了)。

如果这是重要的,我的块设备是一个网络块设备。任何帮助都将不胜感激。

EN

回答 2

Server Fault用户

发布于 2011-11-06 14:20:21

您可以通过安装同步选项来实现这一点。

来自mount(8)-man页面:

代码语言:javascript
复制
   sync   All I/O to the filesystem should be done synchronously. In  case
          of  media  with  limited number of write cycles (e.g. some flash
          drives) "sync" may cause life-cycle shortening.
票数 1
EN

Server Fault用户

发布于 2011-11-15 03:30:32

我认为如果不使用O_DIRECT或原始设备,就不可能有直接的I/O。在挂载上使用同步选项也不会绕过缓冲区缓存。

因为您不能从文件系统中设置它,所以您必须修改您的程序,以便使用O_DIRECT或mmap()和get ()来获得类似的行为。

“我知道可以使用O_DIRECT标志来打开文件,但我的程序不是块设备的用户,而是文件系统。”

不要担心您的程序不是用户,O_DIRECT为open()工作,而open()是基于文件的。

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

https://serverfault.com/questions/313386

复制
相关文章

相似问题

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