控制器寄存器与属性配置 - 第89页
以下是对 NVM Express® Base Specification, revision 2.0b 第 78 页 的中文深入分析与教学讲解,聚焦在:
- Figure 76:多域结构图解说明(6个 Domain)
- 3.2.4.2:多域系统中的保留(Persistent Reservation)与划分恢复同步机制
- 3.2.4.3:Domain Identifier 的使用建议(Informative)
📊 一、Figure 76:六个 Domain 的复杂结构图解(附图示意与说明)
该结构展示了一个复杂的 NVMe 子系统,具有 6 个 Domain,它们在控制器、NVM 存储资源、命名空间的分布上非常异构:
[Fabric 接口互联结构]
┌────────────────────────────┐
│ NS A │← Domain 1 中的私有命名空间
└─────┬────────────┬─────────┘
│ │
┌─────▼────┐ ┌────▼────┐
│Ctrl@D1-1 │ │Ctrl@D1-2│ ← Domain 1 (有2控制器 + NVM)
└──────────┘ └─────────┘ NSID 1,2,3
│ │
Port v Port w
↓ ↓
┌────────────────────────────┐
│ NS B │← Shared namespace,在 Domain 2(无控制器)
└────────────────────────────┘
↓
Communication Boundary
┌───────┐ ┌───────┐
│Ctrl@D3│←无 NVM 存储 │Ctrl@D5│←无 NVM 存储
└───────┘ └───────┘
┌────────────────────────────┐
│ NS C │← Domain 1 中的共享命名空间
└────────────────────────────┘
┌────────────────────────────┐
│ NS D NS E │← Shared NS,位于 Domain 4(无控制器)
└────────────────────────────┘
┌────────────────────────────┐
│ Domain 6 │← 无控制器、无存储(空域)
└────────────────────────────┘
🔑 Key 总结:
| Domain | 控制器 | 存储容量 | 命名空间 |
|---|---|---|---|
| D1 | ✅ 2个 | ✅ | NS A(私有)、NS C(共享) |
| D2 | ❌ 无 | ✅ | NS B(共享) |
| D3 | ✅ 2个 | ❌ 无 | 无 |
| D4 | ❌ 无 | ✅ | NS D、E(共享) |
| D5 | ✅ 1个 | ❌ 无 | 无 |
| D6 | ❌ 无 | ❌ 无 | 无(空域) |
📌 通信边界(Dashed Line) 用于指示各 Domain 间的隔离与划分状态,划分事件(division)会发生在这些边界上。
🔁 二、3.2.4.2 Persistent Reservations 在多域下的划分与恢复机制
✅ 多域系统支持 Persistent Reservations(持久性保留)时,需要处理划分恢复带来的同步问题:
🔄 场景:
- 如果系统发生 Division Event(划分事件),导致各 Domain 分裂。
- 事件恢复后,如果多个 Domain 重新连接,保留状态必须进行同步。
❗ 不同步时的行为:
- ANA Group 状态转为 Inaccessible(不可访问)
-
对应命名空间不可使用,直到 PR 状态同步。
-
若无法同步 PR 状态:
- 进入 ANA Persistent Loss 状态(§8.1.3.4)
- 指永久失去访问,但不会触发错误。
- 或控制器设置
CSTS.CFS = 1,触发致命错误状态(Controller Fatal Status)
📎 相关协议段落: - §8.1:ANA(Asymmetric Namespace Access) - §8.19:Persistent Reservations(持久性保留)
🧭 三、3.2.4.3 Domain Identifier 的使用建议(Informative)
📌 Domain Identifier 主要功能:表示 NVM 子系统中的逻辑域分布。
主机可以使用这些 ID 实现更加智能的策略,如:
📂 1️⃣ RAID/冗余管理
- 利用 Endurance Group 的
Domain Identifier来判断哪些组可能会同时故障(位于同一域中),哪些是独立容灾单元(不同域中); - RAID 软件可据此 避免将所有副本分配到同一故障域,提升系统可靠性。
🧠 2️⃣ 控制器识别
- 主机应用可分析控制器的
Domain Identifier来判断: - 哪些控制器是同一域中的协同节点(可共享存储资源);
- 哪些控制器是独立域中的(可作为冗余控制器或隔离故障域)。
🧠 总结要点
| 概念 | 说明 |
|---|---|
| Figure 76 | 展示一个高度模块化的多域系统,控制器和存储资源在不同 Domain 中异构分布 |
| 通信边界 | 指示跨域访问的障碍点,是划分发生的边界 |
| 划分事件恢复后需同步 PR 状态 | 否则命名空间将不可访问或触发错误 |
| Domain Identifier 用途 | 主机可用于 RAID 冗余、容灾管理、命名空间与控制器访问规划 |
如果你希望我进一步讲解:
- ANA 机制下的状态转换逻辑图(Inaccessible → Persistent Loss)
- RAID 与 NVMe 多域结构的实际映射策略(冗余分布设计)
- 如何在主机端使用 Identify 数据结构提取 Domain 分布信息(含字段解析)
我可以逐项为你讲解。你想继续哪一部分内容?例如进入第 8 章(ANA 与 PR 的详细机制)?