NVM子系统架构 - Discovery 控制器初始化 (第52页)
在《NVM Express® Base Specification, revision 2.0b》第3.1.2.3.1节中,Discovery 控制器的初始化过程被详细描述。以下是对这一过程的深入分析:
Discovery 控制器初始化
Discovery 控制器的初始化过程主要包括以下几个步骤,用于确保主机能够正确地发现和连接到适当的NVM子系统,并确保多个控制器或端口的可访问性。
控制器 ID 及动态/静态模型
- Controller ID:在Discovery Log Page中,每个条目返回的Controller ID(控制器标识符)用于指示该NVM子系统支持的控制器模型类型。
- 动态控制器模型:如果Discovery Log Page条目中的Controller ID为
FFFFh
,则表示该NVM子系统支持动态控制器模型。在这种情况下,主机可以连接到任何可用的控制器。 -
静态控制器模型:如果Discovery Log Page条目中的Controller ID小于
FFFFh
,则表示该NVM子系统支持静态控制器模型。在这种情况下,主机将根据特定的Controller ID来连接控制器。 -
多个Controller ID条目:
- 动态控制器:如果NVM子系统实现动态控制器模型,Discovery Log Page可能会返回多个条目,其中Controller ID为
FFFFh
。这些条目指示主机可以连接到多个控制器或端口。 - 静态控制器:如果NVM子系统实现静态控制器模型,Discovery Log Page也可能返回多个条目,但这些条目将使用不同的Controller ID值。主机在每次连接时可以使用这些不同的Controller ID来选择不同的控制器。
连接和重用Controller ID
- 在动态控制器模型中,由于Controller ID为
FFFFh
,主机可以灵活地选择任何可用的控制器。 - 在静态控制器模型中,主机通常会记住第一次通过
Fabrics Connect
命令返回的Controller ID,并在以后的关联中重用这个已分配的Controller ID,确保连接的一致性。
Discovery控制器的功能
Discovery 控制器的主要功能是提供和管理与NVM子系统的连接。它通过Discovery Log Page向主机提供有关NVM子系统的信息,并支持在多个控制器或端口之间进行选择。
- 多路径支持:通过返回多个Discovery Log Page条目,Discovery 控制器可以提供多路径信息,允许主机根据需求选择不同的连接路径。
- 持久连接和事件通知:如果Discovery控制器支持持久连接,则主机可以指定Keep Alive计时器值来请求持续的连接。若未支持持久连接,则Discovery控制器可能会使用固定的超时机制。
初始化过程
Discovery 控制器初始化的过程确保主机能够通过Discovery控制器获得NVM子系统的相关信息,并建立连接。主机首先使用Connect
命令连接到Discovery服务,通过Discovery Log Page获取关于NVM子系统的条目,并确定如何连接到这些子系统。
总结
Discovery 控制器在NVM Express架构中起到了至关重要的作用,它使得主机能够发现并访问多个NVM子系统和控制器。通过控制器ID的动态或静态管理,Discovery控制器提供了灵活的路径选择和控制器分配方式,帮助系统管理员在复杂存储环境中实现高效的资源利用与管理。