我想使用 SAN 存储作为在 Linux 上运行的两个活动节点的共享磁盘,并且我想将其用作原始设备(没有文件系统)。
起初,我认为如果磁盘对两个节点都可见,那就没有问题了。但在搜索时,我发现除非使用全局文件系统(例如 GFS),否则两个节点都无法同时访问共享存储。(如SAN 是否允许多台服务器同时对同一文件进行写访问?)。我还有一些与我的情况相关的问题。
- 当节点尝试在共享设备上进行写入时,它获得的锁定范围是多少?它会获得块锁定吗?还是每个磁盘 (LUN) 都会获得锁定?
- 是否需要使用 VCS 或 CLVM 等集群软件来实现 SAN 主动-主动集群?还有其他方法吗?
- 我觉得上面提到的集群软件的功能就是利用锁分布来调度I/O,支持active-active集群就够了吗?
答案1
从 SAN/存储的角度来看,您可以将 LUN 映射到多个主机,而不受限制。但是,主机、操作系统和应用程序(通常是集群软件/卷管理器/文件系统)有责任负责在共享设备上读取/写入数据的位置和方式,以便至少不会:
- 同时将数据写入同一块
- 从另一台主机异步修改的磁盘块读取数据,因此更新仍然在另一个节点上的操作系统/文件系统缓存中,但不在磁盘本身上
但是,由于您要使用原始设备,您或您的应用程序已经知道如何避免这种致命冲突。如果不知道如何避免,您应该考虑一个可用的集群解决方案。