Namespace

本文详细介绍了NVMeSSD中的namespace概念,包括其组成、作用、逻辑地址空间划分以及NVMe命令中的NS域。重点讨论了SR-IOV在虚拟化环境中的应用,以及多控制器和双PCIe接口对性能和可靠性的影响,强调了NVMeSSD在企业级应用中的灵活配置和高可靠性需求。
摘要由CSDN通过智能技术生成

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

1.什么是namespace(NS)?

一个NVMe SSD主要由SSD控制器、闪存空间和PCIe接口组成。如果把闪存空间划分若干个独立的逻辑空间,每个逻辑空间中逻辑块的地址(LBA)范围是0~N-1(N是逻辑空间大小),这样划分出来的每一个逻辑空间称为NS。对于SATA SSD,一个闪存空间只对应一个逻辑空间,NVMe SSD可以是一个闪存空间对应多个逻辑空间。

每个NS都有一个名称与ID,ID是独一无二的,系统就是通过NS的ID来区分不同NS的。

如下图将整个闪存空间划分两个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根本不知道去个逻辑空间读写。

2.NVME命令中的NS域

1)一个NVMe命令一共64B,其中Byte[7:4]指定了要访问的NS。

2)对于每个NS来说,都有一个4KB大小的数据结构来描述它。该数据结构描述该NS的大小,整个空间已经写了多少,每个LBA的大小,端到端数据保护相关设置,以及该NS是属于某个控制器还是几个控制器共享等。

3)NS由主机创建和管理,从主机操作系统角度来看,每个NS就是一个独立的磁盘,用户可以在灭个NS做分区等操作,比如整个闪存空间划分两个NS,NS A 和NS B,操作系统就看到两个独立的磁盘

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

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

3.NS的一个重要使用场景--SR-IOV

SR-IOV

1)SR-IOV,全称为Single Root-IO Virtualization,单独根I/O虚拟化

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

3)单个I/O资源(单个SSD)可由许多虚拟机共享,共享的设备将提供专用的资源,并且使用的是共享的通用资源。这样每个虚拟机都可访问唯一的资源。

说明

a)该SSD作为一个PCIe的一种终端,是实现了一个物理功能(Physical Function,PF),有4个虚拟功能(Virtual Function,VF)关联该PF。

b)每个VF都有自己的独享的NS,还有公共的NS(NS E)。

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

4.多个控制器

一个NVMe子系统除了包含若干个NS,还可以有若干个SSD控制器。这里不是说一个SSD控制器有多个CPU,而是说一个SSD有几个实现了NVMe功能的控制器。

图说明:

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

2)整个闪存空间划分为3个NS,NS A由控制器0独享;NS C由控制器1独享,NS B由两个控制器共享;独享即只有与之关联的控制器才能访问该NS,其他控制器不能对其访问;

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

5.多个PCIe接口

事实上,一个NVMe子系统,除了可以有若干个NS、若干个控制器,还可以有若干个PCIe接口。

Dual port(双端口)在SATA SSD上是没有的。这两个接口往上可以连接同一个主机,也可以是不同的主机。现在能提供Dual port的SSD接口只有SFF-8639,也叫U.2接口,它支持标准的NVMe协议和Dual-Port。

如下图:每个控制器都有自己的PCIe接口,而不是共享一个

双端口子系统连接主机

说明

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

2)对NS B来说,同一时刻只能被一个控制器访问,是否支持双管齐下就没有意义了

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

4)这种双端口冗余设计可以提升系统的可靠性,如PCIe A接口出现问题,主机可以通过PCIe B无缝连接,继续对NS B访问,但NS A是无法访问了

双端口双主机系统

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

物理上SSD有两个PCIe接口,但可以通过不同的固件实现单端口和双端口功能。

每个接口可以连接独立的主机,主机端有两个独立的数据通道,通过它们可对闪存空间进行访问。如果其中一个数据通道发生故障,支持Dual port产品的主机热交换(Hot-swap)可以让另一个主机无缝低延时接管任务。有些应用,比如银行金融系统、在线交易处理(Online Transaction Processing,OLTP)、在线分析处理(Online Analytical Processing,OLAP)、高性能计算(HPC)、大数据等,对系统可靠性和实时性要求非常高。这个时候,带有双端口的SSD就能派上用场了。

带有双端口的SSD主要面向企业级用户,对普通用户来说,没有必要使用。多NS,多控制器,多PCIe接口,给NVMe SSD开发者及存储架构师代理很大的发挥空间,给不同的NS配置不同的数据保护机制,或采用虚拟化技术,或使用冗余容错机制(提高系统可靠性),或采用其他的设计。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值