持久内存与安全机制 - 第361页
我们现在继续深入分析 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 操作 | ✅ 必须支持 |
🧠 使用流程:
-
📖 读取配置清单
读取 Supported Capacity Configuration List Log Page,查看所有可选配置(包含各配置下的 Media Unit 分布)。 -
📤 发出配置命令
向控制器发出 Capacity Management 命令,选择其中一个配置(Select Capacity Configuration 操作)。 -
🧩 完成分配
配置成功后,每个 Media Unit 都会明确地被分配给一个 Endurance Group 和一个 NVM Set。 -
🧾 最终效果查看
使用 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 CapacityUnallocated Endurance Group Capacity(见 Endurance Group Info 日志页)
🔄 创建流程(动态):
- 控制器报告可用容量信息
- 主机发出 Create Endurance Group 或 Create NVM Set 命令
- 控制器动态从未分配容量中分配资源
- 更新 Endurance Group 或 NVM Set List
删除流程参见前页,第 349 页内容:是顺序操作,非原子。
🧠 小结对比
| 比较维度 | 固定容量管理 | 可变容量管理 |
|---|---|---|
| 是否支持动态增删 | ❌ 不支持 | ✅ 支持 |
| 使用场景 | 嵌入式、预设场景 | 云存储、资源池弹性管理 |
| Media Unit 视图 | 必须支持 | 可选 |
| 是否强制支持 NVM Set | 可选 | 可选,但支持后有更多操作要求 |
| 配置方式 | 从固定配置列表中选择 | 自主按容量动态分配 |
如果你想了解下一部分(如 Capacity Management 命令结构,或 Capacity 配置实例的详细流程),我可以继续为你中文详细讲解。需要继续吗?📘