Cache
DRBD - 為什麼在輔助資源上只讀會導致記憶體一致性問題
根據 DRBD9 文件(https://www.drbd.org/en/doc/users-guide-90/s-resource-roles),讀取設備會導致記憶體一致性問題,但我不確定為什麼。(我知道我無法以次要角色訪問資源,但我想了解原因)
我的假設是(假設我們有 DRBD-1 主要和 DRBD-2 次要,文件系統 ext4 和“file_a”是 drbd 設備上的一個文件):
- DRBD-2 訪問 file_a 並將 file_a 偏移量(或類似的東西)放在他的記憶體中。(DRBD-2 具有隻讀權限,因此系統認為該文件不能被修改)。
- DRBD-1 在舊的 file_a 偏移處寫入 file_b 內容。
- DRBD-2 想再次訪問 file_a,因此系統使用他儲存在記憶體中的偏移量,期望在訪問 file_b 數據時找到 file_a 數據。
- 我們有記憶體一致性問題。
提前感謝您讓我了解這一點。
是的,您所描述的是可能導致記憶體一致性問題的確切場景。
為了解決這個問題,您必須使用旨在重新驗證其他主機訪問的任何記憶體條目的文件系統。這些被稱為集群文件系統,GFS2 和 OCFS 是主要範例。
但請注意,出於同樣的原因,集群文件系統通常比傳統文件系統慢。