NVME-Namespace

NVME-Namespace

参考资料:《深入浅出SSD》 , NVME协议1.3

Namespace

概念

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

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

 

注意

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

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

 

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

以下图为例

NVME-Namespace_第1张图片

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可以由多个虚拟机共享,共享的设备提供专用的资源,并且还使用共享的通用资源,以下图为例

NVME-Namespace_第2张图片

 

 

说明

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

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

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

 

多个控制器

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

NVME-Namespace_第3张图片

 

 

说明

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

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

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

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

 

多个PCIE接口

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

NVME-Namespace_第4张图片

 

 

说明

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

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

 

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

NVME-Namespace_第5张图片

 

 NVME-Namespace_第6张图片

 

 说明

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

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

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

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

 

3.双端口双主机系统

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

NVME-Namespace_第7张图片

 

你可能感兴趣的:(NVME-Namespace)