Zoned Namespace_NVMe Spec对标Open-Channel的解决方案(下篇)

作者简介

刘孝冬,资深工程师 

背景

目前在业界广泛使用的NVMe 协议,它的Spec1.3已经推出近两年了。Zoned Namespace作为一个新的特性会逐步被NVMe工作组接纳,并在未来的NVMe Spec 版本中支持。

Zoned Namespace中的zone名称,源自于为SMR硬盘(Shingled Magnetic Recording, 叠瓦式磁记录)所做的设计。相关标准化组织曾制定了ZBC(Zoned Block Commands,分区块命令集)与ZAC(Zoned-device ATA Commands, 区设备ATA指令集),来对SCSI和ATA协议进行拓展。所以zone所涉及的状态转换与软件栈,都与之前的SMR硬盘相符。

Zone状态转换

zone可能处于一下几种状态,它们的转换关系如图1所示:

  • Emptyzone内无有效数据

  • Explicitly Openedzone被Management命令显式的打开

  • Implicitly Openedzone处在打开状态,但并非是由Management命令打开的

  • Closedzone被Management命令显式的关闭

  • Fullzone处于写满状态

  • Offlinezone无法被读写

640?wx_fmt=png

Figure 1   Zone State Transition

一个zone只有在Open状态下才可以写入数据;擦除可以使写满的zone回退到Empty状态;在zone的内部Nand介质达到磨损极限后处于Offline状态。它的正常工作状态变化过程为:

Empty → Open → Full → Empty

ZM(Zone Management,zone管理)command 有ZM Open, ZM Close, ZM Reset, ZM Finish等,可以控制zone的状态变化。例如,在正常工作过程中,zone的状态变化需要ZM命令的参与:

Empty → <ZM Open> → Explicitly Opened → <Append Write Operations>/<ZM finish> → Full → <ZM Reset> → Empty

Zone 在Linux kernel里的软件生态

业界也早已为SMR硬盘的推广,添加了很多软件生态。如图2所示, 例如在Linux体系中, 有用户态函数库libzbc;文件系统中加入针对SMR的优化;SCSI/ATA驱动增加对SMR相关指令集的支持。

Linux内核中块设备有对zone支持的zoned block device模型,通用设备映射器(Device Mapper)中加入的dm-zoned device mapper, 可以将一个zoned block device映射为不受追加写限制的通用块设备。开启此类映射需要用到两个工具命令,一个是Device Mapper的工具dmsetup,另一个是zoned block device 专用工具dmzadm (dm-zoned admin).

640?wx_fmt=png

Figure 2   Zone software stack in LinuxKernel

假设主机上插有一个SATA SMR硬盘,它在linux 内核中是一个zoned block device, 设备抽象文件位置在/dev/sdb,期望将它作为标准块设备使用。则这个映射过程,需要先用dmzadm格式化zoned block device:

dmzadm –format /dev/sdb

这个格式化过程包括获取设备zone的配置信息,决定元数据集在zoned block device上的存放位置,并初始化相关元数据。之后,就可以用dmsetup命令在此zoned block device上创建出一个通用块设备:

dmsetup create dmz-sdb

命令执行完毕后,相应的通用块设备会出现为/dev/mapper/dmz-sdb。如果一个NVMe SSD的一个Namespace是Zoned Namespace, 若主机仅仅期望像通用块设备一样来使用它,则整个命令过程同SATA SMR盘一样,仅仅是将参数/dev/sdb改为/dev/nvmeXnY.

文件系统诸如F2FS、BTRFS中已经有了对zoned block device的直接支持,所以它们可以直接操作zoned block device,绕过DM-zoned。如果一个NVMe SSD的一个Namespace是Zoned Namespace时,F2FS和BTRFS可以直接配置使用它,而无需额外的开发工作。

Zoned Namespace尽可能的去贴近SMR引出的zone定义,在通用应用和定制化应用上,都能够重用SMR已经建立好的软件生态,利于推广。

SPDK对Zoned Namespace的支持

SPDK未来对Zoned Namespace的支持,主要涉及Bdev Layer和FTL两个方面:

SPDK Bdev Layer的扩充

为了增加对Zoned Namespace的适配,SPDK未来会在Bdev接口层修改或加入多个针对Zoned Namespace的API, 例如:

  • Spdk_bdev_get_zonedev_info

  • Spdk_bdev_get_zone_info

  • Spdk_bdev_zone_open/close/finish

  • Spdk_bdev_zone_append

  • 优化Spdk_bdev_open,加入AER事件回调函数,增强对NVMe AER的支持。类似于Open-Channel,Zoned Namespace同样需要通过AER来让上层软件得知一些NAND介质及Firmware的变化,如某个zone状态的异常变化,namespace里某个属性被更改等。

SPDK FTL体系的应变

在SPDK 19.01 Release中,成功加入了FTL library。通过FTL library及它在Bdev的适配,符合Open-Channel Spec 2.0的SSD可以运行到SPDK bdev框架里面。未来需要通用块层功能的应用,若要运行在Zoned Namespace上,同样需要一个FTL, 来操作仅支持追加写的zone。

