全闪存存储时代 NVMe到底是什么?

在最近几年,介质发展突飞猛进,容量和性能都在持续快速提升,各大介质厂商都推出了高性能的NVMe SSD,几乎全球所有的存储大厂都在大力研发基于NVMe的新一代存储产品,一时间NVMe成了存储行业最热门的词汇。

NVMe为闪存而生

NVMe是什么?它的全称为Non-Volatile Memory Express,是一种基于非易失性存储器的传输规范,NVMe规范由包含100多家公司在内的工作小组所制定。认识了NVMe之后,我们看看它到底有什么优势,一个字总结,那就是“快”。形象的来说,NVMe的出现解决了SSD“肚子大”,“有货”,却“吐得不够快”的问题。

对于闪存的普及,标准协议接口是非常重要的一环。NVMe规范提供了闪存访问的标准方式,充分利用PCIe通道的低延时和并行性,以及当代处理器、平台与应用的并行性,通过降低协议交互时延,增加协议并发能力,显著提高性能,在可控制的存储成本下,极大的提升固态硬盘的读写性能,从而进一步释放闪存的潜能,并推动全闪存在数据中心的普及。

传统的SAS协议是为机械硬盘设计,随着闪存介质的高速发展,以及全闪存存储系统对极致性能的追求,SAS协议劣势越发明显,成为全闪存系统发展的短板。相比于SAS-HDD,SSD单盘的吞吐量、IOPS都有大幅的提升,时延降低到100μs 的水平。SSD能力提升了,传输协议却成为了短板,怎么办?NVM Express组织由此制定了NVMe协议标准,去掉了SAS-HDD系统中的IO Scheduler和SCSI等复杂的协议层,换成轻量级的NVMe协议。

全闪存存储时代 NVMe到底是什么?

NVMe协议栈图

NVMe相比SAS的效率有很大的提升,NVMe所需的每次IO的CPU周期少于SAS的一半;在相同的CPU周期下,NVMe提供的IOPS是SAS的2倍。和NVMe相比,SAS的劣势已非常明显:

1.SAS协议交互次数多,需要在PCIe和SAS之间做协议转换,SAS/SCSI体系协议栈复杂,软件处理协议开销大,难以达到更高的IOPS。NVMe盘直接出PCIe接口,协议交互简单,可以获得更好的性能。

2.SAS协议是单队列,而NVMe支持多达64K个队列,每个队列支持最多64K个命令并发。NVMe多队列可以实现更高的并发处理,与SSD盘的多通道,多个片选,多个Die形成更好的配合,提供更好的性能。SAS 单队列在多核环境编程必须加锁保护,而NVMe原生支持多队列免锁机制,可以更好发挥多核的并发优势,降低软件开销。

存储协议向更高效的NVMe协议发展毋庸置疑,但是NVMe毕竟是一个比较新的协议,而SAS协议仍然作为一种经过多年实践应用的成熟存储协议,相对而言,SAS目前还有一些优势:

1.SAS协议原生支持多端口,双端口盘技术成熟,与多控系统配合稳定可靠,而PCIe双端口技术还在发展完善中。

2.SAS协议对热拔插有完善的支持,IO基于连接的协议机制不会导致故障扩散。而PCIe的热拔插向来是一个技术难点,做到高可靠性需要比较深的技术积累。

3.SAS组网灵活,容易扩展,SAS协议在设计之初就充分考虑组网场景,基于路由交换的协议为扩展性奠定了好的基础。熟悉PCIe协议的人都比较清楚,PCIe的扩展性非常受限,在级联深度和支持设备总数上有很大的局限。

基于SAS SSD的存储系统应用在传统的高性能应用场景,而基于NVMe的存储系统可以应用在对时延要求更苛刻的应用场景。NVMe存储和SAS存储在一段时间内将共同存在,应用于不同的业务场景。

市场预测2017年SSD发货量将超过SAS硬盘,并会持续大幅增长,而SAS硬盘则大幅缩减,PCIe SSD将是SSD发展的主流,NVMe协议适应了SSD的发展。而且随着数据中心和云的发展,各种混合应用场景使得NVMe SSD在数据中心也更有优势。新的SCM介质的发展,比如3D XPoint,应用于高速Cache场景,只有PCIe通道才能适应对性能的极致需求,也推动NVMe协议的进一步应用和发展。NVMe除了应用在本地PCIe SSD,标准组织在2016年6月发布NVMe over Fabrics规范,在RDMA/FC等传输协议上承载NVMe协议,为远程访问SSD提供高性能解决方案,解决本地SSD资源共享问题。

NVMe给存储系统带来哪些挑战?

NVMe是一个全新的协议,基于PCIe技术,在带来极致性能的同时,也给盘片和系统的设计带来了新的挑战。

