2
我遇到了使用LVM和我正在使用的磁盤驅動程序的爭用情況。它看起來像vgcreate和lvcreate在O_DIRECT模式下執行它們的IO。使用-vvv運行這些命令時我發現了這一點。當使用O_DIRECT寫入時,是否有必要使無效/丟棄緩存來讀取?
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,我應該首先刪除緩存?
對不起?
我已經試過在每個lvm命令後丟棄緩存,沒有運氣。閱讀時,我仍然會定期得到零。 – Ahhmyface