为Zoned Namespace 重新编写另外一个FTL,这并不是一个明智的决定,因为两份FTL定会有诸多冗余代码,而且后期的维护代价也较高。SPDK会新添加一个zonedev layer,它为FTL提供所有所需的操作集,从而屏蔽底层Open-Channel, Zoned Namespace, 以及其他各类第三方的非标准Spec的差异。考虑到Zoned Namespace将会被NVMe Spec接纳,zonedev layer 会以Zoned Namespace的定义为标准。Open-Channel设备则需再加入一个OC/Zonedev adapter去将Open-Channel的操作封装适配到zonedev layer中。

640?wx_fmt=png

Figure 3   SPDK FTL体系的层次

结语

新环境催生出的新需求,催促着存储软件和设备的向前发展。发展路上的百家争鸣,体现着行业的欣欣向荣。每有一方发声,就会有一个新车轮被造出世;今日是靓在台前的新轮子,明日也许就是被丢弃在角落的废轮子。从Open-Channel 1.2到Open-Channel 2.0,再到Zoned Namespace, 主机能够掌控SSD盘上的功能越来越少。Open-Channel的灵活性,Zoned Namespace不能覆盖到所有。所以对某些特定场景和需求,Open-Channel依然是不可替代的。但依然期待Zoned Namespace能作为满足多数应用对QOS及Latency需求的基础,成为合力共造的一个耐用车轮。

640?wx_fmt=jpeg

 推荐阅读 

640?wx_fmt=jpeg

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NVMe 1.4 PDF是指NVMe(Non-Volatile Memory Express)1.4技术规范的PDF版本。NVMe是一种用于固态硬盘驱动器(SSD)和其他非易失性存储设备的专有通信协议。 NVMe 1.4是一项新的技术规范,旨在改进存储设备的性能和功能。它包含了许多新的功能和改进,使得存储设备能够更好地应对现代数据中心和企业存储需求。 NVMe 1.4 PDF提供了这个技术规范的完整文档,其中包含了所有关于NVMe 1.4协议的详细信息。这个文档可以帮助硬件制造商、软件开发人员和系统管理员更好地了解和实现NVMe 1.4协议。 在NVMe 1.4 PDF中,你可以找到关于NVMe命名空间(Namespace)管理、队列管理、错误处理、安全和认证、电源管理等方面的细节。它还提供了关于控制命令、队列命令和传输命令等方面的详细说明。 NVMe 1.4 PDF还提供了一些在NVMe技术中使用的高级功能的详细信息,如多队列、SR-IOV(Single Root I/O Virtualization)和NVMe over Fabrics等。 总之,NVMe 1.4 PDF是一份关于NVMe 1.4技术规范的完整文档,其详细描述了这一新的存储设备通信协议的各个方面。这个文档对于存储行业的专业人士来说是非常有价值的参考资料。 ### 回答2: NVMe 1.4 PDF(英特尔非易失性内存快速存储扩展接口1.4的PDF文档)是关于NVMe 1.4准的详细说明文件。它是为了帮助开发者、厂商和用户更好地理解和实现NVMe 1.4接口而创建的。 NVMe是一种快速、低延迟的存储协议,用于连接非易失性存储设备,如固态硬盘(SSD)。而NVMe 1.4则是该协议的最新版本,相比以往版本有了一些重要的改进。 NVMe 1.4 PDF文档提供了关于NVMe 1.4协议的全面解释和描述。它详细介绍了NVMe的架构、命令和特性,以及与之前版本的区别。此外,它还包含了一些示例代码和配置指南,以帮助开发者更好地理解和使用NVMe 1.4接口。 NVMe 1.4 PDF文档的内容对于存储设备制造商和开发者来说非常有用。它们可以通过研究该文档,了解NVMe 1.4接口的工作原理和要求,并相应地设计和实施自己的产品。此外,用户也可以通过阅读该文档,了解他们所使用和购买的存储设备是否符合NVMe 1.4准,并了解其性能和兼容性。 总而言之,NVMe 1.4 PDF是一份重要的文档,它提供了关于NVMe 1.4协议的详细说明和指导。无论对于存储设备制造商、开发者还是用户来说,了解NVMe 1.4准都是非常有益的。 ### 回答3: NVMe(Non-Volatile Memory Express)是一种用于固态硬盘(SSD)的接口协议。NVMe 1.4是NVMe协议的最新版本,于2019年发布。 NVMe 1.4引入了一些新功能和改进,旨在提升SSD的性能和功能。其中,最显著的改进是引入了Zoned Namespaces(ZNs)和多队列(Multi-Queue)功能。 ZNs允许SSD将存储空间分为逻辑区域,这样可以更好地管理和优化数据的存储和访问。这有助于提升SSD的写入性能和耐用性,尤其在需要大量连续写入数据的应用场景下。 多队列功能则可以提高多核处理器系统中的多线程并发访问性能。通过将队列与CPU核心进行分离,可以实现更高效的并发读写操作。这对于服务器和数据中心等高负载环境下的应用非常重要。 此外,NVMe 1.4还提供了更丰富的错误处理和调试功能,使得开发人员可以更容易地查找和解决问题。同时,该协议还支持更多的安全功能,例如硬件加密和信任模型,以保护存储的数据安全。 总之,NVMe 1.4是一项重要的技术进步,将进一步推动SSD的发展并提升存储系统的性能和可靠性。通过引入Zoned Namespaces和多队列等新功能,NVMe 1.4将为各种应用场景提供更高效的存储解决方案,并为数据中心和服务器等高负载环境带来更好的性能和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值