我遇到了 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
具体来说,我怀疑我们的读取正在访问缓存,而不是获取最新的磁盘内容。
如果用 O_DIRECT 写东西,我的理解是这绕过了缓存。因此,对该扇区的任何读取都会从缓存中接收旧数据,至少在缓存失效之前是这样。因此,如果我想在几秒钟内读取 O_DIRECT 刚刚写的任何内容,我应该先删除缓存吗?
正确的?