NVMe SSD作为硬盘的一种,必须要支持快速在线更换,而传统的PCIe对热拔插支持易用性不好,特别是暴力热拔插(PCIe surprise hot plug),因此很容易导致系统异常,业务中断。同时,在企业存储中,高可靠性必须采用双控冗余技术,基于PCIe的双端口技术是SSD设计面临的一个难题,目前有些厂家的SSD不是原生双PCIe端口,比如Intel目前的部分NVMe SSD就是通过内部PCIe Switch实现的PCIe双端口,走这样的技术捷径必然导致系统可靠性的降低。

NVMe存储系统面临的另外一个挑战是系统级的优化。有人认为NVMe系统只是简单更换成NVMe SSD盘,就可以得到很大系统级性能优势,其实没那么简单,需要重新设计系统IO架构,适应多核并发处理流程,这样才能充分发挥出NVMe的优势。

支撑NVMe闪存,华为在闪存技术的厚积薄发

从2005年开始闪存技术的研究,华为在闪存领域拥有12年的持续积累,凭借多年的技术积累已拥有大量闪存核心专利,是存储行业内拥有SSD盘片级专利最多厂家之一,目前华为是业内唯一具备存储操作系统、控制器、SSD盘全自研的厂商,并针对闪存进行端到端的深度优化,基于华为全面的产品和解决方案、开放的生态,客户可以轻松的享受闪存技术革新带来的业务处理能力。

华为自研SSD支持双端口技术,两个PCIe 3.0X2端口独立,互相不影响,为系统修复和异常处理提供了硬件基础,保证了系统双控冗余性,提升系统的可靠性。

众所周知,PCIe的异常处理非常复杂,尤其是很难保证暴力热拔插时的系统可靠性。华为存储在PCIe积累多年,具备完善的PCIe链路管理、PCIe异常处理技术、PCIe热拔插技术,并提供端到端的PCIe系统可靠性,保证单盘更换或是发生故障时不扩散,保障系统可靠性。

全闪存存储时代 NVMe到底是什么?

NVMe SSD拔出示意图

如上图所示,NVMe SSD热拔插会导致PCIe进入异常流程,华为OceanStor Dorado V3支持SSD盘在任何时间,以任何方式拔出,实现了业界领先的NVMe系统产品化。并对PCIe驱动做了如下的特殊设计:

?标准处理流程中,只要业务端I/O不停止,AER(Advanced Error Reporting)错误会一直上报,有可能会产生AER错误风暴,导致软件处理流程变得复杂和不及时。华为在PCIe驱动处理流程中会关闭AER,并及时停止I/O,避免错误风暴的产生。

?如果拔盘动作不够干脆,反复重新建链,进而导致反压错误产生。华为在PCIe驱动处理流程可以快速将链路断开,避免错误发生。

?当暴力拔盘,不只是产生Surprise Down错误的时候,DPC(Downstream Port Containment)可以由其他致命错误触发,相比标准处理流程,可以更快断开链路,上层报文可以尽快返回。

?在慢拔盘场景中,通过快速断链技术保证系统稳定。

华为把在存储和硬盘上的多年积累经验继续应用在NVMe系统中,提供完善的介质健康监控和寿命预测,以及软硬件故障监控、修复和隔离措施,为NVMe保驾护航。独有的P3管脚上下电修复功能设计,为硬盘的异常修复提供彻底的解决方案,修复大部分SSD软失效故障,降低故障率。

NVMe的高性能需要系统级优化,华为针对NVMe设计了一套IO调度机制,彻底取消原来IO路径上的盘级互斥锁,避免IO下发时队列锁冲突,大幅提高后端处理性能。IO调度示意图如下,多个线程会和多队列配合实现最佳性能。

全闪存存储时代 NVMe到底是什么?

NVMe系统IO调度示意图

华为全面迎接NVMe全闪存时代

全闪存时代正在来临,华为OceanStor Dorado V3全闪存存储系统面向企业重载关键应用,具备高达400万IOPS时,仍保持0.5ms稳定时延的卓越性能,在保障系统可靠性的同时,加速企业核心业务。OceanStor Dorado5000 V3基于NVMe协议,新设计的硬件架构支持双端口NVMe SSD,以及硬盘暴力拔插更换,全新的并行软件架构能充分发挥NVMe的高性能优势。

全闪存存储时代 NVMe到底是什么?

华为OceanStor Dorado5000 V3

华为将全面迎接NVMe全闪存时代,在基于NVMe的存储系统上持续研发,引入新的SCM介质进一步提升系统性能,凭借NVMe over Fabrics实现SSD资源全共享,同时提供前端NVMe接口,优化系统硬件和软件架构,打造更具竞争力的全闪存存储。


原文发布时间为:2017年6月1日

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

上一篇:线上分享干货 | Deep-ReID: 关于行人重识别的深度学习方法


下一篇:基于深度学习的商品检索技术