NVMe 不同结构层级

部署运行你感兴趣的模型镜像

目录

简介

详细描述

Namespaces

NVM Set

Endurance Groups

Domains

Storage Entities

NVM Subsystem Examples

结语

Reference


简介

关于 NVMe 结构层级,大家可能会看到这么一些词:

• NVM subsystems

• Domains

• Endurance Groups

• NVM Sets

• Namespaces

而这些分别具有怎样的联系呢?

详细描述

Namespaces

设计 Namespace(命名空间)这一层级主要是为了满足存储系统在数据管理、访问控制、性能优化和兼容性等多方面的需求,具体原因如下:

  1. 实现存储资源的逻辑划分与管理:Namespace 是格式化的非易失性内存,主机可直接访问。通过将存储资源划分为多个命名空间,就像在一个大仓库里划分出不同的小隔间,每个隔间可以存放不同的物品(数据)。这使得存储系统能更灵活地管理和分配存储资源,比如企业可以为不同的业务部门或应用程序分配独立的命名空间,实现数据的隔离和独立管理 ,提高存储资源的利用效率。
  2. 支持多种 I/O 命令集的独立操作:每个命名空间都与唯一的 I/O 命令集相关联。这意味着不同类型的 I/O 操作可以在各自对应的命名空间中进行,相互之间不会干扰。以 NVM 命令集和键值命令集为例,它们可以分别在与之关联的命名空间中独立执行,确保数据的访问和处理方式符合相应的命令集规范,从而提高系统的稳定性和可靠性。
  3. 提供灵活的命名空间属性配置:命名空间具有独立的属性,这些属性可以根据需求进行配置。不同的命名空间可以设置不同的读写权限、容量限制等属性。某些命名空间可以设置为只读,用于存放重要的系统数据,防止误写操作;而对于一些需要频繁读写的应用数据,可以设置合适的缓存策略和读写性能优化属性,以满足应用的性能需求。
  4. 方便主机进行数据访问和管理:主机通过命名空间 ID(NSID)来访问命名空间,这种方式简单且高效。NSID 在命名空间的管理中起着关键作用,它就像房间的钥匙,主机可以利用它快速准确地找到对应的命名空间。通过 Identify 命令,主机能够获取与命名空间相关的各种信息,如命名空间的状态、容量、关联的 NVM Set 等,便于对数据进行管理和操作。
  5. 支持多路径 I/O 和命名空间共享:在多控制器的 NVM 子系统中,命名空间可以支持多路径 I/O 和共享功能。这对于提高系统的可用性和性能非常重要,就像多条道路都可以通向同一个目的地,当一条路径出现故障时,其他路径仍然可以保证数据的访问。多个主机可以通过不同的控制器同时访问共享命名空间,实现数据的共享和协同处理 ,满足企业级应用中多用户、多设备对共享数据的访问需求。
  6. 配合其他层级实现存储系统的层次化管理:Namespace 是 NVM 存储模型的重要组成部分,与 NVM Set、Endurance Group、Domain 等层级相互配合,形成了一个完整的存储层次结构。每个命名空间完全包含在一个 NVM Set 中,NVM Set 又与 Endurance Group 相关联,最终由 Domain 进行统一管理。这种层次化的管理结构使得存储系统的管理更加清晰和有序,有助于提高系统的整体性能和可扩展性。

NVM Set

NVM Set(非易失性内存集)这一层级的设计,是为了满足存储系统在资源管理、性能优化、数据隔离等多方面的需求。

  1. 优化资源管理与分配:NVM Set 是 NVM 的集合,它在逻辑和物理上与其他 NVM Set 相互独立。这种独立性使得存储系统可以将 NVM 资源进行更细致的划分和管理。一个 NVM Set 可以包含一个或多个命名空间,主机可以通过创建、删除命名空间等操作,灵活地分配 NVM Set 中的存储资源,提高资源利用率 。例如,企业可以根据不同业务对存储的需求,将 NVM 资源分配到不同的 NVM Set 中,再在每个 NVM Set 内创建相应的命名空间,实现存储资源的精准分配。
  2. 支持命名空间属性继承:在 NVM Set 内创建的命名空间会继承其属性,如最佳写入大小等。这保证了在同一 NVM Set 下的命名空间具有相似的性能特征,方便进行统一的管理和优化。当对 NVM Set 进行性能调优时,其包含的命名空间会自动受益,减少了单独配置每个命名空间属性的复杂性。如果调整了 NVM Set 的最佳写入大小,该 NVM Set 内的所有命名空间都将采用新的最佳写入大小,无需逐个对命名空间进行设置。
  3. 关联耐力组实现耐久性管理:每个 NVM Set 都与一个耐力组(Endurance Group)相关联,这对于管理 NVM 的耐久性至关重要。通过将 NVM Set 与耐力组关联,系统可以对 NVM 的耐久性进行统一监控和管理。如果两个或更多 NVM Set 具有相同的耐力组标识符,那么它们的耐力将由 NVM 子系统统一管理;若只有一个 NVM Set 与特定的耐力组标识符相关联,则该 NVM Set 的耐力将在本地进行管理。这种管理方式有助于确保存储系统中 NVM 的耐久性,提高数据存储的可靠性。在大规模存储系统中,多个 NVM Set 可能属于同一耐力组,系统可以统一对这些 NVM Set 进行耐久性监测和维护,及时发现并处理潜在的耐久性问题。
  4. 配合特定管理命令操作:NVM Set 与一系列管理命令紧密配合,如 Identify、Capacity Management、Namespace Management 等命令。在 Identify 命令中,NVM Set List 数据结构包含每个 NVM Set 的属性,主机可借此获取 NVM Set 的详细信息;Capacity Management 命令中的 Create NVM Set 和 Delete NVM Set 操作,以及 Namespace Management 命令在创建命名空间时指定 NVM Set 标识符,都依赖于 NVM Set 这一层级进行精准操作,使管理命令能够更高效地对存储资源进行操作和管理。在创建命名空间时,通过指定 NVM Set 标识符,系统可以明确该命名空间将创建于哪个 NVM Set 中,确保命名空间与 NVM Set 的正确关联。
  5. 提高系统稳定性和兼容性:NVM Set 的设计有助于提高系统的稳定性和兼容性。在多控制器的 NVM 子系统中,所有控制器对 NVM Set 的支持遵循统一的规范,如在 Identify Controller 数据结构中表明对 NVM Set 的支持、在相关命令和数据结构中正确处理 NVM Set 标识符等。这使得不同的控制器能够在一个统一的框架下协同工作,减少因兼容性问题导致的系统故障,提高整个存储系统的稳定性和可靠性

