2.4. 使用 GFS2 设置 NFS
由于增加了 GFS2 锁定子系统及其集群性质的复杂性,因此通过 GFS2 设置 NFS 需要采取许多预防措施。
如果 GFS2 文件系统是 NFS 导出的,则必须使用 localflocks
选项挂载文件系统。因为使用 localflocks
选项可防止您从多个位置安全地访问 GFS2 文件系统,并且同时从多个节点导出 GFS2 是不可行的,所以在使用此配置时,支持要求一次只能在一个节点上挂载 GFS2 文件系统。这样做预期的效果是将每个服务器的 POSIX 锁定强制为本地:非集群,相互独立。这是因为 GFS2 试图在集群节点间从 NFS 部署 POSIX 锁定会有很多问题。对于在 NFS 客户端中运行的应用程序,如果两个客户端从不同的服务器挂载,本地化 POSIX 锁定意味着两个客户端可同时拥有相同的锁定,从而导致数据崩溃。如果所有客户端都从一个服务器中挂载 NFS,那么不同服务器单独赋予同一锁定的问题就不存在。如果您不确定是否使用 localflocks
选项挂载文件系统,则不应使用此选项。立即联系红帽支持,来讨论合适的配置以避免数据丢失。我们不推荐通过 NFS 导出 GFS2,但在某些情况下并不支持。
对于所有其他(非 NFS)GFS2 应用程序,不要使用 localflocks
挂载文件系统,因此 GFS2 将管理集群中所有节点间的 POSIX 锁和 flocks。如果您指定了 localflocks
且不使用 NFS,则集群中的其他节点将不知道彼此的 POSIX 锁和 flock,从而使它们在集群环境中不安全。
除锁定注意事项外,您应该在通过 GFS2 文件系统配置 NFS 时考虑以下问题。
红帽只支持使用带主动/被动锁定的 NFSv3 进行红帽高可用性附加组件配置,并具有以下特征。此配置为文件系统提供了高可用性(HA),减少了系统停机,因为故障节点在 NFS 服务器从一个节点故障切换到到另一个节点时不需要执行
fsck
命令。- 后端文件系统是在 2 到 16 个节点集群中运行的 GFS2 文件系统。
- NFSv3 服务器的定义是一次从单一集群节点中导出整个 GFS2 文件系统的服务。
- NFS 服务器可以从一个集群节点故障切换到另外一个节点(主动/被动配置)。
- 不允许访问 GFS2 文件系统, 除非 通过 NFS 服务器。这包括本地 GFS2 文件系统访问以及通过 Samba 或者集群的 Samba 访问。通过挂载该文件系统的集群节点在本地访问文件系统可能会导致数据崩溃。
- 在该系统中不支持 NFS 配额。
-
对于 GFS2 的 NFS 导出,
fsid=
NFS 选项是强制的。 - 如果您的集群出现问题(例如,群集变得不够法定人数且隔离不成功),则集群逻辑卷和 GFS2 文件系统将被冻结,且在集群够法定人数前可能无法访问。在确定一个简单的故障切换解决方案时(比如在这个过程中定义的),您应该考虑这种可能性是否最适合您的系统。