NVME-Namespace

NVMe Namespace是NVMe SSD中的一种逻辑组织方式,允许多个独立的逻辑空间在同一块SSD上存在。每个Namespace有唯一的ID,用于区分不同的存储区域。Namespace在企业级应用中尤为重要,因为它支持根据需求创建不同特性的存储空间,如在虚拟化环境中通过SR-IOV技术实现高效资源共享。此外,NVMe命令中的NS域指定访问的Namespace,每个Namespace可以有不同的设置,如端到端数据保护。双控制器和多PCIE接口的NVMe系统则提供了更高的性能和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Namespace

1.概念

NVME SSD主要由SSD控制器,闪存空间和PCIE接口组成,如果把闪存空间划分成若干个独立的逻辑空间,

每个空间逻辑块的地址范围为0到N-1(N是逻辑空间大小),这样划分的每个逻辑空间叫做Namespace。

2.注意

对SATA SSD来说,一个闪存空间只对应一个逻辑空间,对NVME SSD来说,一个闪存空间可以对应若干个逻辑空间

每个Namespace都有一个名称和ID,系统是通过NS的ID来区分不同的NS.

3.案例,将闪存空间划分为两个NS

以下图为例

1)把整个闪存空间划分成两个NS,NS A和NS B,其对应的NS ID分别为1和2.

2)如果NS A的大小是M,NS的大小是N(以逻辑块大小为单位),那么 它们的逻辑地址空间分别为0到M-1和0到N-1

3)主机读写SSD时,首先要指定读写的NS,否则对于LBA为0,有两个逻辑空间都有LBA 0,SSD根本不知道去个逻辑空间读写

NVME命令中的NS域

1.一个NVME命令有64字节,其中Byte[7:4]指定了要访问的NS

2.对每个NS来说,都有一个4KB大小的数据结构来描述它(NS的大小,整个空间已经写了多少,每个LBA的大小,端到端数据保护相关设置,

  该NS属于某个控制器还是几个控制器共享等)

3.NS由Host创建和管理,从主机操作系统的角度来看,每个NS就是一个独立的磁盘,用户可以在每个NS做分区等操作,比如

  将整个空间划分为两个NS, NS A和NS B,操作系统看到两个完全独立的磁盘

4.每个NS都是独立的,逻辑块大小可以不同,端到端数据保护配置也可以不同,你可以让一个NS使用保镖,另一个NS不使用报表,第三个NS半程使用保镖

5.NS更多是应用在企业级,可以根据客户不同的需求创建不同特征的NS,即在一个SSD上创建若干个不同功能特征的NS(磁盘)供不同客户使用

NS的一个重要使用场合

SR_IOV

1)SR-IOV,全称为Single Root-IO Virtualization

2)SR-IOV技术允许在虚拟机之间高效共享PCIE设备,并且它是在硬件中实现的,可获得与本机性能相媲美的IO性能

3)单个SSD可以由多个虚拟机共享,共享的设备提供专用的资源,并且还使用共享的通用资源,以下图为例

说明

1)该SSD作为PCIE的一个Endpoint,实现了一个物理功能,有4个虚拟功能关联该物理功能

2)每个虚拟功能都有自己独享的NS,还有共享的NS E

3)此功能使得虚拟功能可以共享物理设备,并在没有CPU和虚拟机管理程序软件开销的情况下执行IO

多个控制器

对于一个NVME子系统,可以有若干个控制器,即一个SSD有几个实现了NVME功能的控制器,如下图

说明

1)一个NVME子系统包含两个控制器,可以分别实现不同的功能

2)整个闪存空间划分为3个NS,NS A由控制器0独享,NS C由控制器1独享,NS B由两个控制器共享

      (独享,即只有与之关联的控制器才能访问该NS,别的控制器不能对其访问;

    共享,即NS B可以被两个控制器共同访问,但是要求每个控制器对该共享NS的访问都是原子操作,以避免同步问题)

多个PCIE接口

1.一个NVME子系统可以有多个PCIE接口,如下图,双控制器双端口NVME系统

说明

1)每一个控制器都有自己的PCIE接口,而不是两者共享一个

2)这两个PCIE接口可能连着同一个主机,也可能连着不同的主机

2.双端口子系统连接主机

 说明

1)主机访问SSD,可以双管齐下,性能可能更好些

2)对访问NS B,同一时刻只能被一个控制器访问

3)可以同时操作NS A 和NS C,性能或多或少会有所提升

4)可以提升系统的可靠性,比如PCIE A接口出现问题,主机可以通过PCIE B无缝衔接,继续对NS B访问,但是NS A

3.双端口双主机系统

一个主机挂了,由另一个主机接管任务,继续执行

转载链接:

NVME-Namespace - 可口可乐嗨 - 博客园NVME-Namespace 参考资料:《深入浅出SSD》 , NVME协议1.3 Namespace 1.概念 NVME SSD主要由SSD控制器,闪存空间和PCIE接口组成,如果把闪存空间划分成若https://www.cnblogs.com/marton/p/12545974.html

### 关于 NVMe-MI 的概述 NVMe-MI (Management Interface) 是一种用于管理 NVMe 存储设备的技术标准,旨在提供统一的方式来管理和监控 NVMe 设备及其子系统。它通过定义标准化接口来简化存储系统的配置、状态监测以及固件更新等功能[^1]。 #### NVMe-MI 的主要功能 NVMe-MI 提供的功能可以分为以下几个方面: - **带外管理 (Out-of-Band Management)**:允许管理员在主机操作系统未运行的情况下访问和控制 NVMe 子系统。 - **带内管理 (In-Band Management)**:利用现有的 PCIe 链路,在主机正常工作时执行管理操作。 - **远程管理能力**:支持通过网络协议实现对远端 NVMe 设备的集中化管理。 这些特性使得 NVMe-MI 成为了数据中心环境中高效运维的重要工具之一[^2]。 #### 使用 NVMe-MI 进行开发或部署 要开始使用 NVMe-MI 技术,通常需要完成以下准备工作: ##### 工具准备 对于开发者来说,`nvme-cli` 是一个非常有用的命令行工具集合,它可以用来测试各种 NVMe 功能,包括 MI 接口的操作。尽管大多数 Linux 发行版已经包含了该软件包版本较旧可能缺少最新特性建议直接从官方 GitHub 仓库获取最新源码编译安装。 以下是基于 `nvme-cli` 查看当前连接的所有控制器列表的一个简单例子: ```bash $ sudo nvme list-subsys Node SN Model Namespace Usage Format FS ---------------- ------------------- ---------------------------------------- ------------ -------------------------- ---------------- -------- /dev/nvme0 S3Z7NY0J100086 Samsung SSD 970 EVO Plus 1TB 1 1000 GB / 1000 GB 512 B + 0 B ``` 如果目标环境涉及更复杂的场景比如大规模服务器集群中的自动化脚本编写,则还需要考虑集成更高层次的应用程序框架或者 SDK 来封装底层交互逻辑从而提升易用性和可维护性。 ##### 协议兼容性检查 确保所使用的硬件平台支持所需类型的 NVMe-MI 实现方式非常重要。例如某些特定型号可能会仅限于某种模式下的功能集因此采购前应仔细查阅厂商文档确认其是否满足项目需求[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值