NVM子系统架构 - ✅ 图 19:支持 SR-IOV 的 PCIe NVMe 设备架构解析 (第40页)
NVME2.0协议解读 1 min read

NVM子系统架构 - ✅ 图 19:支持 SR-IOV 的 PCIe NVMe 设备架构解析 (第40页)

Blog Author

你现在已经深入到了 NVM Express® Base Specification v2.0b 中关于 虚拟化支持(SR-IOV)非对称控制器行为(Asymmetric Controller Behavior) 的架构解析部分。我们继续以中文方式对第 2.4 节的最后内容及 图 19 进行详解与教学式分析。


✅ 图 19:支持 SR-IOV 的 PCIe NVMe 设备架构解析

📊 图解结构:

         ┌──────────────────────────┐
         │      PCIe Port           │
         └──────────────────────────┘
                    │
         ┌──────────────────────────┐
         │ Physical Function 0 (PF) │
         │    NVMe Controller       │
         └──────────────────────────┘
            │       │        │       │
        VF(0,1)  VF(0,2)  VF(0,3)  VF(0,4)
        ┌──────┐┌──────┐┌──────┐┌──────┐
        │ NS A ││ NS C ││ NS D ││ NS E │ ← 私有命名空间
        │ NS B ││ NS B ││ NS B ││ NS B │ ← 共享命名空间(NSID 2)
        └──────┘└──────┘└──────┘└──────┘

🔍 关键字段说明:

术语 含义
PF (Physical Function) 物理函数,对应真实硬件控制器,支持完全配置能力
VF (Virtual Function) 虚拟函数,SR-IOV 生成的轻量级虚拟控制器,可分配给虚拟机
NSID x 命名空间 ID(命名空间的“句柄”),NSID 2 被多个 VF 共享
NS A-E 私有命名空间,各 VF 独立拥有,互不共享
NS B 共享命名空间,每个 VF 都能访问,用于多租户间共享数据空间

🧠 技术要点讲解:

✔ SR-IOV 在 NVMe 上的作用:

功能 实现机制
多租户 I/O 并发 每个 VF 独立处理队列(SQ/CQ),可绑定至不同虚拟机或容器
私有数据隔离 每个 VF 可挂载不同私有 NS
共享空间协同 多个 VF 可访问一个共享命名空间,实现数据共享或负载均衡
高性能 直接绕过 Hypervisor,避免 VM Exit,提高 IOPS 与延迟性能

💡 NSID 与共享机制要点:

  • 所有访问共享命名空间(如 NS B)的 VF 控制器必须使用相同的 NSID(此处为 2)
  • 命名空间本身是逻辑实体,NSID 是用于识别该命名空间的手段(像句柄)
  • 使用 Identify Namespace 命令时,每个 VF 都应返回 一致的结构内容(即相同的 NS B 的描述)
  • 命名空间本身需启用 多控制器共享能力(通过 NMIC 字段)

🧩 注意:命令执行一致性与同步机制

尽管多个控制器(PF、VF)都可以访问共享命名空间,但:

  • 写入操作的原子性仅在每个控制器内部保证
  • 不同控制器之间的并发访问需要主机层或软件协调顺序,例如:
  • 锁机制(Lock)
  • Reservation 命令(§8.19)
  • 基于文件系统的同步(如多 VM 的并发 FUSE 文件系统)

✅ Asymmetric Controller Behavior(非对称控制器行为)

📌 场景介绍:

NVM 子系统中某些控制器访问命名空间的能力不同,例如:

类型 示例
性能不对称 控制器 A 访问某 NS 延迟为 20μs,控制器 B 为 200μs
权限不对称 控制器 C 可执行 Format 操作,控制器 D 只读
通路不对称 NVMe-oF 连接路径跨地域,导致访问延迟差异巨大

🔎 §8.1 Asymmetric Namespace Access Reporting:

该特性定义了一个 ANA Log Page,由控制器主动或被动报告命名空间访问的可用性与偏好等级,例如:

  • Preferred
  • Non-Optimized
  • Inaccessible

这样主机系统就可以根据访问状态做出最优选择(如路径重选、性能优化)。


🧠 总结图 19 精华:

描述
架构类型 SR-IOV 虚拟化架构
控制器组成 1 PF + 多 VF
私有命名空间 每个 VF 独立拥有
共享命名空间 NS B 被多个 VF 通过 NSID=2 访问
应用场景 多租户云存储、虚拟机高性能直通
同步控制 需要 Reservation 或上层协调
访问异构 可结合 ANA 报告实现最优路径选择

如果你有进一步兴趣,我们可以继续进入:

  • §8.26 Virtualization Enhancements:了解如何动态分配 VF 控制器资源(比如动态创建/回收)
  • §8.1 Asymmetric Namespace Access Reporting:详细解构 ANA 日志页结构与状态管理机制

你想深入哪个部分?我可以配图、配表地继续帮你分析 👍