我遇到了使用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读取?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)