根据 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_b 内容写入旧的 file_a 偏移处。
- DRBD-2 想要再次访问 file_a,因此系统使用他存储在其缓存中的偏移量,期望在访问 file_b 数据时找到 file_a 数据。
- 我们遇到了缓存一致性问题。
提前感谢您对我关于这一点的阐释。
答案1
是的,您所描述的正是可能导致缓存一致性问题的场景。
为了解决这个问题,你必须使用一个文件系统来重新验证其他主机访问的任何缓存条目。这些被称为集群文件系统,其中 GFS2 和 OCFS 是主要例子。
但请注意,由于同样的原因,集群文件系统通常比传统文件系统慢。