Endurance Groups

Endurance Groups(持久化组)是为了更高效地管理 NVM(非易失性内存)的耐久性,确保存储系统的稳定性和数据的可靠性

  1. 统一管理 NVM 耐久性:在 NVM 子系统中,不同的 NVM 部件其耐久性可能存在差异。通过将部分 NVM 划分为一个 Endurance Group,可将这部分 NVM 的耐久性作为一个整体进行管理。比如在一个存储设备中,多个 NVM 芯片可能由于制造工艺或使用情况,其磨损程度和寿命有所不同,将它们归为一个 Endurance Group,就能统一监控和管理这些 NVM 的耐久性 ,及时发现并处理潜在的问题,保障数据存储的稳定性。
  2. 灵活支持不同管理范围:Endurance Groups 支持两种管理范围模式。当两个或更多 NVM Sets 具有相同的 Endurance Group Identifier 时,NVM 子系统会对这些 NVM Sets 进行统一的耐久性管理,适用于需要整体把控耐久性的场景;若只有一个 NVM Set 与特定的 Endurance Group Identifier 相关联,那么该 NVM Set 的耐久性将在本地进行管理,这种灵活性可以满足不同的存储需求和性能优化要求 。例如,对于一些对耐久性要求较高的关键数据存储,可以采用统一管理模式;而对于一些独立的、对性能要求更高的存储场景,可采用本地管理模式。
  3. 明确数据存储层次关系:Endurance Group 在 NVM 存储层次结构中处于特定位置,每个 NVM Set 都与一个 Endurance Group 相关联,且一个 Endurance Group 可以包含多个 NVM Set。这种层级关系明确了数据存储的架构,使得系统在管理和操作时更加清晰和有序。同时,每个 Endurance Group 由存储介质(Media Units)组成,进一步细化了存储管理的粒度,有助于提高存储资源的利用效率。
  4. 提供相关信息和配置功能:Endurance Group 有与之对应的信息记录和配置功能。通过 Endurance Group Information log page(持久化组信息日志页),可以获取关于 Endurance Group 的详细信息,如当前的健康状态、使用情况等。主机还能通过配置相关功能,如设置异步事件触发条件,当 Endurance Group 发生特定事件时,及时通知主机进行相应处理,从而更好地管理和维护存储系统 。例如,当检测到 Endurance Group 中的某个 NVM 部件出现磨损接近阈值的情况时,主机可以提前采取数据迁移等措施,避免数据丢失。

Domains

Domain(域)这一层级的设计具有多方面的重要意义,主要体现在系统管理、资源共享、故障隔离以及支持特定功能等方面。

  1. 实现资源共享与统一管理:域是共享状态(如电源状态、容量信息)的最小不可分割单元,一个 NVM 子系统可由单个域或多个域组成 。在系统运行过程中,域内的控制器和 NVM Endurance Groups 等资源能够共享这些状态信息,便于进行统一的管理和调度。这使得系统在资源分配和状态监控上更加高效,避免了资源的重复管理和不一致性。
  2. 明确故障和管理边界:每个域相互独立,域之间的边界既是通信边界,也是故障边界和管理边界。当某个域出现故障或进行管理操作时,这种独立性可以有效防止故障的扩散,避免对其他域的正常运行产生影响。在一个包含多个域的 NVM 子系统中,某个域的硬件故障不会导致其他域的数据丢失或服务中断,保障了整个系统的稳定性和可靠性。
  3. 支持多域协同工作:在多域 NVM 子系统中,各个域能够协同工作,共同完成系统的整体功能。多个域可以相互配合,实现更复杂的存储任务和更高的性能要求。不同域中的控制器可以根据各自的资源情况和负载,合理分配任务,提高系统的整体效率。
  4. 支持特定功能:支持多个域的 NVM 子系统必须支持非对称命名空间访问报告(Asymmetric Namespace Access Reporting),这为系统提供了更灵活的命名空间访问方式和更精细的管理能力 。通过域的划分,系统可以针对不同的命名空间设置不同的访问权限和性能策略,满足多样化的应用需求。
  5. 方便系统扩展和配置:域的存在使得 NVM 子系统的扩展和配置更加灵活。在系统扩展时,可以通过添加新的域来增加存储资源和功能,而不会对现有域的正常运行造成影响。用户

Storage Entities

NVM Subsystem Examples

结语

虽然关于 NVMe 结构层级有这么多层,但无论是开发者还是用户,最常接触的主要还是 Namespace。

Reference

NVM Express® Base Specification, Revision 2.0e

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值