NVM子系统架构 - Discovery 控制器 (第51页)
在《NVM Express® Base Specification, revision 2.0b》第3.1.2.3节中,Discovery 控制器的功能和行为有着清晰的定义。以下是对该部分内容的深入分析:
Discovery 控制器
Discovery 控制器是一种特定类型的控制器,专门用于提供Discovery Log Pages,它不涉及I/O队列、I/O命令,或者暴露命名空间(namespace)。这些控制器的主要目的是让主机通过Discovery Log Page了解如何连接到NVM子系统。Discovery控制器的功能主要体现在Discovery Log Page的支持上。
核心功能
- Discovery Log Page:由Discovery控制器提供,包含一个或多个条目(entry),每个条目都包含主机连接NVM子系统所需的信息。
- 条目内容:一个条目可能包含NVM子系统的信息,或者是指向另一个Discovery服务的引用。
-
无序性:Discovery Log Page条目没有顺序要求,可以是无序的。
-
Discovery Service NQN:主机使用一个预定义的Discovery服务NQN(
nqn.2014-08.org.nvmexpress.discovery
)在Connect
命令中与Discovery控制器建立连接。 -
持久连接和事件通知:
- 持久连接:如果支持持久连接,Discovery控制器支持Asynchronous Event Request命令和Keep Alive命令。
- Keep Alive命令:用于维持连接活跃状态,防止连接超时。
- 事件通知:主机可以请求从Discovery控制器接收异步事件通知。
-
如果Discovery控制器不支持显式的持久连接,则不支持Keep Alive命令,并且可能会使用固定的活动超时(例如2分钟)。如果超时未收到命令,它可能会进行“Keep Alive Timer”的过期处理。
-
日志页面更改通知:Discovery控制器支持Discovery Log Change Notifications,通过
Identify Controller
数据结构(图275)来指示该功能是否被支持。 -
Discovery控制器的限制:
- 不支持Disconnect命令:Discovery控制器不支持
Disconnect
命令,这意味着一旦连接建立,控制器无法主动断开连接。 -
多路径和多个控制器:如果一个Discovery Log Page中包含多个相同NVM子系统的条目,这可能表示有多个通往该NVM子系统的路径,或者多个静态控制器可能共享一个路径。主机可以利用这些信息与NVM子系统中的多个控制器建立连接。
-
多端口支持:如果多个Discovery Log Page条目为相同的NVM子系统提供不同的Port ID,则这些条目表示对应的NVMe传输连接在NVM子系统端口上是独立的。这样可以为主机提供更多的路径选择。
Discovery控制器的使用场景
- Discovery Log Page:提供了NVM子系统可供主机连接的具体信息,包括支持的多个路径或多个控制器。主机可以使用这些信息来建立与NVM子系统的连接。
- 网络拓扑中的角色:Discovery控制器在网络中充当发现和路径选择的角色,允许主机动态了解NVM子系统的多个连接选项,尤其适用于具有多路径I/O或复杂拓扑的存储系统。
总结
Discovery控制器在NVM Express的架构中扮演了一个非常重要的角色,它允许主机发现和连接到NVM子系统,并获取有关连接路径和控制器的详细信息。Discovery控制器本身不支持I/O操作或数据存储,它的作用是帮助主机和存储系统建立连接,并提供灵活的路径选择和命名空间共享机制。