使用O_DIRECT写入时,是否需要使无效caching读取?

使用O_DIRECT写入时,是否需要使无效caching读取?,第1张

概述使用O_DIRECT写入时,是否需要使无效caching读取

我遇到了使用LVM和我正在使用的磁盘驱动程序的竞争条件。 它看起来像vgcreate和lvcreate在O_DIRECT模式下做他们的IO。 我用-vvv运行这些命令时发现了这个问题。

Clearing start of logical volume "test" /dev/Finance-PG-vg/test: Added to device cache Opened /dev/Finance-PG-vg/test RW O_DIRECT WiPing /dev/Finance-PG-vg/test at sector 0 length 8 sectors /dev/Finance-PG-vg/test: block size is 4096 bytes Closed /dev/Finance-PG-vg/test

具体来说,我怀疑我们的读取正在caching,并没有得到最新的磁盘内容。

如果用O_DIRECT写入内容,我的理解是绕过caching。 因此,对该扇区的任何读取都将从caching中接收旧数据,至less在caching失效之前。 所以如果我想读几秒钟内写的O_DIRECT,我应该先放下caching?

正确?

检测当用java访问/读取文件时

如何设置IDE ATA控制器的PIO周期时序?

在使用Perl的windows中进行文件input和读取时遇到问题

zlib透明写入模式“wT”性能下降

有没有办法做一个asynchronous的FindNextfile?

套接字asynchronous *** 作是否会同步完成?

为什么这个C ++程序在windows上比在linux上慢?

“系统调用参数打开(模式)包含未初始化的字节(S)”在打开系统调用

/ proc伪文件的打开/closures策略

从gpioinput读取的字节数是零

这里有几个困惑:

您提到的工具很可能使用O_DIRECT来确保新的LVM配置是持久的。 LVM元数据实际上存储在您提供的所有物理磁盘/分区上的特定位置。

写入LVM设备默认情况下不使用O_DIRECT(尽管打开文件时可以传递此标志)。

用O_DIRECT绕过缓存并不意味着你得到陈旧的数据。 让我们假设你打开一个文件,写入文件,关闭它,然后用O_DIRECT再次打开它,然后读取文件。 读取保证将最新的更改返回到文件。 没有过时的数据返回。 使用O_DIRECT时不需要删除缓存。

总结

以上是内存溢出为你收集整理的使用O_DIRECT写入时,是否需要使无效caching读取?全部内容,希望文章能够帮你解决使用O_DIRECT写入时,是否需要使无效caching读取?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存