持久内存与安全机制 - 第361页
NVME2.0协议解读 1 min read

持久内存与安全机制 - 第361页

Blog Author

我们现在继续深入分析 NVMe Base Specification 2.0b 第 350 页的内容,聚焦在两个重要的扩展能力模块上:


🧩 固定容量管理(Fixed Capacity Management)

🧬 可变容量管理(Variable Capacity Management)


🧱 固定容量管理(Fixed Capacity Management)


🔍 什么是 Media Unit?

  • Media Unit(介质单元)是控制器内部能独立报告磨损状态的最小物理存储单元。
  • 一个 Media Unit 可以是 NAND 的 die,也可以是 controller 自定义的其他物理分区单位。

📊 报告状态字段包括: - Available Spare - Percentage Used

✅ 控制器支持“固定容量管理”时,必须支持 Media Unit Status 日志页(见 §5.16.1.16)。


🧩 关键特点:

能力 要求
Media Unit Status 日志页 ✅ 必须支持
Endurance Groups(耐久组) ✅ 必须支持
NVM Sets(NVM 组) ✅ 可选
CTRATT(Identify Controller 字段) Bit 设为 1 表示支持 Fixed Capacity Mgmt
Supported Capacity Configuration List 日志页 ✅ 必须支持
Select Capacity Configuration 操作 ✅ 必须支持

🧠 使用流程:

  1. 📖 读取配置清单
    读取 Supported Capacity Configuration List Log Page,查看所有可选配置(包含各配置下的 Media Unit 分布)。

  2. 📤 发出配置命令
    向控制器发出 Capacity Management 命令,选择其中一个配置(Select Capacity Configuration 操作)。

  3. 🧩 完成分配
    配置成功后,每个 Media Unit 都会明确地被分配给一个 Endurance Group 和一个 NVM Set

  4. 🧾 最终效果查看
    使用 Media Unit Status 日志页 可以查看 Media Unit 被如何分组。


🧮 注意:此模式中分配是一次性的,容量无法动态变化


🔄 可变容量管理(Variable Capacity Management)


动态创建与删除 Endurance Groups 和 NVM Sets,更灵活更“云化”。

🧠 支持要求:

能力 要求
Endurance Groups ✅ 必须支持
NVM Sets ✅ 可选
CTRATT 中 Variable Capacity Management Bit ✅ 设为 1
Create Endurance Group 操作 ✅ 必须支持
Delete Endurance Group 操作 ✅ 可选
Create NVM Set 操作(如果支持 NVM Set) ✅ 必须支持
Delete NVM Set 操作(如果支持 NVM Set) ✅ 可选
Media Unit Status 日志页 ❓ 可选(不是强制)

📋 注意事项:

  • 创建 NVM Set 时必须使用一个存在的 Endurance Group。
  • Endurance Group 和 NVM Set 的容量来源是控制器报告的:
  • Total Endurance Group Capacity
  • Unallocated Endurance Group Capacity (见 Endurance Group Info 日志页)

🔄 创建流程(动态):

  1. 控制器报告可用容量信息
  2. 主机发出 Create Endurance Group 或 Create NVM Set 命令
  3. 控制器动态从未分配容量中分配资源
  4. 更新 Endurance Group 或 NVM Set List

删除流程参见前页,第 349 页内容:是顺序操作,非原子。


🧠 小结对比

比较维度 固定容量管理 可变容量管理
是否支持动态增删 ❌ 不支持 ✅ 支持
使用场景 嵌入式、预设场景 云存储、资源池弹性管理
Media Unit 视图 必须支持 可选
是否强制支持 NVM Set 可选 可选,但支持后有更多操作要求
配置方式 从固定配置列表中选择 自主按容量动态分配

如果你想了解下一部分(如 Capacity Management 命令结构,或 Capacity 配置实例的详细流程),我可以继续为你中文详细讲解。需要继续吗?📘