Novus 存储系统环境和处理
您应该了解 Novus 环境及其处理的几个重要方面。
Novus Data Director 和 ONTAP 数据服务器内部通信
Novus Data Directors 与 ONTAP 数据服务器进行通信,以支持文件访问和管理。其中大部分是由 NDD 而不是 ONTAP 服务器发起的。
ONTAP 数据服务器发现
Novus Data Directors 需要发现可用的数据服务器。ONTAP 从不发起与 Novus Data Director 的通信。操作员或工具通过 `mds.conf`配置文件注册每个数据服务器,该文件在启动时使用;也可以使用命令 `mds-admin ds add`手动添加数据服务器。每个数据服务器在分布式元数据存储中表示为一行,包括其主机、导出、端口、状态和容量。
ONTAP 数据服务器可用性
有几个过程用于确定每个 ONTAP 数据服务器的可用性。
- 心跳
-
MDS 通过 TCP 向每个在线数据服务器发送 NFSv3 NULL RPC 调用。默认情况下,它每隔 5 秒使用心跳消息执行一次此操作。
- 正在下线
-
连续发生设定数量的故障后,数据服务器将被标记为离线。MDS 停止在其上放置新文件,并通知客户端归还指向它的布局。
- 返回
-
在连续进行足够多的成功探测后,它会返回到在线状态。冷却期可防止其来回切换。
- 客户端错误不计入
-
当客户端报告错误时,它只会被记录下来。ONTAP 数据服务器健康状况仅由探针决定。
- ONTAP 故障转移不可见
-
如果 ONTAP HA 对执行接管,则 MDS 只能通过探测超时来发现。
ONTAP 数据服务器数据内容
NDD 不会询问 ONTAP 它存储了什么。它已经知道,因为它创建了每个后备文件:
-
创建文件时,MDS 会挑选数据服务器,在其上创建后备文件,并将结果保存在分布式元数据存储的条带映射中。条带映射记录哪个数据服务器和 NFS 文件句柄保存每个条带和镜像。
-
ONTAP 上的后备文件在 NDD 中具有特定的名称格式。
-
容量是 NDD 在每个已挂载的导出上使用 statvfs() 从 ONTAP 读取的唯一操作值。
-
未根据 ONTAP 验证文件大小。它是由客户端的布局提交决定的。
NDD 集群的高可用性和弹性
由 Novus Data Directors 锚定的元数据平面确保了系统的高可用性和弹性。
集群设计
Novus 使用多主机集群来确保 NDD 服务的高可用性和容错。
- 三台具有三个故障域的主机
-
最小 NDD 群集是部署在单独服务器上的三个物理主机或虚拟机(VM)。每个主机运行一个 MDS 进程和一个元数据存储节点。该集群的设计可承受一台主机的丢失。
- 所有副本都提供
-
每个 MDS 副本同时处理客户端,没有任何副本被指定为待机模式。所有健康的副本都通过 BGP 宣布相同的 VIP。需要 BFD(快速链路故障检测),因为仅靠 BGP 自身的计时器并不是完全可接受的故障转移机制。只有当其 NFS 服务、网关和元数据存储连接都已准备好处理客户端时,副本才会宣布 VIP。
- 元数据复制
-
分布式元数据存储保留三个同步副本。仲裁器通过选择变为不可用而不是允许双方同时写入,来防止发生脑裂情况。
- 重新启动是安全的
-
MDS 进程不保留其自身的状态;分布式元数据存储保存权威元数据。
限制和注意事项
您还应注意以下限制和注意事项:
-
子树所有权不会自动故障转移。命名空间可以拆分为子树,每个子树由一个 MDS 拥有。如果所有者发生故障,即使 VIP 已经移动,其子树也会挂起,直到所有者恢复。
-
一个主机故障会影响该主机上的每个租户,因为每个租户每个主机都有一个副本。
-
客户端必须挂载 VIP,而不是主机 IP。否则,客户端无法进行故障转移。
-
硬挂载可能会在恢复过程中阻塞。阻塞的挂载并不意味着数据丢失。
-
始终一次对一个副本执行维护。首先将该副本从 VIP 中移出并将其排空。